我是靠谱客的博主 无辜香烟,最近开发中收集的这篇文章主要介绍Understanding IPv6 第三章——IPv6 编址(IPv6地址类型),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

IPv6的地址分类是一个比较复杂的概念,容我慢慢道来。

单播地址

一个单播地址唯一对应一个接口。分为以下几类:
1. 全球单播地址
  和IPv4公网IP类似,格式如下:
这里写图片描述
2. 链路本地地址
 何为链路,我理解此处的链路就是TCP/IP网络模型中的链路层。也就是说,通过链路层能互通的接口可以称之为在同一个链路上。
链路本地地址是自动配置的,也就是说你开启IPv6协议后,就会自动的为每个接口配置一个链路本地地址(地址生成算法有待后续学习后补充)。链路本地只在本链路使用,路由器不会转发任何源地址或目的地址为链路本地地址的报文。链路本地地址是为了在无法正确配置IPv6地址的情况下保证邻居发现协议能够正常工作。其格式如下:
这里写图片描述
所以链路本地地址的前缀是: fe80::/64
链路本地地址只在本链路生效,而且可能重复,并且也无法路由,所以在ping一个链路本地地址的时候必须指定接口,否则节点不知道将请求发往哪个接口。
格式一般如下:
ping6 fe80::713e:a426:d167:37ab%eth0
3. 唯一的私有地址
 和IPv4中的私有地址概念相同。格式如下:
这里写图片描述
第8位标志位固定设为1。所以前缀为: FD00::/8
4.特殊地址
 1) 0:0:0:0:0:0:0:0
 未指定的地址。当地址没确定时经常用来当做源地址,但是从来不会被当做目的地址
 2) 0:0:0:0:0:0:0:1
 回环地址,类似于IPv4中的127.0.0.1。
5. 过渡地址
 1) 0:0:0:0:0:0:w.x.y.z
 IPv4兼容地址
 2) 0:0:0:0:0:FFFF:w.x.y.z
 IPv4映射地址

组播地址

组播地址和IPv4中的组播地址一样:任意节点可以加入任意组播组,可以在任意时刻离开或加入,可以同时加入多个组。
地址格式如下:
这里写图片描述
标记
标记位的最后一位为是暂时态标记,为0表示由IANA分配的well-known地址,为1表示临时分配。
倒数第二位是前缀标记。
倒数第三位是交汇点地址标记。
倒数第四位保留。
范围
范围指定了数据需要被发往哪个IPv6地址范围,如下图所示:
这里写图片描述
组ID
永久性组ID不受范围限制
临时性组ID被限制指定范围

为了能标识接口范围和链路范围内的所有节点,定义了如下两个地址:
FF01::1 (interface-local scope all-nodes multicast address)
FF02::1 (link-local scope all-nodes multicast address)
为了能标识接口范围,链路范围,站点范围内所有路由,定义了如下地址:
FF01::2 (interface-local scope all-routers multicast address)
FF02::2 (link-local scope all-routers multicast address)
FF05::2 (site-local scope all-routers multicast address)

请求节点地址
请求节点地址是为了提高地址解析的效率。在IPv4协议中,利用arp协议由IP地址解析出链路层mac地址,arp协议的报文是通过链路层广播发送出去的,这会干扰到链路层上所有节点。IPv6改进了这一点,引入了请求节点地址:每个IPv6地址都会对应一个请求节点地址,接口会在链路层监听此地址,所以地址解析请求只需要发往IP地址对应的请求节点地址即可,而不会打扰到所有的节点。对应格式如下:
这里写图片描述

组播地址的以太网地址
组播地址在发送的过程中使用的以太网地址是由组播地址映射得到的,映射关系如下:
这里写图片描述
链路层会维护一个感兴趣的目标mac地址表,会包含链路层的广播地址:0xFF-FF-FFFF-FF-FF和监听的组播地址对应的mac地址。

任播地址

为IPv6地址划分子网

由前面的介绍可以知道,全球单播地址的子网部分是16位:
这里写图片描述
可以对这16位再进行划分,组成不同层级的子网。具体方法不细述。

IPv6接口标识符

IPv6接口标识符被设计成64位的原因并不是考虑到一个子网中容纳264个接口。而是为了将mac地址映射为接口标识符,目前的mck地址为48位(IEEE802address),将来的mac地址为64位(IEEE1394)。
生成接口标识符有以下几种方法:

1. 基于EUI-64地址

EUI-64是一种新型的mac地址,为了帮助理解,先介绍一下现在使用的IEEE 802 address,
IEEE 802 address格式如下:
这里写图片描述
前24位是公司标识,由IEEE统一分配,后24位是网络适配器扩展ID,由制造商自行分配,两部分结合到一起决定了此ID全球范围内的唯一。
第7位是全球/本地标志,是0表示全球地址,由IEEE统一管理,否则为本地地址。
第8位是组播/单播标志,0表示单播,1表示组播。

IEEE EUI-64地址
公司标识还是24位,只是扩展标识由24位变成了40位。将48位mac地址映射为64位mac地址的方法是在公司标识和扩展标识中间插入16位数字: 11111111 11111110 (0xFFFE)。

从IEEE EUI-64位地址得到接口标识符
全球/本地标志(第7位)取反:如果是0变为1,是1变为0。这样做是为了得到更好的压缩性:本地地址一般中间有大段的0,如果这一位为1会影响零压缩法的压缩比例。在不进行取反操作时,如果EUI-64位地址为:02-00-00-00-00-00-00-01,那么对应的链路本地地址为:FE80::200:0:0:1。进行取反操作后,变为:FE80::1。全球地址一般前缀不会为全0,所以标志位为0或1都不影响压缩。

2. 将Ieee 802 addresses 转换为IPv6接口标识符

先将802地址转换为EUI-64地址,然后再转换为接口标识符,过程如图所示:
这里写图片描述

3. 临时接口标识符

EUI-64和接口标识符之间的映射关系是确定的。为了提供和IPv4一样的匿名性,IPv6提供了临时接口标识符生成方法。
如果系统不能保存历史记录,则每次IPv6协议启动时都随机生成。
如果系统能够保存,则先获取历史记录,然后追加上64位的EUI-64地址,然后用md5产生128位哈希值,前64位用做接口标识符,后64位存储起来下次使用。
临时接口标识符的有效期取路由器通告值和本地默认值中的较小者。

Test for understanding

8. Explain how global and unique local addressing can share the same subnetting infrastructure within an organization.
  global address and unique local address share the same structure beyond the frst 48 bits of the address. In global addresses, the Subnet ID feld identifes the subnet within an organization. For unique local addresses, the Subnet ID feld performs the same function. Because of this, you can create a subnetting infrastructure to number individual subnets with subnet IDs that can be used for both unique local and global unicast addresses
没能理解,不知道是不是说因为前缀不同,子网标识自然可以相同的意思。

这里写图片描述

参考

understanding IPv6

深入解析IPv6 第3版

最后

以上就是无辜香烟为你收集整理的Understanding IPv6 第三章——IPv6 编址(IPv6地址类型)的全部内容,希望文章能够帮你解决Understanding IPv6 第三章——IPv6 编址(IPv6地址类型)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部