当前位置:网站首页 > 编程语言 > 正文

ipv6组播报文(ipv6组播地址标志字段长度为多少)



文章较长,建议收藏~

PV6简介

IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation)。它是互联网工程任务组IETF设计的一套规范,用于替代IPV4的下一代IP协议。

IPv4协议是目前广泛部署的因特网协议,在因特网发展初期,IPv4以其协议简单、易于实现、互操作性好的优势而得到快速发展。但随着因特网的迅猛发展,IPv4设计的不足也日益明显。

随着万物互联时代的到来,IPv4地址空间不足,2011年2月3日,IANA(因特网地址分配组织)宣布将其最后的468万个IPv4地址平均分配到全球5个RIR(区域互联网注册管理机构),此后IANA再没有可分配的IPv4地址。

由于IPv4最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展。IPv6的出现,不仅能解决网络地址资源数量的问题,同时也解决了IPv4的一些弊端。

在2012年6月6日,国际互联网协会举行了世界IPv6启动纪念日,这一天,全球IPv6网络正式启动。多家知名网站,于当天全球标准时间0点(北京时间8点整)开始永久性支持IPv6访问。

IPV6和IPV4的对比优势

IPV6地址表示方法

IPV6地址总长度为128bit(即16字节),分为8段,每段为16bit,每段使用16进制数来表示,每段与每段之间使用“:”分隔。

举例:2021:0726:0123:4567:89AB:CDEF:0000:0010/64

IPV6地址压缩表示方法

为了方便记忆以及便于书写,IPV6地址支持地址压缩格式,压缩规则如下:

①每段的前导0可以省略

②地址中包含的连续两个或多个均为0的段,可以用双冒号“::”来代替

举例:

②2021:0726:0000:0000:0123:4567:89AB:CDEF/64

IPV6压缩后的书写格式:

①2021:0726:0123:4567:89AB:CDEF:0:10/64

②2021:0726::0123:4567:89AB:CDEF/64

注意:在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每个“::”代表0的个数

IPV6地址组成的结构

一个IPv6地址由两部分组成:网络前缀和接口标识。

① 网络前缀:n比特,相当于IPv4地址中的网络ID

② 接口标识:128-n比特,相当于IPv4地址中的主机ID

接口标识的生成方式有三种:手工配置、系统通过软件自动生成、IEEE EUI-64规范生成。

①手工配置:一般是管理员手工指定接口ID,例如,2021:1111:1111:1111:1111:1111::1/64

注释:该地址的网络前缀2021:1111:1111:1111:1111:1111,接口ID为 ::1,64这个值表示的就是前缀的长度。

② 系统通过软件自动动生成:一般应用于PC的windows系统

③ IEEE EUI-64规范生成

生成如下图:

IPv6地址分为单播地址、任播地址(Anycast Address)、组播地址三种类型。和IPv4相比,取消了广播地址类型,以更丰富的组播地址代替,同时增加了任播地址类型,IPV6单播地址分为未指定地址、环回地址、全球单播地址、唯一本地地址、链路本地地址,特殊地址。

未指定地址

IPv6中的未指定地址即 0:0:0:0:0:0:0:0/128 或者::/128。该地址可以表示某个接口或者节点还没有IP地址,可以作为某些报文的源IP地址(例如在NS报文的重复地址检测中会出现),源IP地址是::的报文不会被路由设备转发。

环回地址

IPv6中的环回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。环回与IPv4中的127.0.0.1作用相同,主要用于设备给自己发送报文。该地址通常用来作为一个虚接口的地址(如Loopback接口)。实际发送的数据包中不能使用环回地址作为源IP地址或者目的IP地址。

全球单播地址

全球路由前缀:由提供商(Provider)指定给一个组织机构,通常全球路由前缀至少为48位。目前已经分配的全球路由前缀的前3bit均为001。

子网ID:组织机构可以用子网ID来构建本地网络(Site),子网ID通常最多分配到第64位,子网ID和IPv4中的子网号作用相似。

接口标识:用来标识一个设备(Host)。

全球单播地址格式如下:

链路本地地址

当一个节点启动IPv6协议栈时,节点的每个接口会自动配置一个链路本地地址,该地址的格式为:固定的前缀+EUI-64规则形成的接口标识,这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信,所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用。

链路本地地址格式如下:

链路本地地址生成的方式有三种:

①当网络设备的忘一个接口配置了一个全球单播地址,会伴随生成一个链路本地地址,生成的方式为:固定前缀+EUI-64

