IPv6数据报格式

IPv6 首部长度固定是 40 字节,没有任何选项,但它可以有扩展头部。

版本(Version) 字段,只占据 4 位即半个字节。它用于标识该数据报的 IP 版本号,对于 IPv6 来说,此值为 6 。通过版本号,路由器能确定如何解释该 IP 数据报的剩余部分。

区分服务(DS) 字段,只占据 6 位。

显式拥塞通知(ECN) 字段,只占据 2 位。

流标签(Flow Label) 字段,占据 20 位。简单来说, IPv6 的“流”指的是互联网络上特定源点到特定终点的一系列数据报,而在这个“流”所经过的路径上的路由器都保证服务质量。所有属于同一个“流”的数据报都有相同的“流”标签。

有效载荷长度(Payload Length) 字段,该字段占据 16 位即两个字节,此字段以字节为单位,该字段用于表示该 IP 数据报的有效载荷长度(不包括基本首部)。因为该字段只占据 16 位,所以 IP 数据报的最大有效载荷长度为 65 535 字节即 64 KB。

下一个首部(Next Header) 字段,占据 8 位即一个字节。下一个首部字段用于说明 IPv6 首部之后其他扩展首部的存在和类型,它们形成一条包括特殊扩展或处理指令的首部链(见下面关于扩展首部的介绍)。也就是说,当 IPv6 没有扩展首部时,该字段相当于 IPv4 的协议字段,指明基本首部后面的数据应该交给 IP 层上面哪个高层协议处理;当 IPv6 有扩展首部时,该字段指明了后面第一个扩展首部的类型。

跳数限制(Hop Limit) 字段,占据 8 位即一个字节。用于设置一个数据报可经过路由器数量的上限,最大跳数为 255 跳,该字段的作用是确保数据报不会永远在网络中循环传输。每经由一台路由器处理数据报时,该字段的值减一。若该字段的值减至 0 ,则该 IP 数据报必须丢弃。

源 IP 地址(Source Address) 字段,该字段表示发送此 IP 数据报的主机接口的 IP 地址。对于 IPv6 来说占据 128 位。

目的 IP 地址(Destination Address) 字段,该字段表示接收此 IP 数据报的主机接口的 IP 地址。对于 IPv6 来说占据 128 位。

扩展首部(Extension Headers) 字段,可以由若干个字段组成,但第一个字段都是 8 位的 下一个首部 字段,该字段指明了在该扩展首部后面是否还有另一个扩展首部,若还有扩展首部,则该字段值为下一个扩展首部的协议值。若没有扩展首部,则该值为 59 ,也就是表示当前首部是这个首部链的结尾。首部链的示例如下图所示。

下表给出了 下一个首部 字段值可能表示的扩展首部或其他协议首部。

首部类型
顺序

IPv6 首部

1

41

逐跳选项(HOPOPT)

2

0

目的地址项

3, 8

60

路由

4

43

分片

5

44

封装安全载荷(ESP)

7

50

认证(AH)

6

51

移动(MIPv6)

9

135

(没有下一个首部)

最后

59

ICMPv6

最后

58

UDP

最后

17

TCP

最后

6

各种其他高层协议

最后

-

除了“逐跳选项”的位置之外(它是强制性的),扩展首部的顺序是建议性的,因此一个 IPv6 实现必须按接收的顺序处理扩展头部。只有“目的地选项”头部可以使用两次,第一次是指出包含在 IPv6 首部中的目的 IPv6 地址,第二次(位置 8 )是关于数据报的最终目的地。在某些情况下(例如使用路由头部),当数据报被转发到最终目的地时, IPv6 首部中的目的 IP 地址字段将会改变。

在 [RFC8200] 中定义了 逐跳选项(Hop-by-Hop Options)路由选择(Routing)分片(Fragment) 鉴别(Authentication) 封装安全有效载荷(Encapsulating Security Payload)目的选项(Destination Options) 六种扩展首部。

数据(Data) 字段,该字段存储 IP 数据报的数据。

Last updated

Was this helpful?