一. 理解IPV6的组播地址
IPv6的 组播地址通常是为IPv6的组播服务,而IPv6通信的核心大量的使用了组播,IPv6不再使用广播,这与IPv4的通信不同,然而要理解IPv6的组 播,
首先需要明白三个关键点:
第一、任何节点都能够成为一个多播组成员也叫做组播组成员;
第二、源节点可以发送数据包到多播组,
第三、在一个多播组的节点 都能收到发往该组播组的数据。
而对于IPv6组播地址是由固定的8bit地址前缀FF::/8,4bit的标志位,4bit组播范围和112bit多播组标识符(组ID)组成。
| 8 | 4 | 4 | 112 |
+---------------+--------+---------+---------------------------------------------+
|11111111 | flgs | scop | group ID |
+---------------+--------+---------+----------------------------------------------+
组播地址高8bit为固定值FF,此高8个bit中4bit为flgs位,4bit为组播组的泛洪范围。
flgs位: 为4bit: |0|R|P|T| , flgs位的高1bit为保留,必须设置为0
T位: 如果为置0表示永久分配或者是well-known组播地址,如果置1表示临时分配动态的地址,不固定。
P位: 如果置1的话表示此组播地址是一个基于单播前缀的ipv6组播地址。默认为0,如果P位设置为1,那么T位必须为1。
R位: 如果置1的话表示此组播地址是一个内嵌RP地址的ipv6组播地址。默认为0
二. 理解请求节点的组播地址
理 解IPv6的请求节点组播地址非常重要,因为IPv6的请求节点组播地址提高了数据链路层地址解析的效率,在IPv4的环境中,通信需要同时获得目标主机 的IP地址与MAC地址,当知道目标IP地址时会使用ARP协议去解析数据链路层的MAC地址,ARP的地址请求消息是使用广播发送的,然而在IPv6的 应用环境中不再使用广播,所以放弃了ARP协议的使用,取而代之的是ICMPv6的节点请求消息,现在需要深入理解的两个问题:
n节点请求主机是如何高效率的去替代IPv4的ARP协议?
n节点请求主机是如何去实现该技术?该技术中的IPv6组播地址是如何生成的?
1)在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协议。
2)节点请求主机能够以一种“点对点”的形式将MAC地址请求消息发送到目标主机D,是因为D主机的请求节点组播地址FF02::1:FFAA:4C3E在整个链路上是唯一的,所以源主机可以直接将节点请求信息发到目标主机节点请求组播地址上,节点请求组播地址是提高MAC地址解析的核心技术,那么这个目标主机的节点请求组播是如何生成的?
节点请求组播的构成如下图12.60所示,该组播地址是将一个单播IPv6地址(可以是本地链路地址也可以是全球单播地址)的后24位填充到一个请求节点组播地址的124位的固定前缀FF02::1:FF中,生成一个唯一的节点请求组播地址。
三. 理解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组播地址: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所示。
原文地址:https://www.cnblogs.com/mysky007/p/11261559.html