解析IPv6报文结构

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析DNS,个人版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【7月更文挑战第1天】IPv6报文结构包括基本头和可选的扩展头,基本头固定40字节,含8个字段,不支持分片,提升了处理效率。扩展头灵活处理选项,长度为8字节的倍数,可包含如路由、分片、认证和安全封装等信息。多个扩展头按特定顺序排列,目的选项头可出现两次。

IPv6报文由IPv6基本报文头、IPv6扩展报文头以及上层协议数据单元3部分组成。上层协议数据单元一般由上层协议报文头和它的有效载荷构成,上层协议数据单元可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。


1、IPv6基本报文头

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

IPv6基本报文头主要字段的说明:

IPv4和IPv6的报文头对比:

和IPv4相比, IPv6去除了分片、校验和、选项等相关字段,只增加了流标签字段,简化了 IPv6报文头的处理,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展报文头的概念,新增选项时不必修改现有结构就能做到,理论上可以无限扩展,在保持报文头简化的前提下,还具备了优异的灵活性。

2、IPv6扩展报文头

在IPv4中,IPv4报文头包含可选字段Options,内容涉及Security、Timestamp和Record Route等,这些Options可以将IPv4报文头长度从20 Byte扩充到60Byte。在转发过程中,处理携带这些Options的IPv4报文会占用设备很多的资源,因此实际中也很少使用。


与IPv4不同, IPv6扩展报文头长度不受40 Byte 的限制,这样便于日后新增选项,这一特征加上选项的处理方式,使得 IPv6选项能被真正地使用。但是为了提高处理选项头和传输层协议的性能,扩展报文头总是8Byte 长度的整数倍。


IPv6扩展报文头主要字段的说明:

3、IPv6扩展报文头的排列顺序

当超过一种扩展报文头被用在同一个IPv6报文里时,报文头推荐按照下列顺序出现:

  • IPv6基本报文头(IPv6 Header);
  • 逐跳选项扩展报文头(Hop-by-Hop Options Header);
  • 目的选项扩展报文头(Destination Options Header);
  • 路由扩展报文头(Routing Header);
  • 分片扩展报文头(Fragment Header);
  • 认证扩展报文头(Authentication Header);
  • 封装安全有效载荷扩展报文头(Encapsulating Security Payload Header);
  • 目的选项扩展报文头(Destination Options Header,指那些将由IPv6报文的最终目的地处理的选项);
  • 上层协议报文(Upper-Layer Header)


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


  1. 逐跳选项扩展报文头

逐跳选项扩展报文头用来携带需要由转发路径上的每一跳路由器处理的信息。它的Next Header协议号为0。一个逐跳选项扩展报文头的Value区域是由一系列的Options区块构成的,这让它可以承载多份不同种类的信息。

  1. 目的选项扩展报文头

目的选项扩展报文头用于携带需要由当前目的地址对应的节点处理的信息。该节点可以是报文的最终目的地,也可以是源路由方案中的Endpoint节点。目的选项扩展报文头的Next Header协议号为60,报文头的格式及要求与逐跳选项扩展报文头一致。

  1. 路由扩展报文头

路由扩展报文头用来指明一个报文在网络内需要依次经过的路径点,用于源路由方案。报文发送者或网络节点将路由扩展报文头放入报文中,后续的网络节点读取路由扩展报文头中的节点信息,将报文依次转发到指定的下一跳节点(Endpoint节点),并最终转发到目的地。路由扩展报文头可以使报文按照指定的转发路线行进,而不使用默认的最短路径。

  1. 分片扩展报文头

当一个应用层报文的长度超过了路径MTU时,就需要在网络层对该报文进行分片传输和接收重组。分片扩展报文头携带了各个分片的识别信息,其功能与IPv4报文头中与分片相关的字段相同。IPv6只允许报文发送者对报文进行分片,不允许路由器在中途将报文分片。

  1. 认证扩展报文头

认证扩展报文头通常用于IPsec,能提供3种安全功能:无连接的完整性验证、IP报文来源认证和重放攻击防护。在RFC 4302中定义了报文头处理过程 。认证扩展报文头的Next Header协议号为51。

  1. 封装安全载荷扩展报文头

封装安全载荷扩展报文头通常用于IPsec,能提供无连接的完整性验证、数据来源认证、重放攻击防护以及数据加密等安全功能 。封装安全载荷扩展报文头的Next Header协议号为50。此外,当IPv6报文头或扩展报文头之后没有任何数据了,Next Header字段值需要设为59。如果IPv6报文头的Payload Length表明在Next Header为59的扩展报文头之后还有数据,那么这些数据在转发过程中应该被透传,不能被改变。