②管理员手工在接口指定一个链路本地地址,配置命令:IPV6 address FE80::1 link-local

③管理员在接口指定一条命令自动生成一个链路本地地址,配置命令:IPV6 address auto link-loacl

唯一本地地址

唯一本地地址是另一种应用范围受限的地址,它仅能在一个站点内使用。类似于IPv4中的私网地址,唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发。前缀固定为FC00::/7,FD00::/8。

唯一本地地址格式如下:

举例:FC33:1111:2222:ABCD::1/64,该地址网络前缀为:FC33:1111:2222:ABCD,接口ID为::1。

注意:一般在现网中,私网地址都是用户自己规划配置的,全局标识和子网标识没有实际的意义,因为该地址不在公网进行路由 

IPV6组播地址

IPv6的组播与IPv4相同,用来标识一组接口,一般这些接口属于不同的节点,一个节点可能属于0到多个组播组,发往组播地址的报文被组播地址标识的所有接口接收。一个IPv6组播地址由前缀,标志(Flag)字段、范围(Scope)字段以及组播组ID(Global ID)4个部分组成:

前缀:IPv6组播地址的前缀是FF00::/8。

标志字段(Flag):长度4bit,当值为0时,表示当前的组播地址是由IANA所分配的一个永久分配地址;当值为1或者2时,表示ASM范围的组播地址,当值为3时,表示SSM范围的组播地址。

范围字段(Scope):长度4bit,用来限制组播数据流在网络中发送的范围

组播组ID(Group ID):长度112bit,用以标识组播组。目前建议仅使用该112位的最低32位作为组播组ID,将剩余的80位都置0,这样每个组播组ID都映射到一个唯一的以太网组播MAC地址

举例:

FF01::1 ,表示当前节点所有接口地址

FF02::1,表示当前链路所有节点的接口地址

FF02::2,表示当前链路所有路由器的接口地址

FF02::5,表示当前链路所有运行OSPF协议路由器的接口地址

FF05::1,表示当前站点内所有节点的接口地址

FF1X::1111,X为一个变量,取值不能等于1或2,这是一个基于ASM模型的组播地址

FF3X::1111,X为一个变量,取值不能等于1或2,这是一个基于SSM模型的组播地址

注释:以上组播地址所表示的含义我们可以通俗的理解为,当一台网络设备或者设备的某个接口收到一个以以上组播地址为目的IP的报文,设备该如何处理,假设设备可以处理以上组播地址为目的IP的报文,那么处理之后的转发范围如上述所说。简单用一个案例来解释,假设有一台设备收到一份以FF02::5为目的地址的报文,该设备处理的方式为首先判断本机是否加入了FF02::5这个组播组,如果该设备运行OSPFV3的进程,会默认加入FF02::5这个组播组,反之则没有加入,那最终的结果就是丢弃或者接收,接收之后过程此处省略。

被请求节点组播地址

被请求节点组播地址的格式如下:

固定前缀104bit(FF02::1:FF00:0/104)+单播地址的最后24bit

注释:IPv6中取消了广播地址,但是仍然需要从IP地址解析到MAC地址的功能,IPV6的地址仍然需要做地址冲突检测,所以在IPv6中,这个功能通过使用ICMPV6协议中的邻居请求NS(Neighbor Solicitation)报文完成,并且在ICMPV6中取消ARP协议的使用,当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。

注意:被请求节点组播地址的前缀FF02::1:FF00:0/104,这是一个128bit长度的IPV6组播地址的格式,实际前缀为FF02::1:FF。

举例:2012:0727:0123::4567:89AB:CDEF:0001:1111,当我们需要对该地址进行DAD检测时,需要将NS报文发送到该地址对应的被请求节点组播组地址:FF02::1:FF01:1111,

转换的规则为:2012:0727:0123::4567:89AB:CDEF:00对应FF02::1:FF,01:1111补充到后24位。

IPv6中没有为任播规定单独的地址空间,任播地址和单播地址使用相同的地址空间。目前IPv6中任播主要应用于移动IPv6。

IPV6基本报头格式

IPv6基本报头有8个字段,固定大小为40字节,每一个IPv6数据报都必须包含报头。基本报头提供报文转发的基本信息,会被转发路径上面的所有设备解析。

Version:版本号,长度为4bit。对于IPv6,该值为6。

