我正在阅读关于如何在 Ubuntu 上配置 IPv6,我已经读到关于阅读 IPv6 地址的部分,虽然前两个例子对我来说是有意义的,但最后一个例子我有点不明白,因为距离我上一次网络课程已经过去了几年:
如何将第三种形式转换为长形式?
下面是我遇到问题的示例:
- 第三种形式: -2002::10:0.0.1
- 长表: -2002:0000:0000:0000:0000:0000:0a00:0001
- 规范形式:-2002::a00:1
我对十六进制的理解是,当你数到九之后,最终结果不是十,而是 A、B、C、D、E 和 F,然后再增加下一列的数字。
你能用数学而不是一些在线 JavaScript 转换器向我展示这是如何实现的吗?
谢谢你!
答案1
在 IPv4 中,每个字节都用一个数字表示,范围是 0 到 255;而在 IPv6 中,则改用十六进制表示,范围是 00 到 ff。此处进行的转换是将 IPv4 地址的四个字节映射到 IPv6 地址的最后 4 个字节:
IPv4:
aaa.bbb.ccc.ddd
IPv6:
XXXX::AABB:CCDD
因此,输入为10.0.0.1
,字节为0a
,00
,00
,01
;导致:
::0a00:0001
(缩写为::a00:1
)
再举一个例子192.168.50.254
:
::c0a8:32fe
答案2
您可以查看使用 v6decode 转换为不同的格式;尝试将鼠标悬停在地址的不同部分上,看看它们在不同格式之间有何关联。