相关文章
EMQ
|
2月前
|
Linux 网络性能优化
MQTT 5.0 报文解析 03:SUBSCRIBE 与 UNSUBSCRIBE
在 MQTT 中,SUBSCRIBE 报文用于发起订阅请求,SUBACK 报文用于返回订阅结果。而 UNSUBSCRIBE 和 UNSUBACK 报文则在取消订阅时使用。相比于取消订阅,订阅操作更加常用。不过在本文中,我们仍然会一并介绍订阅与取消订阅报文的结构与组成。
EMQ
270 4
MQTT 5.0 报文解析 03:SUBSCRIBE 与 UNSUBSCRIBE
EMQ
|
2月前
|
运维 Linux 网络性能优化
MQTT 5.0 报文解析 05:DISCONNECT
在 MQTT 中,客户端和服务端可以在断开网络连接前向对端发送一个 DISCONNECT 报文,来指示连接关闭的原因。客户端发送的 DISCONNECT 报文还可以影响服务端在连接断开后的行为,例如是否发送遗嘱消息,是否更新会话过期间隔。
EMQ
29 0
MQTT 5.0 报文解析 05:DISCONNECT
|
2月前
|
域名解析 缓存 网络协议
【域名解析DNS专栏】IPv6与DNS:兼容性挑战与解决方案
【5月更文挑战第29天】随着IPv6逐渐成为互联网主流,DNS面临兼容性挑战,包括解析机制差异、资源记录类型扩展和查询流程优化。为解决这些问题,可采取升级DNS系统以支持IPv6、部署双栈DNS服务和优化DNS缓存策略。通过这些措施,可确保IPv6环境下的域名解析顺利进行。
【期末不挂科-单片机考前速过系列P6】(第六章:10题速过定时计数器的结构和工作方式例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P6】(第六章:10题速过定时计数器的结构和工作方式例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P7】(第七章:11题速过串行口基本概念/结构/工作方式/双机通信例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P7】(第七章:11题速过串行口基本概念/结构/工作方式/双机通信例题)经典例题盘点(带图解析)
EMQ
|
28天前
|
安全 开发工具 数据安全/隐私保护
MQTT 5.0 报文解析 06:AUTH
MQTT 5.0 引入了增强认证特性,它使 MQTT 除了简单密码认证和 Token 认证以外,还能够支持质询/响应风格的认证。为了实现这一点,它在原先 CONNECT 和 CONNACK 报文的基础上,又引入了 AUTH 报文来实现任意多次的认证数据交换,以支持各种不同类型的认证机制,例如 SCRAM、Kerberos 认证等等。
EMQ
232 2
MQTT 5.0 报文解析 06:AUTH
|
5天前
|
机器学习/深度学习 存储 算法
技术好文:ttf文件结构解析
技术好文:ttf文件结构解析
12 0
EMQ
|
2月前
|
JSON Linux 网络性能优化
MQTT 5.0 报文解析 02:PUBLISH 与 PUBACK
本文将介绍在 MQTT 中用于传递应用消息的 PUBLISH 报文以及它的响应报文。不管是客户端向服务端发布消息,还是服务端向订阅端转发消息,都需要使用 PUBLISH 报文。决定消息流向的主题、消息的实际内容和 QoS 等级,都包含在 PUBLISH 报文中。
EMQ
125 2
MQTT 5.0 报文解析 02:PUBLISH 与 PUBACK
EMQ
|
2月前
|
开发工具
MQTT 5.0 报文解析 04:PINGREQ 与 PINGRESP
除了用于连接、发布和订阅的控制报文,MQTT 还有一类报文用于在客户端和服务端之间模拟心跳,以达到保持连接的目的,它们分别是 PINGREQ 报文和 PINGRESP 报文,我们通常也会称它们为心跳报文。
EMQ
154 0
MQTT 5.0 报文解析 04:PINGREQ 与 PINGRESP
EMQ
|
2月前
|
Linux 网络性能优化 数据安全/隐私保护
MQTT 5.0 报文解析 01:CONNECT 与 CONNACK
如果我们想要使用 MQTT 进行通信,第一步必然是建立一个 MQTT 连接,而建立 MQTT 连接需要用到两个控制报文,它们分别是 CONNECT 报文与 CONNACK 报文。CONNECT 报文是客户端与服务端建立网络连接后,向服务端发送的第一个控制报文,用来发起连接请求。服务端将返回 CONNACK 报文告知客户端连接结果。
EMQ
629 0
MQTT 5.0 报文解析 01:CONNECT 与 CONNACK

推荐镜像

更多