Traffic Class:流类别,长度为8bit,等同于IPv4中的TOS字段,表示IPv6数据报文的分类或优先级,主要应用于QoS。

Flow Label:流标签,长度为20bit。IPv6中的新增字段,用于区分实时流量,不同的流标签+源地址可以唯一确定一条数据流,中间网络设备可以根据这些信息更加高效率的区分数据流。流可以理解为特定应用或进程的来自某一源地址发往一个或多个目的地址的连续单播、组播或任播报文。IPv6中的流标签字段、源地址字段和目的地址字段一起为特定数据流指定了网络中的转发路径。这样,报文在IP网络中传输时会保持原有的顺序,提高了处理效率。随着三网合一的发展趋势,IP网络不仅要求能够传输传统的数据报文,还需要能够传输语音、视频等报文。这种情况下,流标签字段的作用就显得更加重要.

Payload Length:有效载荷长度,长度为16bit。有效载荷是指紧跟IPv6报头的数据报的其它部分(即扩展报头和上层协议数据单元)。该字段只能表示最大长度为65535字节的有效载荷。如果有效载荷的长度超过这个值,该字段会置0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示。

Next Header:下一个报头,长度为8bit。该字段定义紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型。

Hop Limit:跳数限制,长度为8bit。该字段类似于IPv4中的Time to Live字段,它定义了IP数据报所能经过的最大跳数。每经过一个设备,该数值减去1,当该字段的值为0时,数据报将被丢弃。

Source Address:源地址,长度为128bit,表示发送方的地址。

Destination Address:目的地址,长度为128bit,表示接收方的地址。

IPV6与IPV4基本报头对比

以上IPV4报头中画斜线的字段都是在IPV6中被取消的,IPV6报头中增加了Flow Lable。

IPV6扩展报头

一个IPv6报文可以包含0个、1个或多个扩展报头,仅当需要设备或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头。与IPv4不同,IPv6扩展头长度任意,不受40字节限制,这样便于日后扩充新增选项,这一特征加上选项的处理方式使得IPv6选项能得以真正的利用。但是为了提高处理选项头和传输层协议的性能,扩展报头总是8字节长度的整数倍。

IPv6扩展报头出现的规则顺序

当超过一种扩展报头被用在同一个分组里时,报头必须按照下列顺序出现:

IPv6基本报头

逐跳选项扩展报头

目的选项扩展报头

路由扩展报头

分段扩展报头

认证扩展报头

封装安全有效载荷扩展报头

目的选项扩展报头

上层协议数据报文

路由设备转发时根据基本报头中Next Header值来决定是否要处理扩展头,并不是所有的扩展报头都需要被转发路由设备查看和处理的。除了目的选项扩展报头可能出现一次或两次(一次在路由扩展报头之前,另一次在上层协议数据报文之前),其余扩展报头只能出现一次。以下为部分扩展报头截图:

IPV6 NDP

邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARP和ICMP路由器发现(Router Discovery),NDP使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。

1、重复地址检测

IPv6重复地址检测技术和IPv4中的免费ARP类似:节点向试验地址所对应的Solicited-Node组播组发送NS报文。NS报文中目标地址即为该试验地址。如果收到某个其他站点回应的NA报文,就证明该地址已被网络上使用,节点将不能使用该试验地址通讯。具体过程如下: 

2、跟踪邻居状态

在IPV6中,不再使用ARP协议,使用ICMPV6协议替代,IPv6不同于IPv4使用ARP表来缓存IP与MAC地址的映射,而是每一个IPV6网络节点维护一张IPv6邻居表,该表象定义了5种状态,通过各种状态之间的迁移来反映当前链路通信实际情况,该邻居表的主要作用就是用来缓存IPV6与MAC地址的映射关系,通过状态之间的迁移可以加快老化不需要的表项,以及反映当前链路通信的实际情况,从而有效节约设备缓存的消耗。

RFC2461中定义了5种邻居状态,分别是:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe),其中Empty表示邻居表项为空,邻居状态之间具体迁移过程如下图:

过程描述:

④在Probe状态时,R1每隔一定时间间隔(默认1s)发送单播NS,发送固定次数后(3次),如果收到R2的NA应答,则邻居状态变为Reachable,否则邻居状态变为Empty,并且删除表项。

在IPV6中,邻居表可以通过命令display ipv6 neighbors 来查看邻居表的状态,表项如下:

注释:在IPV6中,IPV6的邻居表也是采用老化机制进行更新,默认时间为20分钟,即1200秒。该时间可以通过命令修改,命令如下

