全部博文(252)
分类: LINUX
2011-03-18 17:50:03
IPv6地址语法
IPv4地址表示为点分十进制格式,32位的地址分成4个8位分组,每个8位写成十进制,中间用点号分隔。而IPv6的128位地址则是以16位为一分组,每个16位分组写成4个十六进制数,中间用冒号分隔,称为冒号分十六进制格式。
下面试举一例,先看一个以二进制形式表示的IPv6地址:
0010000111011010000000001101001100000000000000000010111100111011
0000001010101010000000001111111111111110001010001001110001011010
该128位地址以16位为一分组可表示为:
0010000111011010 0000000011010011 0000000000000000 0010111100111011
0000001010101010 0000000011111111 1111111000101000 1001110001011010
每个16位分组转换成十六进制并以冒号分隔:
21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A
IPv6可以将每4个十六进制数字中的前导零位去除做简化表示,但每个分组必须至少保留一位数字。去除前导零位后,上述地址可写成:
21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
零压缩
某些类型的地址中可能包含很长的零序列,为进一步简化表示法,IPv6还可以将冒号十六进制格式中相邻的连续零位进行零压缩,用双冒号“::”表示。 例如链路本地地址FE80:0:0:0:2AA:FF:FE9A:4CA2可压缩成FE80::2AA:FF:FE9A:4CA2;多点传送地址FF02:0:0:0:0:0:0:2压缩后,可表示为FF02::2。
要想知道“::”究竟代表多少个“0”,我们可以做这样的计算:用8去减压缩后的分组数,再将结果乘以16。例如,在地址FF02::2中,有两个分组(“FF02”分组和“2”分组),那么被压缩掉的“0”共有(8-2)*16 = 96位。
值得注意的是,在一个特定的地址中,零压缩只能使用一次,也就是说,在任意一个冒号分十六进制格式中只能出现一个双冒号“::”,否则我们就无法知道每个“::”所代表的确切零位数了。
IPv6 前缀
前缀是地址中具有固定值的位数部分或表示网络标识的位数部分。IPv6的子网标识、路由器和地址范围前缀表示法与IPv4采用的CIDR标记法相同,其前缀可书写为:地址/前缀长度。例如21DA:D3::/48是一个路由器前缀,而21DA:D3:0:2F3B::/64是一个子网前缀。
注意:在IPv4实现中普遍使用的被称为子网掩码的点分十进制网络前缀表示法在IPv6中已不再使用,IPv6仅支持前缀长度表示法。
IPv6地址类型
IPv6地址是独立接口的标识符,所有的IPv6地址都被分配到接口,而非节点。由于每个接口都属于某个特定节点,因此节点的任意一个接口地址都可用来标识一个节点。IPv6有三种类型地址:
单播
用于确认单独接口的一个地址。发往单播地址的数据包被发送到该地址所确认的接口。按照数据包的可到达性,单播支持以下类型的地址
1、全球单播地址
能够全球到达和确认的地址。全球单播地址由一个全球选路前缀、一个子网ID 和一个接口ID 组成。当前全球单播地址分配使用的地址范围从二进制值001 (2000::/3) 开始,即全部IPv6 地址空间的八分之一。
2、站点本地单播地址:
只能在客户站点内到达和确认的地址,类似于IPv4 专用地址10.0.0.0/8 和192.168.0.0/16。站点本地单播地址包含一个FEC0::/10 前缀、子网ID 以及接口ID。
3、链路本地单播地址:
只能由与同一本地链路相连的节点到达和确认的地址。链路本地单播地址使用FE80::/ 10 前缀和一个接口ID
单播地址interface ID 的64位的来历
另外单播还包括一些其他特殊的地址
在IPv4向IPv6的迁移过渡期,两类地址并存,我们还将看到一些特殊的地址类型:
IPv4兼容地址
IPv4兼容地址,可表示为0:0:0:0:0:0:w.x.y.z或::w.x.y.z(w.x.y.z是以点分十进制表示的IPv4地址),用于具有IPv4和IPv6两种协议的节点使用IPv6进行通信。
IPv4映射地址
IPv4映射地址是又一种内嵌IPv4地址的IPv6地址,可表示为0:0:0:0:0:FFFF:w.x.y.z或::FFFF:w.x.y.z。这种地址被用来表示仅支持IPv4地址的节点。
6to4地址
6to4地址用于具有IPv4和IPv6两种协议的节点在IPv4路由架构中进行通信。6to4是通过IPv4路由方式在主机和路由器之间传递IPv6分组的动态隧道技术。
任播
任播地址是分配给一套属于不同节点的接口的全球地址(如图所示)。发往一个任播地址的数据包被发送到
最近的接口。任播地址具有以下限制:
任播地址不得用作IPv6 数据包的源地址。
任播地址不得分配给IPv6 主机,但是可以分配给IPv6 路由器。
组播
与在IPv4 中一样,组播地址被分配给一套属于不同节点的接口。发往组播地址的数据包被发送到该地址所
确定的所有接口。IPv6 组播地址使用FF00::/8 前缀,全部IPv6 地址空间的1/256
IP v6地址目前分配状况:
补充一些常用的地址前缀
::/128 即0:0:0:0:0:0:0:0,只能作为尚未获得正式地址的主机的源地址,不能作为目的地址,不能分配给真实的网络接口
::1/128 即0:0:0:0:0:0:0:1,回环地址,相当于ipv4中的localhost(127.0.0.1),ping locahost可得到此地址
2001::/16 全球可聚合地址,由 IANA 按地域和ISP进行分配,是最常用的IPv6地址
2002::/16 6 to 4 地址,用于6to4自动构造隧道技术的地址
3ffe::/16 早期开始的IPv6 6bone试验网地址
注:上面三类属于单播地址,都是目前互联网上广泛应用的IPv6地址
fe80::/10 本地链路地址,用于单一链路,适用于自动配置、邻机发现等,路由器不转发
ff00::/8 组播地址
::A.B.C.D 其中
::FFFF:A.B.C.D 其中