IPv6地址表示
IPv6地址为128位长,但通常写作8组,每组为四个十六进制数的形式。例如:
2001:0db8:85a3:08d3:1319:8a2e:0370:7344是一个合法的IPv6地址。
如果四个数字都是零,可以被省略。例如:
2001:0db8:85a3:0000:1319:8a2e:0370:7344等价于
2001:0db8:85a3::1319:8a2e:0370:7344
遵从这些规则,如果因为省略而出现了两个以上的冒号的话,可以压缩为一个,但这种零压缩在地址中只能出现一次。因此:
2001:0DB8:0000:0000:0000:0000:1428:57ab
2001:0DB8:0000:0000:0000::1428:57ab
2001:0DB8:0:0:0:0:1428:57ab
2001:0DB8:0::0:0:1428:57ab
2001:0DB8::1428:57ab都是合法的地址,并且他们是等价的。但
2001::25de::cade是非法的。(因为这样会使得搞不清楚每个压缩中有几个全零的分组)
同时前导的零可以省略,因此:
2001:0DB8:02de::0e13等价于2001:DB8:2de::e13
一个IPv6地址可以将一个IPv4地址内嵌进去,并且写成IPv6形式和平常习惯的IPv4形式的混合体。IPv6有两种内嵌IPv4的方式:IPv4映像地址和IPv4兼容地址。
IPv4映像地址有如下格式:::ffff:192.168.89.9
这个地址仍然是一个IPv6地址,只是0000:0000:0000:0000:0000:ffff:c0a8:5909的另外一种写法罢了。IPv4映像地址布局如下:
| 80bits |16 | 32bits |
+---------------------------- +--------+------------------------|
0000....................0000 | FFFF | IPv4 address |
+---------------------------- +--------+----------------------- |
IPv4兼容地址写法如下:::192.168.89.9
如同IPv4映像地址,这个地址仍然是一个IPv6地址,只是0000:0000:0000:0000:0000:0000:c0a8:5909的另外一种写法罢了。IPv4兼容地址布局如下:
| 80bits |16 | 32bits |
+---------------------------- +--------+------------------------|
0000....................0000 | 0000 | IPv4 address |
+---------------------------- +--------+----------------------- |
IPv4兼容地址已经被舍弃了,所以今后的设备和程序中可能不会支持这种地址格式。