在系统视图下执行命令ipv6 nd stale-timeout 1200(单位秒),配置邻居表项在Stale状态的老化时间。

注意:IPV6中,追踪邻居状态时,邻居状态由incomplete迁移到reachable时就是地址解析的一个全过程。

3、地址解析

在IPv4中,当主机需要和目标主机通信时,必须先通过ARP协议获得目的主机的链路层地址。在IPv6中,主机互访同样需要获得目的主机的链路层地址,IPV6通过邻居发现协议实现了这个功能。在IPV6地址解析过程中使用了两种ICMPv6报文:分别为邻居请求报文NS(Neighbor Solicitation)和邻居通告报文NA(Neighbor Advertisement)。具体实现过程如下:

4、路由器发现

RS(Router Solicitation,路由器请求)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送ICMPV6(RS)报文,网络上的设备将回应RA报文。RS报文的Type字段值为133。

路由器发现过程分为两种:

①主机发送RS触发路由器回应RA

②路由器周期发送RA

路由器周期性的发送RA报文,RA发送间隔是一个有范围的随机值,缺省的最大时间间隔是600秒,最小时间间隔是200秒。

路由器发现是无状态自动配置的前提,IPV6地址无状态自动配置过程如下:

由于模拟器中的PC不支持的缘故,所以使用路由器模拟PC

如下图:

Managed address configuration:M位默认为0时,收到该RA的主机使用RA中包含的IPv6前缀用于无状态地址自动配置。

使用如下命令,可将该值设置为1,ipv6 nd autoconfig managed-address-flag 当该值为1时,收到该RA的主机将采用有状态自动配置,也就是DHCPv6的方式来获取IPv6地址。

Other Configuration:O位默认为0,表示主机不应该使用有状态自动配置机制来配置除了IPv6地址外的其他参数。

总结:M=1,O=1,表示有状态自动配置,即DHCPV6自动配置,并且DNS、域名等信息也需要通过DHCPV6来配置

M=1,O=1,表示有状态自动配置,即DHCPV6自动配置,O=1或者0可以忽略,因为DHCPV6可以返回所有配置信息。

M=0,O=0,表示无状态自动配置,没有任何信息是需要通过DHCPV6来配置的。

M=0,O=1,表示无状态自动配置,除IPV6地址外,其他信息需要通过DHCPV6来配置。

Router Lifetime:1800,单位是秒,主机将路由器视为缺省路由器的时间。该计时器到计数为0时,该路由器将不会出现在主机的缺省网关列表中。收到RA报文会更新该计时器,执行命令 ipv6 nd ra router-lifetime 1800 配置RA报文的存活时间

Router Preference: RA报文中的默认路由器优先级信息,当主机收到多份RA报文时,可以通过该字段区分进行优选,该字段包含三个值如下:high 高| medium中 | low低,可以通过命令修改:IPV6 nd ra preference { high | medium | low }

On-Link Flag (L):L比特位(RFC2461),默认为1。表示在RA消息中的前缀是分配给本地链路的。因此,向包含这个指定前缀的地址发送数据的节点认为目的地是本地链路可达。可以使用如下命令设置为0:ipv6 nd ra prefix 2001:: 64 off-link

Autonomouns Addr-conf flag (A):A比特位(RFC2461),默认为1,表示本地链路的主机可以使用该前缀进行无状态自动配置,如果为0,则不能用于无状态自动配置。使用如下命令将该比特位设置为0:ipv6 nd ra prefix 2001:: 64 no-autoconfig

Valid Lifetime: 原有通讯的有效时间,默认秒(30),表示在该时间内由无状态自动配置生成的地址可以保证原有的通讯连接,超时后,该地址将变为不可用。

Preferred Lifetime: 发起新通讯的有效时间,默认秒(7天),表示在此时间内由无状态自动配置生成的地址保有优先权,优先用该地址作为默认网关,如果超时,将不可以建立新的通讯,注意,此字段的值不能超过Valid Lifetime字段的值,以避免优先的地址不再合法。

注意:当存在以下情况将会忽略路由器发送的RA报文。

1>RA报文选项中的“auto”未置位

注释:auto未知,主机收到该报文会忽略,不会使用该RA的前缀。

2>前缀与已有地址前缀重复(包括link-local地址)

注释:如果当前主机收到的RA报文中的前缀后当前自己拥有的前缀相同,将忽略收到的RA报文。

