IPv6地址简介
目录
1. IPv6 地址应用 3
1.1 IPv6 地址设计 3
1.2 IPv6地址表示 3
2. 地址类型 4
2.1 单播地址(Unicast) 4
2.2 任播地址(Anycast) 5
2.3 组播地址(Multicast) 5
1. IPv6 地址应用
1.1 IPv6 地址设计
从IPv4到IPv6最显著的变化就是网络地址的长度。RFC 2373 和RFC 2374定义的IPv6地址,就像下面章节所描述的,有128位长;IPv6地址的表达形式一般采用32个十六进制数。
IPv6中可能的地址有3.4×10^38个。也可以想象为16个因为32位地址每位可以取16个不同的值。
在很多场合,IPv6地址由两个逻辑部分组成:一个64位的网络前缀和一个64位的主机地址,主机地址通常根据物理地址自动生成,叫做EUI-64(或者64-位扩展唯一标识)。
1.2 IPv6地址表示
IPv6地址为128位长,但通常写作8组,每组四个十六进制数的形式。例如:
FE80:0000:0000:0000:AAAA:0000:00C2:0002 是一个合法的IPv6地址。要是嫌这个地址看起来还是太长,这里还有种办法来缩减其长度,叫做零压缩法。如果几个连续段位的值都是0,那么这些0就可以简单的以“::”来表示,上述地址就可以写成FE80::AAAA:0000:00C2:0002。这里要注意的是只能简化连续的段位的0,其前后的0都要保留,比如FE80的最后的这个0,不能被简化。还有这个只能用一次,在上例中的AAAA后面的0000就不能再次简化。当然也可以在AAAA后面使用“::”,这样的话前面的12个0就不能压缩了。这个限制的目的是为了能准确还原被压缩的0。不然就无法确定每个代表了多少个0。
2001:0DB8:0000:0000:0000:0000:1428:0000
2001:0DB8:0000:0000:0000::1428:0000
2001:0DB8:0:0:0:0:1428:0000
2001:0DB8:0::0:0:1428:0000
2001:0DB8::1428:0000都是合法的地址,并且他们是等价的。但 2001:0DB8::1428::是非法的。(因为这样会使得搞不清楚每个压缩中有几个全零的分组)同时前导的零可以省略,因此:
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 |
+---------------------------- +--------+----------------------- |
Pv4兼容地址写法如下:192.168.89.9
如同IPv4映像地址,这个地址仍然是一个IPv6地址,只是0000:0000:0000:0000:0000:0000:c0a8:5909的另外一种写法罢了。IPv4兼容地址布局如下:
| 80bits |16 | 32bits |
+---------------------------- +--------+------------------------|
0000....................0000 | 0000 | IPv4 address |
+---------------------------- +--------+------------------------|
IPv4兼容地址已经被舍弃了,所以今后的设备和程序中可能不会支持这种地址格式。
2. 地址类型
地址中的前导位定义特定的IPv6地址类型。包含这些前导位的变长字段称作格式前缀(FP)。
IPv6单播地址被划分为两部分。第一部分包含地址前缀,第二部分包含接口标识符。表示IPv6地址/前缀组合的简明方式如下所示:ipv6地址/前缀长度。
以下是具有 64 位前缀的地址的示例。
3FFE:FFFF:0:CD30:0:0:0:0/64
此示例中的前缀是 3FFE:FFFF:0:CD30。该地址还可以以压缩形式写入,如 3FFE:FFFF:0:CD30::/64。
IPv6 定义以下地址类型:
2.1 单播地址(Unicast)
用于单个接口的标识符。发送到此地址的数据包被传递给标识的接口。通过高序位八位字节的值来将单播地址与多路广播地址区分开来。多路广播地址的高序列八位字节具有十六进制值 FF。此八位字节的任何其他值都标识单播地址。
以下是不同类型的单播地址:
链路本地地址。这些地址用于单个链路并且具有以下形式:FE80::InterfaceID。链路-本地地址用在链路上的各节点之间,用于自动地址配置、邻居发现或未提供路由器的情况。链路-本地地址主要用于启动时以及系统尚未获取较大范围的地址之时。
站点本地地址。这些地址用于单个站点并具有以下格式:
FEC0::SubnetID:InterfaceID。站点本地地址用于不需要全局前缀的站点内的寻址。
可聚集全球地址。这些地址可用在 Internet 上并具有以下格式:001(FP,3 位)TLA ID(13 位)Reserved(8 位)NLA ID(24 位)SLA ID(16 位)InterfaceID(64 位)。
镶有IPv4地址的IPv6地址。这些地址主要是用在自动隧道上,这类节点即支持IPv4也支持IPv6,兼容的地址通过设备以隧道方式传送报文。
2.2 任播地址(Anycast)
任播,也叫泛播。一组接口的标识符(通常属于不同的节点)。发送到此地址的数据包被传递给该地址标识的所有接口(根据路由走最近的路线)。任播地址类型代替 IPv4 广播地址。
通常,节点始终具有链路本地地址。它可以具有站点本地地址和一个或多个全局地址。
2.3 组播地址(Multicast)
IPv6中的组播在功能上与IPv4中的组播类似:表现为一组接口对看到的流量都很感兴趣。
组播分组前8比特设置为FF。接下来的4比特是地址生存期:0是永久的,而1是临时的。接下来的4比特说明了组播地址范围(分组可以达到多远):1为节点,2为链路,5为站点,8为组织,而E是全局(整个因特网)。