位偏移 | 0-3 | 4-11 | 12-15 | 16-23 | 24-31 |
---|---|---|---|---|---|
0 | 版本(Version) | 流量类别(Traffic Class) | 流标签(Flow Label) | ||
32 | 载荷长度(Payload length) | 下一报头(Next Header) | 跳数限制(Hop Limit) | ||
64 | 源IP地址(Source IP Address) | ||||
96 | |||||
128 | |||||
160 | |||||
192 | 目标IP地址(Destination IP Address) | ||||
224 | |||||
256 | |||||
288 | |||||
320 | 扩展报头(Extension Headers) |
版本(Version)- 4bits
用于标识IP协议的版本。对于IPv6,该字段固定为值 6。
流量类别(Traffic Class)- 8bits
与IPv4 Header中的区分服务相同
流标签(Flow Label)- 20bits
IPv6 新增且重要的字段,它允许源节点标记一系列需要 IPv6 路由器特殊处理的连续数据包。
一个流通过源地址与非零 Flow Label的组合来唯一标识。如果数据包不属于任何需要特殊处理的流,Flow Label 必须设置为零。源节点为流分配 Flow Label 时,必须从 1 到 FFFFF (十六进制) 范围内随机且均匀地选取新的标签。这种随机分配提高了 Flow Label 作为哈希键的适用性,使路由器能够快速查找与该流相关的缓存状态信息,从而避免对后续字段或扩展报头的重复检查,大幅提升处理速度。
载荷长度(Playload length)- 16bits
指定了 IPv6 数据包的有效载荷长度(扩展报头+协议报头+数据,单位字节)。
与IPv4不同,不包括40 字节 IPv6 基本报头。
允许有效载荷最大达到 65,535 字节。对于超过此限制的巨型数据包(Jumbograms),该字段必须设置为零,而实际的长度则在 Hop-by-Hop Options 扩展报头中定义的 Jumbo Payload 选项中指定。Jumbograms 可携带高达 字节的数据,主要用于超高速数据中心或超级计算机内部。
下一报头(Next Header)- 8bits
它标识了紧跟在当前报头之后的下一个报头类型。这个后继报头可能是一个 IPv6 扩展报头(例如 Fragment Header, 代码 44)或一个上层传输协议报头(例如 TCP, UDP, 或 ICMPv6)。
该字段在功能上取代了 IPv4 的 Protocol 字段,但其作用范围被扩展为支持 EH 链机制。如果 Next Header 指示的是一个扩展报头,则该扩展报头内部将包含另一个 8 位 Next Header 字段,继续指导处理器沿报头链前进,直到到达最终的上层协议。
跳数限制(Hop Limit)- 8bits
Hop Limit 字段定义了数据包可以穿越的最大路由数量。其功能与 IPv4 的 Time to Live (TTL) 字段完全相同 。
当数据包经过每个中间节点(路由)时,Hop Limit 值必须减 1。如果 Hop Limit 减至零,路由器必须丢弃该数据包,并向源节点发送一个 ICMPv6 错误消息,以此机制防止数据包在网络中无限循环。
源IP地址(Source IP Address)
源IPv6 地址
目标IP地址(Destination IP Address)
目标IPv6地址
与IPv4 Header的对比
IPv6 在设计上摒弃了 IPv4 中一些被认为冗余或影响高性能的字段,从而实现了对中间路由器处理的极大简化。
IPv4 字段 | IPv6 状态 | 原理/替代机制 |
---|---|---|
Internet Header Length (IHL) | 移除 | IPv6 报头固定为 40 字节。 |
Header Checksum | 移除 | 因上层协议或链路层已提供校验,故冗余;移除可避免在每跳路径上重新计算校验和,加速转发。 |
Identification, Flags, Fragment Offset | 移动/移除 | 分片功能仅由源节点通过可选的 Fragment Extension Header 执行。 |
Type of Service (ToS) | 替换 | 功能由 Traffic Class 字段替换。 |
Options & Padding | 移动/移除 | 功能由灵活的 IPv6 扩展报头链替换。因固定长度,填充不再需要。 |
Header Checksum(报头校验和)的移除是 IPv6 提升性能的关键举措。在 IPv4 中,由于 TTL 字段在每跳都会被递减,路由器必须重新计算报头校验和,显著降低了转发速度。IPv6 相信数据完整性可以由上层协议(如 TCP、UDP)或链路层协议(FCS)保证,因此移除校验和,极大地减少了路由器在数据包转发路径上的处理负担。
Fragmentation(分片)字段的移除同样重要。在 IPv4 中,分片处理可能发生在路径上的任何路由器。IPv6 将分片控制字段全部移至可选的 Fragment Extension Header 中,并强制规定分片只能由源节点执行。这一改变使得路由器无需浪费资源处理分片逻辑,进一步优化了硬件转发路径。