IPV6组播地址

article/2025/9/21 4:16:56

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

 

学习提示:IPv6的通信过程依赖于邻居发现协议(NDP),而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所示。

120554564.png

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

120639221.png

 

通过分析一个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的是表示本地链路所有接点的永远组播地址。

 

121742592.png

理解请求节点的组播地址

理解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协议。总而言之就是使用点到点的方式去代替广播。现在需要进一步理解的是节点请求技术是如何使用组播去完成“点对点”的通信?

121831476.png

节点请求主机是如何去实现该技术?该技术中的IPv6组播地址是如何生成的?

节点请求主机能够以一种“点对点”的形式将MAC地址请求消息发送到目标主机D,是因为D主机的请求节点组播地址FF02::1:FFAA:4C3E在整个链路上是唯一的,所以源主机可以直接将节点请求信息发到目标主机节点请求组播地址上,节点请求组播地址是提高MAC地址解析的核心技术,那么这个目标主机的节点请求组播是如何生成的?

节点请求组播的构成如下图12.60所示,该组播地址是将一个单播IPv6地址(可以是本地链路地址也可以是全球单播地址)的后24位填充到一个请求节点组播地址的104位的固定前缀FF02::1:FF后,生成一个唯一的节点请求组播地址。

 

121929178.png

 

通过分析一个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。

122022153.png

 

理解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地址中来生成数据链路层地址。

 

122107606.png

分析一个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所示。

 

122227473.png

注意:除了众所周知的IPv6组播所对应的MAC地址是上述构成原理以外,其它的IPv6组播(如:节点请求组播)也是相同道理,这里不再重复讲述。

 

原文链接:https://blog.51cto.com/u_7658423/1337745

作者:kingsir827


http://chatgpt.dhexx.cn/article/F7TV1YvN.shtml

相关文章

IPV4组播地址解析以及IPV4地址详解

为了便于对IP地址进行管理, 根据IPv4地址的第一个字节,IPv4地址可以分为以下五类。 A类:0~127 B类:128~191 C类:192~223 D类:224~239,组播地址 E类:240~254,保留为研究测试使用 IPv4地址中有一些地址段有特殊用途,这些地址段及用途的说明如表所示。 IPV4组播地址解…

计算机网络——组播地址(多播地址、D类地址)详解——不断完善更新中

1、是什么 先看这张图,组播地址是分类编址的IPv4地址中的D类地址,又叫多播地址,他的前四位必须是1110,所以网络地址的取值范围是224~~239。 2、这些IP地址用来做什么 224.0.0.0~224.0.0.255为预留的组播地址&#xff0…

Android LBS

前言 本文以项目AOSP的源码为参考,描述基于Android的定位服务的实现流程,包括GPS定位,网络定位,GeoCoder等服务。以代码执行流程为主线,一步步分析定位的实现流程。由于Android Binder采用C/S的架构模式,所…

LSB和MSB,LSB first,MSBfirst

LSB LSB(Least Significant Bit)–最低有效位 MSB MSB(Most Significant Bit)–最高有效位 解释 加入下面是一个四位二进制的数值,一般和10进制都认为是左边是最高位,也就是MSB;对应的最右边就是LSB. LSB first和MSB first 这种一般出现先对传感…

OSPF,LSDB,LSA分类

dis cur c ospf //查看OSPF的配置 DD报文选举的是主从关系,不是选举DR和BDR LSA通告网段信息和通告拓扑信息 two-way:双向通信,邻居状态下,选举DR和BDR 进入exstar状态,发送第一个DD报文,DD报文的作用是…

IS-IS P2P网络下LSDB同步过程

P2P链路下IS-IS的LSDB数据库同步过程 抓包如下: 大概过程: IS-IS在P2P网络中邻居建立完成后只发送一次CSNP报文 双方都会发送一次CSNP,包含LSP的摘要信息,意思是告诉对方我有哪些网段信息如果其中一方的LSDB中没有对方的CSNP内的某条路由&a…

【OSPF-一类router、二类network】(根据lsdb画出拓扑)

目录 一、一类LSA-Router 每台交换机会产生一条类型为router的lsa,来描述自身直连网段信息(通过dis ospf lsdb,查看router的条目,就能确定该区域内路由器的数目了) 查看ospf相关信息的命令 二、二类lsa-network 由…

ISIS—ISIS中LSP(数据库)同步如何保证LSDB可靠性—04

