1.4.1 IPv6地址

1.IPv6地址压缩表示

如果IPv6地址中的4个数字都是零,则零可以被省略。例如,2001:0db8:85a3:0000:1319:8a2e:0370:7344,等价于2001:0db8:85a3::1319:8a2e:0370:7344。遵从该规则,如果因为省略而出现了两个以上的冒号,则可以压缩为一个,但这种零压缩在地址中只能出现一次。因此,

            2001:0db8:0000:0000:0000:0000:142c:57ab

可以表示为:

            2001:0db8:0000:0000:0000::142c:57ab

可以表示为:

            2001:0db8:0:0:0:0:142c:57ab

可以表示为:

            2001:0db8:0::0:142c:57ab

可以表示为:

            2001:0db8::142c:57ab

以上IPv6地址表示均为合法地址,并且它们是等价的。但2001::25de::cade是非法的,因为这样会搞不清楚每个压缩中有几个全零的分组。IPv6地址前导的零可以省略,这样,2001:0db8:02de::0e13等价于2001:db8:2de::e13。

2.IPv4地址转化为IPv6地址

如果IPv6地址实际上是IPv4地址,则IPv6地址后32位可用十进制数表示。例如,ffff:192.168.100.2等价于::ffff:c0a8:6402,但不等价于::192.168.100.2和::c0a8:6402。而ffff:192.168.100.2格式是IPv4映像地址,不建议使用。::192.168.100.2格式表示IPv4一致地址。IPv4地址可以很容易地转化为IPv6地址格式。例如,IPv4的一个地址为202.207.175.6(十六进制数为0xCACFAF06),它可以被转化为0000:0000:0000:0000:0000:0000:CACF:AF06或者::CACF:AF06。同时,还可使用混合符号(IPv4-compatible address),地址为::202.207.175.6。

3.IPv6地址分类及前缀表示

IPv6地址有单播(Unicast Address)、多播(Multicast Address)和任意播(Any cast)等类型。在每种地址中,又有一种或者多种类别地址,如单播有本地链路地址、本地站点地址、可聚合全球地址、回环地址和未指定地址;任意播有本地链路地址、本地站点地址和可聚合全球地址;多播有指定地址和请求节点地址。单播地址标识了一个单独的IPv6接口。一个节点可以具有多个IPv6网络接口,每个接口必须具有一个与之相关的单播地址。

(1)本地链路地址。在一个节点上启用IPv6协议栈,当启动时,节点的每个接口自动配置一个本地链路地址,前缀为FE80::/10。

(2)本地站点地址。本地站点地址与RFC1918所定义的私有IPv4地址空间类似,本地站点地址不能在全球IPv6 Internet上路由,前缀为FEC0::/10。

(3)可聚合全球单播地址。IANA(Internet Assigned Numbers Authority,Internet编号分配机构)分配IPv6寻址空间中的一个IPv6地址前缀作为可聚合全球单播地址。全球可聚合地址前缀为2001::/16,是最常用的IPv6地址。地址前缀为2002::/16,表示IPv6 to IPv4地址,用于IPv6 to IPv4自动构造隧道技术的地址。

(4)IPv4兼容地址。与IPv4兼容的IPv6地址是由过渡机制使用的特殊单播IPv6地址,目的是在主机和路由器上自动创建IPv4隧道,即在IPv4网络上传送IPv6数据包。

(5)回环地址。单播地址0:0:0:0:0:0:0:1称为回环地址,节点用它来向自身发送IPv6包。回环地址前缀为::1/128,不能分配给任何物理接口。回环地址相当于IPv4中的localhost(127.0.0.1),ping localhost可得到该地址。

(6)不确定地址。单播地址0:0:0:0:0:0:0:0称为不确定地址,它不能分配给任何节点。地址前缀为::/128,只能作为尚未获得正式地址的主机源地址,不能作为目的地址,不能分配给真实的网络接口。

(7)多播指定地址。RFC2373在多播范围内为IPv6协议的操作定义和保留了几个IPv6地址,这些保留的地址称为多播指定地址。

(8)请求节点地址。对于节点或路由器的接口上配置的每个单播和任意播地址,都自动启动一个对应的被请求节点地址。被请求节点地址受限于本地链路。