写点什么

IPv6 报文头深度解析

  • 2022 年 8 月 14 日
    北京
  • 本文字数:1759 字

    阅读完需:约 6 分钟

IPv6报文头深度解析

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 的扩展报文头之后还有数据,那么这些数据在转发过程中应该被透传,不能被改变。

发布于: 刚刚阅读数: 5
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
IPv6报文头深度解析_ipv6_穿过生命散发芬芳_InfoQ写作社区