IPv6的头部结构是该协议的关键特性之一,它与IPv4相比具有更大的地址空间,但头部只增加了相对较小的大小。IPv6头部包括固定报头和可选的扩展报头,这些头部提供了路由和处理数据包所需的信息。
固定标题
IPv6固定报头的长度为40字节,包括以下字段和信息:
- 版本 (4位): 表示使用的IPv6版本,始终为0110。
- 流量类 (8位): 包括服务类型的6位字段,用于指示路由器如何处理数据包,以及2位的显式拥塞通知 (ECN) 字段。
- 流标签 (20位): 用于标识数据包所属的数据流,有助于维护数据包的顺序。
- 有效负载长度 (16位): 用于指示数据包的有效负载长度,包括扩展报头和上层数据。
- 下一个报头 (8位): 指示下一个报头的类型,或者如果没有扩展报头,则指示上层协议类型。
- 跳跃限制 (8位): 类似于IPv4的TTL字段,用于限制数据包在网络中的生存周期。
- 源地址 (128位): 指示数据包的源地址。
- 目标地址 (128位): 指示数据包的目标地址。
扩展头
IPv6的扩展报头包含了额外的信息,这些信息通常在固定报头之后,但在上层数据之前。扩展报头提供了各种可选信息,以帮助路由器处理数据包和数据流。扩展报头的顺序应按照RFC 2460的要求来排列,其中一些必须支持的扩展报头包括:
- Hop-by-Hop选项扩展报头: 包含路由器需要处理的选项,例如源路由和记录路由。
- 目标选项扩展报头: 提供目标节点或下一跳路由器的选项。
- 路由选项扩展报头: 用于源节点和目标节点之间的数据包的特殊路由处理。
- 片段扩展报头: 用于数据包片段的传输和重新组装。
- 认证扩展报头: 用于对数据包进行认证和完整性检查。
- 加密扩展报头: 用于对数据包进行加密。
根据RFC 2460,必须支持以下扩展报头:
扩展报头的顺序应该是:
这些标题:
- 1.应由第一个和后续目的地处理。
- 2.应由最终目的地处理。
这些扩展报头可以按照链表方式连接,一个接一个地排列。在数据包的传输过程中,路由器和节点将根据需要处理这些扩展报头,以确保数据包按照正确的方式路由和处理。扩展报头的存在使IPv6成为一个非常灵活且可扩展的协议。如下图所示: