本文目录
- 1、IPv6寻址模式
- 1.1、单播(unicast)
- 1.1、组播(multicast)
- 1.1、任播(Anycast)
- 2、IPv6地址的类型与格式
- 2.1、IPv6地址的格式
- 2.2、IPv6地址的类型
- 2.2.1、单播地址简介
- 2.2.2、组播地址简介
- 2.2.3、任播地址简介
IPv6的出现,最重要的原因是为了解决IPv4地址不足的问题(NAS技术一方面也是为了解决IPv4地址不足的问题),所以本质上来说IPv6就是将IPv4中的32位(4字节)的地址长度扩展到了128 位(16 个字节),以及地址长度扩展后带来的从寻址到编址的一系列变化。本文主要讲述二块内容:IPv6寻址模式,IPv6地址的类型与格式。
1、IPv6寻址模式
IP协议版本 | 单播 | 组播 | 广播 | 任播 |
---|---|---|---|---|
IPv4 | 支持 | 支持 | 支持 | 不支持 |
IPv6 | 支持 | 支持 | 不支持 | 支持 |
参照以上表格,我们可以看出IPv6相比于IPv4最重要的区别就是IPv6不支持广播,IPv6增加了任播功能的支持。单播(unicast),组播(multicast),广播(broadcast)都是IPv4中非常熟悉的寻址模式了,本文章中不再介绍。
1.1、单播(unicast)
不做赘述
1.1、组播(multicast)
不做赘述
1.1、任播(Anycast)
又称为选播、泛播或任意播。相比校于单播允许源结点向单一目标结点发送数据报,组播允许源结点向一组目标结点发送数据报,而任播则允许源结点向一组目标结点中的一个结点发送数据报,而这个结点由路由系统选择,对源结点透明。任播地址与组播地址类似,同样是多个目标节点共享一个任播地址,不同的是,只有一个目标节点期待接收到源节点发送到任播地址的数据报。当客户端计算机尝试访问服务器的IPv6任播IP地址时,访问请求被转发到具有最低路由开销的服务器。假设csdn.net有多个Web服务器,再假设csdn.net的所有Web服务器都分配有相同的IPv6 任播的IP地址。 现在,当欧洲的用户通过IPv6的任播IP地址访问csdn.net时,欧洲用户实际上访问的是物理位置在欧洲的服务器;而中国的用户通过IPv6的任播IP地址访问csdn.net时,中国用户实际上访问的是物理位置在中国的服务器;而北美的用户通过IPv6的任播IP地址访问csdn.net时,北美用户实际上访问的是物理位置在加拿大的服务器。
2、IPv6地址的类型与格式
2.1、IPv6地址的格式
我们都知道IPv4地址在格式上被分成了4个字节,每个字节用十进制表示,每个字节之间用,号来隔开。IPv6也有类型的格式表达:IPv6地址由被划分为8个16位块的128位组成。如果二进制表示的IPv6地址, 并将其划分为8个16位块的128位IPv6地址表示如下:
0010000000000001 0000000000000000 0011001000111000 1101111111100001 0000000001100011 0000000000000000 0000000000000000 1111111011111011
这会是一个非常冗长的字串,所以一般来说,我们用十六进制分块表达格式与三大缩减长度规则来表示IPv6的地址。
- 十六进制表示的IPv6地址:
为了方便阅读,交流与记忆,每个块(每16位)都会写成由冒号符号分隔的4位十六进制数字。以十六进制格式表示被划分为8个16位块的128位IPv6地址表示如下:
2001:0000:3238:DFE1:0063:0000:0000:FEFB
- 规则一:丢弃前导零后的IPv6地址:
为了进一步减少IPv6地址的长度,我们会丢弃任意一个位块中的前导零。表示第5块从0063变成了63,如下:
2001:0000:3238:DFE1:63:0000:0000:FEFB
- 规则二:省略连接的零块
比如第6,7块的":0000:0000:“变成”::“,比如63和FEFB之间的二个零块被省略成了”::"
2001:0000:3238:DFE1:63::FEFB
- 规则三:单独的0块被缩减成一个0
比如第2块中的0000被缩减成了0
2001:0:3238:DFE1:63::FEFB
2.2、IPv6地址的类型
首先IPv6的地址类型被分成单播地址,组播地址和任播地址三大类。其中IPv6的单播地址类型有五种不同类型:全局单播地址,链路本地地址,唯一本地地址,环回地址,未指定地址。
- IPv6地址的后64位始终使用用对应网络接口设备的接口ID, 可以唯一的标识一台主机。有多种生成方式( 可以手工配置,可以自动配置:无状态自动配置,有状态配置或者自动生成随机接口ID),由MAC地址(48位)+FFFE,并将第5块的第7个字节改成0表示本地管理(或者1表示全局管理)。假设MAC地址为AABBCC112233,则IPv6地址为xxxx:xxxx:xxxx:xxxx:A8BB:CCFF:FE11:2233这样构成。
- IPv6地址的前64位依照地址类型不同而不同,用xxxx:xxxx:xxxx:xxxx表示。
位块 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
xxxx | xxxx | xxxx | xxxx | A8BB | CCFF | FE11 | 2233 |
2.2.1、单播地址简介
- 全局单播地址
全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。可以在公网上被路由器转发。全球单播地址由全球路由前缀(Global routing prefix)、子网ID(Subnet ID)和接口标识(Interface ID)组成,其中:
-
Global routing prefix全球路由前缀:
由提供商(Provider)指定给一个组织机构,通常全球路由前缀至少为48位。目前已经分配的全球路由前缀的前3bit均为001。 -
Subnet ID 子网ID:
分配到全球路由前缀后的组织机构可以用子网ID来构建本地网络。子网ID通常最多分配到第64位。子网ID和IPv4中的子网号作用相似。 -
Interface ID 接口标识:
用来唯一的标识一个网络接口设备。
-
链路本地地址
链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。以链路本地地址为源地址或目的地址的IPv6报文不会被路由设备转发到其他链路。它的最高10位值固定为1111111010(即FE80::/10),同时将接口标识添加在后面作为地址的低64比特。 当一个网络接口启动IPv6协议栈时,网络接口会自动配置一个链路本地地址。从而使得两个连接到同一链路的IPv6节点不需要做任何配置就可以相互通信。链路本地地址广泛应用于邻居发现,无状态地址配置等。 -
唯一本地地址
本地站点地址的废除后,唯一本地地址被用来代替本地站点地址,唯一本地地址是另一种应用范围受限的地址,它仅能在一个站点内使用。唯一本地地址的作用类似于IPv4中的私网地址,任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址。唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发。这种地址的前7bits固定为1111110(即FC00::/7) -
环回地址
IPv6中的环回地址即::1/128。环回与IPv4中的127.0.0.1作用相同,主要用于设备给自己发送报文。 -
未指定地址
IPv6中的未指定地址即 ::/128。该地址可以表示某个接口还没有IP地址。
IPv6单播地址有效范围, 如下图所示,我们可以看到全局单播地址,链路本地地址,唯一本地地址的有效范围(在有效范围内唯一,并可以相互通信)