3>RA报文选项中的“preferred lifetime”时间大于 “ valid lifetime ”。

注释:优选生存时间必须要小于有效生存时间。

4>前缀长度与接口ID长度之和不等于128位。

注释:如果路由器发送的RA报文中所携带的前缀不等于64位将会导致配置失败,因为主机生成的接口ID只有64位。

④主机根据收到的RA报文中的前缀信息和自己接口标识生成IPv6全球单播地址(或者唯一本地地址)。注意:如果收到一台主机收到来之不同路由器的多份RA报文时,先比较优先级,优先级高的路由器将会配选为默认路由器,并且使用该路由器发送的RA报文中的前缀信息进行配置,并使用配置后的单播地址进行发起通信,优先级低的路由器发送的RA报文中的前缀也会被选用,并作为备用地址。如果优先级相同,则采用先到先得的原则进行配置。如下图:

至此无状态地址自动配置完成,如需其他信息可以通过DH进行配置。

5、重定向

当网关设备发现报文从其它网关设备转发更好,它就会发送重定向报文告知报文的发送者,让报文发送者选择另一个网关设备。重定向报文也承载在ICMPv6报文中,其Type字段值为137,报文中会携带更好的路径下一跳地址和需要重定向转发的报文的目的地址等信息。如下图:

重定向过程如下:

① PC1需要和PC3通信,PC1的网关设置为AR2,PC1进行与运算后发现与PC3不在同网段,于是将报文向网关AR2转发。

② AR2收到PC1发送的报文后,发现该报文满足重定向的要求,于是向PC1发送type类型为137的ICMPV6的重定向报文,报文中主要内容为目的网络(PC3),以及去往PC3的最优下一跳(AR3)。

③ PC1收到重定向报文后,会在路由表中添加一条去往PC3的路由,下一跳为AR3。之后访问PC3的数据包都会转发给AR3。

触发重定向的条件:

① 报文的目的地址不是一个组播地址。

② 报文并非通过路由转发给设备。

③ 经过路由计算后,路由的下一跳出接口是接收报文的接口。

④ 设备发现报文的最佳下一跳IP地址和报文的源IP地址处于同一网段。

⑤ 设备检查报文的源地址,发现自身的邻居表项中有用该地址作为全球单播地址或链路本地地址的邻居存在。

Path MTU

PMTU协议是通过ICMPv6报文中type为2的Packet Too Big报文来实现的。首先源节点假设PMTU就是其出接口的MTU,发出一个试探性的报文,当转发路径上存在一个小于当前假设的PMTU时,转发设备就会向源节点发送Packet Too Big报文,并且携带自己的MTU值,此后源节点将PMTU的假设值更改为新收到的MTU值继续发送报文。如此反复,直到报文到达目的地之后,源节点就能知道到达目的地的PMTU了。如下图:

源节点接收到之后会将报文重新按照PMTU为1400进行分片并再次发送一个分片报文,当分片报文到达MTU值为1300的出接口时,同样返回Packet Too Big错误,携带MTU值为1300的信息。之后源节点重新按照PMTU为1300进行分片并发送分片报文,最终到达目的地,这样就找到了该路径的PMTU。

总结:以上为IPV6基本原理,包括内容有IPV6编址技术,IPV6报文基本格式,IPV4与IPV6功能对比,IPV6 NDP协议,PMTU发现机制。

到此这篇ipv6组播报文(ipv6组播地址标志字段长度为多少)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 星露谷物黄金钟是什么(星露谷物语黄金钟获得)2025-06-22 16:27:05
  • 越狱源搭建源码(越狱源在线工具箱)2025-06-22 16:27:05
  • tkdd期刊(tkdd期刊怎么样)2025-06-22 16:27:05
  • 苹果电脑装双系统(苹果电脑装双系统好用吗)2025-06-22 16:27:05
  • ubuntu 源设置(ubuntu20源)2025-06-22 16:27:05
  • udp发送广播包(udp 广播报文)2025-06-22 16:27:05
  • linux修改文件权限为可读写(linux修改文件权限为可执行)2025-06-22 16:27:05
  • u盘启动盘怎么制作win7(u盘制作win7系统启动盘)2025-06-22 16:27:05
  • 游戏的分类标准是什么 继续教育(游戏分类的标准是什么多选题公需课)2025-06-22 16:27:05
  • 越狱源中文源2024(2020最新越狱源中文)2025-06-22 16:27:05
  • 全屏图片