IPv6地址
IPv6地址的书写格式
IPv6的128位IP地址有以下两种表示形式。
X:X:X:X:X:X:X:X
在这种形式中,128位的IPv6地址被分为8组,每组的16位用4个十六进制字符(0~9,A~F)来表示,组和组之间用冒号(:)隔开。其中每个“X”代表一组十六进制数值。比如下面这个IPv6地址:
2031:0000:130F:0000:0000:09C0:876A:130B
为了书写方便,每组中的前导“0”都可以省略,所以上述地址可写为:
2031:0:130F:0:0:9C0:876A:130B。
另外,地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替,这样可以压缩IPv6地址书写时的长度,所以上述地址又可以进一步简写为:
2031:0:130F::9C0:876A:130B。
在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每段中0的个数。
X:X:X:X:X:X:d.d.d.d
IPv4映射IPv6地址。地址格式为:0:0:0:0:0:FFFF:IPv4-address。该地址用来将IPv4节点的地址表示为IPv6地址。
其中“X”代表高阶的六组数字,用十六进制数来表示每组的16比特。“d”代表低阶的四组数字,用十进制数表示每组的8比特。后边的部分(d.d.d.d)其实就是一个标准的IPv4地址。
IPv6地址的结构
一个IPv6地址可以分为如下两部分:
网络前缀:n比特,相当于IPv4地址中的网络ID
接口标识:128-n比特,相当于IPv4地址中的主机ID
地址2001:A304:6101:1::E0:F726:4E58 /64的构成如图11-1所示。
IPv6的地址分类
IPv6主要有三种地址:
单播地址(Unicast):唯一标识一个接口,类似于IPv4的单播地址。发送到单播地址的数据包将被传输到此地址所标识的唯一接口。
配置的全球单播地址不能与该地址对应的网络前缀相同,因为该类型的地址是设备预留的子网路由器任播地址。对于前缀长度是127位的IPv6地址,不受该规则限制。
任播地址(Anycast):用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据包被传输给此地址所标识的一组接口中距离源节点最近的一个接口(最“近”的一个,是指根据路由协议的距离度量)。
应用场景:当移动主机需要与它的“home”子网上的移动代理之一通信时,它将用该子网路由设备的任播地址。
具体地址规定:任播地址没有独立的地址空间,它们可使用任何单播地址的格式。因此,需要一种语法来区别任播地址和单播地址。
对于接口标识全为0的IPv6地址,标准协议中定义为子网路由器任播地址(Subnet-Router anycast address)。如图11-2所示,subnet prefix是单播IPv6地址前缀,由用户配置单播IPv6地址时指定。
说明:
任播地址不局限于子网路由器任播地址,全球单播地址也可以配置为任播地址。组播地址(Multicast):用来标识属于不同节点的一组接口,类似IPv4的组播地址。发送到组播地址的数据包被传输给此地址所标识的所有接口。
IPv6不包括广播地址,广播地址的功能均由组播地址来提供。
单播地址还可以分为以下几种,如表11-1所示。
地址类型 |
二进制前缀 |
IPv6前缀标识 |
---|---|---|
链路本地单播地址 |
1111111010 |
FE80::/10 |
唯一本地地址 |
1111110 |
FC00::/7 |
环回地址 |
00...1 (128 bits) |
::1/128 |
未指定地址 |
00...0 (128 bits) |
::/128 |
全球单播地址 |
其他 |
- |
表中各类地址的意义如下:
链路本地单播地址:用于邻居发现协议和无状态自动配置进程中链路本地上节点之间的通信。使用链路本地地址作为源或目的地址的数据包不会被转发到其他链路上。使用链路本地前缀FE80::/10(1111 1110 10)和IEEE EUI-64格式的接口标识符(EUI-64可来源于EUI-48)可在以太接口对其进行自动配置。
唯一本地地址,仅用于同一个站点的地址。具有全球唯一的前缀,可以进行网络之间的私有连接,而不必担心地址冲突等问题。如果出现路由泄漏,不会造成Internet路由冲突。在应用中,上层应用程序将这些地址看作全球单播地址。
环回地址0:0:0:0:0:0:0:1或::1,不会被分配给任何接口。它的作用与在IPv4中的127.0.0.1相同,即节点将IPv6报文发送给自己。
未指定地址(::),不能被分配给任何节点,也不能作为目的地址。在主机初始化且没有取得自己的地址时,未指定地址可以用在IPv6报文的源地址字段,例如重复地址探测时,NS报文的源地址就是未指定地址。
全球单播地址等同于IPv4公网地址。用于可以聚合的链路,最后提供给网络服务提供商。这种地址类型的结构允许路由前缀的聚合,从而满足全球路由表项的数量限制。地址包括运营商管理的48位路由前缀和本地站点管理的16位子网ID,以及64位接口ID。如无特殊说明,全球单播地址包括站点本地单播地址。
IEEE EUI-64格式的接口标识符
IPv6地址中的64位接口标识符(Interface ID)用来标识链路上的唯一接口。这个地址是从接口的链路层地址(如MAC地址)变化而来的。IPv6地址中的接口标识符是64位,而MAC地址是48位,因此需要在MAC地址的中间位置插入十六进制数。然后将U/L位(从高位开始的第7位)设置为“1”,这样就得到了EUI-64格式的接口ID。
以中间位置插入十六进制数FFFE(1111 1111 1111 1110)为例,具体转换过程如图11-3。