IPv6的组播地址(掌握IPv6通讯原理的关键知识点)网络
在IPv4中普遍的使用单播、广播、组播的方式。而在IPv6的应用环境中,使用单播,组播、任意播的新方式,放弃广播的使用,换而言之,在IPv6的环境中再也不有广播的存在。关于IPv6的单播地址,在上面的12.1的几个小节中已经作出了详细的讨论,而本小节将详细讨论IPv6的组播与任意播的使用方式。理解IPv6的组播地址有一个重要的前提:就是读者能成功的理解IPv4中D类IP(组播地址)的做用、功能与构成。不然对IPv6的组播地址学习将是“空中阁楼”。因此拥有有IPv4组播地址的基础至关重要。ide
理解IPV6的组播地址性能
IPv6的组播地址一般是为IPv6的组播服务,而IPv6通讯的核心大量的使用了组播,IPv6再也不使用广播,这与IPv4的通讯不一样,然而要理解IPv6的组播,首先须要明白三个关键点:第1、任何节点都可以成为一个多播组成员也叫作组播组成员;第2、源节点能够发送数据包到多播组,第3、在一个多播组的节点都能收到发往该组播组的数据。学习
而对于IPv6组播地址是由固定的8bit地址前缀FF::/8,4bit的标志位,4bit组播范围和112bit多播组标识符(组ID)组成。以下图12.56所示。“标志”字段用于说明组播地址是“永久性(由IANA指定的一个地址)”的,仍是“临时性”的。而对于该4bit标志字段,通常状况下,其高3bit位为0,剩下的低1bit位就是用于判断多播地址是“永久性”仍是“临时性”。若是低1bit位为0,则表示为“永久性多播地址”,也就是一个众所周知的多播地址,如FF02::1表示在IPv6环境中一个链路上的全部计算机节点、FF02::2表示一个链路上的全部路由器节点,相似于IPv4的224.0.0.1和224.0.0.2。若是为“1”就是“临时性多播地址”。以下图12.57所示。优化
范围:指定义组播地址的范围类型,以下所示表示常见的组播地址访问以及对应的值。若是没有列举出的值表示被保留或者没有指定。spa
经过分析一个IPv6的多播地址实例来分析IPv6组播地址的构成3d
前面讲述描述的都是定义IPv6组播地址的概念与理论,这对于初学者永远是那么的枯燥,在这里经过分析一个IPv6的多播地址实例来分析IPv6组播地址的构成,来形象的理解IPv6的组播地址,这样也可让初学者更好的理解。blog
例:分析众所周知的IPv6多播地址FF02::1的构成原理路由
分析:首先咱们使用相似几何证实题的方法:来证实公众理论的成立与否,IPv6的组播地址:FF02::1的众所周知的做用是表示本地链路的全部接点的组播地址,换而言之,能够这样理解,若是有一个IPv6的数据报文中的目标地址是FF02::1,那么该数据将发往一个链路的全部IPv6节点上。经过上面的理论来分析该地址的构成原理。以下图12.58分析IPv6组播地址FF02::1所示,首先将FF02::1这个经过“零压缩”法表示的IPv6地址还原成标准格式的形式:FF02:0000:0000:0000:0000:0000:0000:0001;然而FF02这一段长度是IPv6的8位固定前缀+4位的标记+4位的范围所组成,也是关心的重点部分。而余下的“0000:0000:0000:0000:0000:0000:0001”是112的多播组标识符。如今将FF02部分的十六进制转换成二进数为:11111111 00000010;其中11111111表示IPv6组播地址的8位固定前缀。而00000010部分中的前4个0表示标记,后面的0010表示范围。而前面4个0000的最后一个0表示该组播地址是一个永远的IPv6组播地址,事实上的确也是这样,FF02::1是一个众所周知的IPv6组播地址。然后面的4位0010根据上面的IPv6范围表可得知表示本地链路范围,因此得出FF02::1的是表示本地链路全部接点的永远组播地址。get
理解请求节点的组播地址
理解IPv6的请求节点组播地址很是重要,由于IPv6的请求节点组播地址提升了数据链路层地址解析的效率,在IPv4的环境中,通讯须要同时得到目标主机的IP地址与MAC地址,当知道目标IP地址时会使用ARP协议去解析数据链路层的MAC地址,ARP的地址请求消息是使用广播发送的,然而在IPv6的应用环境中再也不使用广播,因此放弃了ARP协议的使用,取而代之的是ICMPv6的节点请求消息,如今须要深刻理解的两个问题:
n节点请求主机是如何高效率的去替代IPv4的ARP协议?
n节点请求主机是如何去实现该技术?该技术中的IPv6组播地址是如何生成的?
节点请求是如何高效率去替代IPv4的ARP协议?
以下图12.59对比IPv4与IPv6节点请求的高效性所示可看出,在IPv4环境的的ARP地址解析协议是使用目标地址为广播(255.255.255.255或者FFFF.FFFF.FFFF)将MAC地址请求消息发送到整个以太网链路上的全部主机,即使是A主机只请求D主机的MAC,B主机与C主机也一样会收到这个请求广播,从性能与效率上讲这明显不科学。因此在IPv6的环境中放弃了广播的的方式,而是采用组播方式将MAC地址的解析请求,以点对点的形式直接组播到D主机的请求节点组播地址FF02::1:FFAA:4C3E。而再也不将请求消息发送到无关的主机B和主机C,因此IPv6的节点请求的确是高效率去替代IPv4的ARP协议。总而言之就是使用点到点的方式去代替广播。如今须要进一步理解的是节点请求技术是如何使用组播去完成“点对点”的通讯?
节点请求主机是如何去实现该技术?该技术中的IPv6组播地址是如何生成的?
节点请求主机可以以一种“点对点”的形式将MAC地址请求消息发送到目标主机D,是由于D主机的请求节点组播地址FF02::1:FFAA:4C3E在整个链路上是惟一的,因此源主机能够直接将节点请求信息发到目标主机节点请求组播地址上,节点请求组播地址是提升MAC地址解析的核心技术,那么这个目标主机的节点请求组播是如何生成的?
节点请求组播的构成以下图12.60所示,该组播地址是将一个单播IPv6地址(能够是本地链路地址也能够是全球单播地址)的后24位填充到一个请求节点组播地址的124位的固定前缀FF02::1:FF中,生成一个惟一的节点请求组播地址。
经过分析一个IPv6的节点请求组播地址实例来分析IPv6请求节点的组播地址的构成
一台IPv6主机的本地链路地址为FECO:0000:0000:0000:0230:18FF:FEAA:4C3E,如今经过对这个地址的实践分析,来理解该地址所对应的节点请求组播地址的构成原理,以下图12.61所示。首先是还原节点请求组播地址的124位固定前缀的标准格式:“FF02:0000:0000:0000:0000:0001:FF”而后取出IPv6主机的本地链路地址FECO:0000:0000:0000:0230:18FF:FEAA:4C3E中的最后24位,填充到“FF02:0000:0000:0000:0000:0001:FF”前缀中,IPv6使用十六进制表达,那么一个十六进制字符是4个二进制位,因此须要将IPv6单播地址中的最后6个字符(二进制为24位)取下填充到124位固定前缀中造成最后的地址:FF02:0000:0000:0000:0000:0001:FFAA:4C3E,最后使用“零压缩”法表示成为:FF02::1:FFAA:4C3E。
理解IPV6的组播地址与MAC地址的映射关系
IPv6的节点请求多播地址去替代了ARP地址解析协议的目标广播地址255.255.255.255,注意:这只能表示IPv6的节点请求从网络层上的优化与改进,在数据链路层会有什么样改进这是本小节讨论的重点。
在IPv4的ARP地址解析协议中的请求消息报文的目标链路层地址为FFFF.FFFF.FFFF哪么在IPv6中节点请求消息报文的目标链路层地址是什么?在IPv4中组播的IP地址是能够映射成为数据链路层的MAC地址,在IPv6中这个概念仍然生效,IPv6的节点请求组播地址也能够映射成数据链路层地址,具体方法以下图12.62所示组播的MAC地址是通地IPv6的组播IP地址映射而来,映射的原则是:将IPv6组播地址的后32位取出,填充到固定前缀是3333的MAC地址中来生成数据链路层地址。
分析一个IPv6的组播地址映射到MAC地址来理解IPv6组播地址与组播MAC地址的关系
好比一个众所周知的IPv6组播地址:FF02::1它所对应的MAC地址是什么?首先将该“零压缩”的IPv6地址还原为完整格式的IPv6地址为:FFF02:0000:0000:0000:0000:0000: 0000: 0001,而后将该地址的最后32个二进制位取出,一个十六进制位就为4个二进制位,因此最后32个二进制位就是0000:0001,将这部分填充到IPv6组播MAC的固定前缀3333,就获得FF02::1所对应的MAC地址是3333:0000:0001。具体过程以下图12.63所示。
注意:除了众所周知的IPv6组播所对应的MAC地址是上述构成原理之外,其它的IPv6组播(如:节点请求组播)也是相同道理,这里再也不重复讲述。