IPv6扩展头部

标签: 网络

扩展头部
在IPv6中,那些由IPv4选项提供的特殊功能,通过在IPv6头部之后增加扩展头部实现。路由、时间戳、分片和超大分组等功能都在IPv6扩展头部中实现。基于这种设计,IPv6头部固定为40字节,不再处理IP分段的相关信息,去掉了检验和字段等等,
扩展头在IPV6中是可选的,一个IPV6包中可以包含0个或多个扩展头,扩展头紧随IPV6基本头后面,
扩展头部和更高层协议(例如TCP/UDP) 头部与IPv6头部链接起来,形成级联的头部。如下图:在这里插入图片描述
在这里插入图片描述
扩展头算作IPV6净荷的一部分,计算在IPV6基本头“有效净荷长度”的范围内,目前已经定义和使用的扩展头有以下几种:
逐跳选项头(Hop-by-hop Options Header)
目的选项头(Destination Options Header)
路由头(Routing Header)
分片头(Fragment Header)
认证头(Authentication Header)
封装安全有效载荷头(ESP)
在这里插入图片描述
注:1,除加密头以外,其他扩展头的长度必须是8字节的整数倍,其中“扩展头长度”字段以8字节为单位指明了该扩展头的长度(不包括第一组8字节),如果值是2,16字节,实际计算要加1,即24字节。因为会有0值。
2,IPV6基本头以及扩展头的“下一个头”字段指明紧跟其后的扩展头的类型,

	                			64bit
				|	下一个头	|	扩展头长度  |	各扩展头相关字段 	|

逐跳选项头(Hop-by-hop Options Header)
逐跳头用于传递那些在路径中每个节点都需检测的可选信息,此扩展报头须被转发路径所有节点处理。目前在路由告警(RSVP和MLDv1)与Jumbo帧处理中使用了逐跳选项头。

	                									64bit
				|		下一个头		|		逐跳头长度 	 |		选项【TLV1,TLV2,...TLVn,】 		|
				|							选项【TLVn+1,TLVn+2,...】											|

逐跳头信息部分可以包含一个或多个TLV(类型—长度—值)选项,
TLV选项的格式如图4所示。

	                	8bit					8bit
				|		选项类型		|		选项数据长度 	 |		选项数据		|

目的选项头(Destination Options Header)
本扩展报头类型值为60。:
目的选项头的格式和逐跳头完全相同,区别在于前者针对的是目的节点,而后者针对的是传送路径中的每个节点。

  1. 路由头前,这是此选项头被目的节点和路由头中指定的结点处理;
  2. 上层头前(任何的ESP头后),此时只能被目的结点处理。
    移动IPv6中使用了目的选项头,称为家乡地址选项。家乡地址选项由目的选项头携带,用以移动结点离开“家乡”后通知接受节点此移动结点对应的家乡地址。接受节点收到带有家乡地址选项的报文后,会把家乡地址选项中的源地址(移动节点的家乡地址)和报文中源地址(移动节点的转交地址)交换,这样上层协议始终认为是在和移动节点的家乡地址通信,实现了移动漫游功能。

路由头(Routing Header)
本扩展报头类型值为43,用于源路由选项和移动IPv6。
为发送方提供了一种IPv6数据报控制机制,以控制(至少部分控制)数据报通过网络的路径。

在这里插入图片描述
注意的是包含了路由头的IPV6包在路由过程中是需要不断修改IPV6基本头中的目的地址的,比如源节点S给目的节点D发送一个包,要求这个包经过中间节点L1,L2和L3.那么在从S到L1的这段路径中,IPV6头中的目的地址应该是L1而不是D。

分片头(Fragment Header)
本扩展报头类型值为44,用于标识数据报的分段,在IPv4中就有对应的字段。当源节点发送的报文超过传输链路MTU(源节点和目的节点之间传输路径的MTU)时,需要对报文进行分段时使用。
在这里插入图片描述
分段头的大小为固定的8字节(64bit),因此,“扩展头长度”这一字段(图中“保留”部分)就没有意义了,传输时初始化为零。
RES:2bit,保留字段
M:标记位,M=1 表示还有分段,M=0表示该分段是最后一个分段,
分段标识:32bit,同一个包的所有分段必须具有相同的分段标示,每个分段单独发送,并且在接受者处进行重组。
IPV6的原包称为“原始数据报”,可以分为两部分:“不可分片部分”+“可分片部分”,不可分片部分包括IPV6基本头部,以及那些必须由路由中的节点处理的扩展首部(逐跳和路由头),不可分段部分必须被包含在包的每个分段中。

前者包括IPv6头部和任何在到达目的地之前需由中间节点处理的扩展头部(即包括路由头部之前的所有头部,如果有逐条选项扩展头部,则是该头部之前的所有头部)。后者包括数据报的其余部分(即目的地址选项头部、上层头部和有效载荷数据)。
IPV6的分段和重组:
当目的节点收到包的第N个分段(指最后一个分段,即M=0)的时候,
计算原包的有效负载长度,
计算公式:包的有效负载长度=L+8*Pn+Dn,
其中L为不可分段的扩展头长度,
PN为第N个分段的偏移量,Dn为第N个分段的数据部分长度。
数值L通常在收到第一个分段的时候就被计算出来了,计算公式:L=第一个分段的有效载荷长度-第一个分段包中分段头后面的数据长度-8。

认证头(Authentication Header)
目的是用来增加IP数据报的安全性,AH协议提供无连接的完整性,数据源认证和抗重放保护服务。

封装安全有效载荷头(ESP)
本扩展头类型值为50,用于IPSec,提供报文验证、完整性检查差和加密。

本文参考:
<<IPv6扩展头格式详解与应用分析>>
链接:https://blog.csdn.net/qq_37653144/article/details/80628045

版权声明:本文为linuxGc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/linuxGc/article/details/106354860