目录 一、LSP基础知识:(链路状态更新,相当于OSPF的LSA) 二、ISIS中LSP(数据库)同步如何保证LSDB可靠性? ISIS LSP(数据库)同步机制 ①P2P网络: ②MA网络: ③特例问题&#xf…

【LAB4-Cisco】OSPF邻居建立过程与LSDB分析

实验需求 1、根据拓扑提示,对各路由启用OSPF路由协议并划分相应区域,并验证邻居关系以及数据库信息,从而保证内网全网互通。其中,要求R7上的回环口条目作为外部条目引进来。 2、新加入公司网络的Area 2 区域存在一定的接入安全隐患…

IS-IS LSDB详解(华为设备)

概述: IS-IS协议主要有两大功能:子网依赖功能和子网无关功能。子网依赖功能就是建立和维护邻接关系的功能,而子网无关功能则主要用于执行和管理和管理链路状态信息的交换和路由计算,具体可以分为四个过程。 更新过程。路由决策过…

1.1.6 LSDB同步

邻接关系 邻接建立过程 讲完了报文之后我们具体来看一下是怎么同步的,我们可以看到下图是我们LSDB的过程: 注意: 我们要注意,在到达同步过程之前我们先要达到2-way的状态,就是我们首先要有邻居状态的建立,才…

网络篇 OSPF的LSDB过载保护-52

目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 实验难度 2 实验复杂度3 一、实验原理 若没有正确规划网络或配置不好,可能出现大量的LSA,这些LSA会消耗掉本地的CPU和内存资源的。在Cisco IOS 12.3(7)和更晚的版本中&#xff0…

OSPF之链路状态数据库LSDB

OSPF链路状态数据库 原理概述: OSPF是一种基于链路状态的动态路由协议,每台 OSPF 路由器都会生成相关的LSA,并将这些LSA通告出去。路由器收到LSA后,会将它们存放在链路状态数据库LSDB中。 LSA有多种不同的类型,不同类型…

ORACLE生成自增唯一序列值的函数

“F_NEXT_VAL” 函数名 VAL 变量值 PRAGMA AUTONOMOUS_TRANSACTION 声明为自治事务 CREATE OR REPLACE FUNCTION "F_NEXT_VAL" RETURN INTEGER ASpragma autonomous_transaction;VAL INTEGER; BEGINSELECT t."VALUE" INTO VAL FROM SYS_SEQUECE t WHERE t…

Mysql和Oracle实现序列自增

/*ORACLE设置自增序列 oracle本身不支持如mysql的AUTO_INCREMENT自增方式,我们可以用序列加触发器的形式实现, 假如有一个表 T_WORKMATES,我们需要让学号PNO自增*/ --创建序列 SEQ_PNO CREATE SEQUENCE SEQ_PNO minvalue 1 --最小值为1 n…

如何实现 Oracle 的自增序列,两步轻松搞定

在实际项目开发过程中,设计数据库表时经常遇到需要主键自增的场景。那如何实现Oracle的主键自增呢,这里我们记录一种最常用的方式:sequence trigger。 就是利用Oralce的序号和触发器来实现字段的自增,下面直接来看一个完整的例子…

oracle中设置表的主键字段为自增序列(实例)

oracle中设置表的主键字段为自增序列(实例) 1、首先创建一个表(如日志表) //删除库表中存在的日志表 drop table S_LOG_INFO cascade constraints; //新建日志表 create table S_LOG_INFO (PRIMARYKEY NUMBER …

oracle数据库新建表增加表序列,设置id自增

1,oracle数据库增加新表时,设置表id为自增 最小1 最大9999999999 CREATE SEQUENCE “数据库名称”.“SEQ_表名称” MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 100000014 NOCACHE NOORDER NOCYCLE 2,向数据库插入数据时&…

Oracle自增序列探秘:一篇文章教你读懂

目录 1:什么是Oracle 自增长序列 2 :创建数据-->实现自增长序列 2.1 创建序列 2.2 使用序列 3 :查询数据-->实现自增长序列 1:什么是Oracle 自增长序列 Oracle自增长序列是一种生成唯一数字的方法,可以用于创…

oracle 序列,程序中实现自增

文章目录 1. 序列作用和含义2. 序列的使用2.1 直接使用序列2.2 配合触发器隐式使用2.3 修改删除序列 1. 序列作用和含义 序列是用于生成唯一、连续序号的对象;可以是升序的,也可以是降序的; 使用create sequence语句创建序列 create sequen…