IPv6的组播地址(掌握IPv6通信原理的关键知识点)

在IPv4中广泛的使用单播、广播、组播的方式。而在IPv6的应用环境中,使用单播,组播、任意播的新方式,放弃广播的使用,换而言之,在IPv6的环境中不再有广播的存在。关于IPv6的单播地址,在上面的12.1的几个小节中已经做出了详细的讨论,而本小节将详细讨论IPv6的组播与任意播的使用方式。理解IPv6的组播地址有一个重要的前提:就是读者能成功的理解IPv4中D类IP(组播地址)的作用、功能与构成。否则对IPv6的组播地址学习将是“空中阁楼”。所以拥有有IPv4组播地址的基础相当重要。

学习提示:IPv6的通信过程依赖于邻居发现协议(NDP),关于这个协议将在12.3小节有详细描述,而NDP协议又是基于IPv6的组播进行工作的,所以理解IPv6的组播地址及其构造原理相当重要,希望学员重视本小节的学习

理解IPV6的组播地址

IPv6的组播地址通常是为IPv6的组播服务,而IPv6通信的核心大量的使用了组播,IPv6不再使用广播,这与IPv4的通信不同,然而要理解IPv6的组播,首先需要明白三个关键点:第一、任何节点都能够成为一个多播组成员也叫做组播组成员;第二、源节点可以发送数据包到多播组,第三、在一个多播组的节点都能收到发往该组播组的数据。

而对于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所示。

范围:指定义组播地址的范围类型,如下所示表示常见的组播地址访问以及对应的值。如果没有列举出的值表示被保留或者没有指定。

通过分析一个IPv6的多播地址实例来分析IPv6组播地址的构成

前面讲述描述的都是定义IPv6组播地址的概念与理论,这对于初学者永远是那么的枯燥,在这里通过分析一个IPv6的多播地址实例来分析IPv6组播地址的构成,来形象的理解IPv6的组播地址,这样也可以让初学者更好的理解。

例:分析众所周知的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的是表示本地链路所有接点的永远组播地址。

理解请求节点的组播地址

理解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组播(如:节点请求组播)也是相同道理,这里不再重复讲述。

Linux vip地址通信原理,IPv6的组播地址(掌握IPv6通信原理的关键知识点)相关推荐

  1. 2022-10-31 网工进阶(三十三) IP组播-流量模型、组播概念、组播报文结构、组播地址与MAC、组播网络架构、组播服务模型、组播数据转发原理(RPF检查、组播分发树、组播协议介绍)

    IP组播概念 流量模型 网络中存在各种各样的业务,从流量模型看一般可以将业务分为两类: 点到点业务:比如FTP,WEB业务,此类业务主要特点是不同的用户有不同的需求,比如用户A需要下载资料A,用户B需 ...

  2. IPv4、IPv6地址、组播地址及子网子划分详解一

    一.IPv4地址 1.IP地址的定义 IP地址是分配给IP网络中每台机器的数字标识符,它指出了设备在网络中的具体位置.由 32 位二进制数组成.IP地址是软件地址,而不是硬件地址. 在因特网中给每台电 ...

  3. IPv4、IPv6地址、组播地址及子网子划分详解四

    6.IPv6 IPv4地址总数=232=4,294,967,296 IPv6地址总数=2128= 340,282,366,920,938,463,374,607,431,768,211,456 201 ...

  4. HuaWei ❀ IPv6组播地址

    IPv6组播地址 IPv6的组播与IPv4相同,用来标识一组接口,一般这些接口属于不同的节点,一个节点可能属于0到多个组播组,发往组播地址的报文被组播地址标识的所有接口接收: 一个IPv6组播地址由前 ...

  5. 组播MAC/IPv4/IPv6地址

    IPV4组播地址 分类 地址范围 含义 永久组播地址 224.0.0.0–224.0.0.255 永久组播地址(为特定协议分配) 224.0.0.1 网段内所有主机和路由器(等效于广播地址) 224. ...

  6. IP组播----组播基础 组播服务模型、组播地址

    一.简介 IPv4传输方式有三种:单播.组播.广播 单播:信息源为每个需要信息的主机都发送一份独立的报文 组播:信息源将保温发送到一个特定的组播IP地址,只有加入了这个组的主机才能接收 广播:信息源将 ...

  7. CCIE-IPV6单播和组播地址

    2021.10.16 每天的开心都来源于更优秀的自己和你 地址表示方法&地址分类 URL中与端口号的区分 因为在URL中地址后面可能需要跟上端口号,而端口号也是通过隔符来与地址进行区别,因此 ...

  8. 什么是计算机组播地址,IP组播地址.doc

    IP组播地址 组播协议的地址在IP协议中属于D类地址. D类地址是从224.0.0.0到239.255.255.255之间的IP地址其中224.0.0.0到224.0.0.255是被保留的地址. 组播 ...

  9. MAC地址解析-广播地址、组播地址和单播地址的特征

    MAC地址分成三类,分别是广播地址.组播地址和单播地址.首先,FF:FF:FF:FF:FF:FF毫无疑问是广播地址.每个网卡出厂时被分配唯一一个单播地址,头24位是设备制造厂商的编号,由IEEE(电气 ...

  10. linux ipv6 组播地址,ipv6组播地址是什么意思

    一.任何节点都能够成为一个多播组成员也叫做组播组成员: 二.源节点可以发送数据包到多播组: 三.在一个多播组的节点都能收到发往该组播组的数据. "组播组"是一个用IP组播地址进行标 ...

最新文章

  1. P3项目轶事之一票否决的新员工培训
  2. 一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库
  3. 零基础Java学习之构造器
  4. oracle localhost连接
  5. 程序日志--要养成好习惯
  6. LeetCode 1297. 子串的最大出现次数
  7. 30条架构原则:助你成为大牛架构师
  8. reactJS -- 14 Router 概念
  9. 最稳定的IDM6.35版本分享
  10. 软件找不到msvcp140.dll无法继续执行怎么办
  11. CRC校验原理及其C语言实现
  12. PHP求职宝典系列——PHP Web 编程篇
  13. 企业微信怎么群发消息到群?企业微信客户群群发有什么限制?
  14. 如何选择正确的图片格式? 图片格式详细科普
  15. 商家商品上架流程(没有)
  16. 论文研究 | 机器视觉在无人机领域的发展
  17. TensorFlow实现CGAN
  18. ubuntu下各服务 重启命令
  19. Android App 可以定时启动! 并且完成短信自动发送获取内容功能 (以获取闪讯密码为例 大学宿舍宽带)
  20. QT 操作 msword.olb

热门文章

  1. c语言技术课第一次作业
  2. JVM垃圾收集器笔记整理
  3. Hadoop学习笔记三
  4. c++primer 容器算法整理一
  5. 点击按钮弹出Outlook(新建邮件状态)
  6. c语言 dll库是线程安全吗,vsprintf是线程安全的吗?解决思路
  7. 拿到串口的数据如何解析_详解如何用binlog2sql解析工具来实现mysql数据表异地恢复...
  8. web应用的跨域访问解决方案
  9. ORACLE修改表空间
  10. 解析ES6箭头函数中的this