IPv6 header 报头
IPv6 头字段解释
字段 | 长度 | 含义 |
---|---|---|
Version | 4比特 | 4:表示为IPv4;6:表示为IPv6。 |
Traffic class | 8比特 | 流量类别。该字段及其功能类似于IPv4的业务类型字段。该字段以区分业务编码点(DSCP)标记一个IPv6数据包,以此指明数据包应当如何处理。 |
Flow Label | 20比特 | 流标签。该字段用来标记IP数据包的一个流,当前的标准中没有定义如何管理和处理流标签的细节。 |
Payload length | 16比特 | 该字段表示有效载荷的长度,有效载荷是指紧跟IPv6基本报头的数据包,包含IPv6扩展报头。 |
Next header | 8比特 | 下一报头,该字段指明了跟随在IPv6基本报头后的扩展报头的信息类型。 |
Hop limit | 8比特 | 跳数限制,该字段定义了IPv6数据包所能经过的最大跳数,这个字段和IPv4中的TTL字段非常相似。 |
Source Address | 128比特 | 该字段表示该报文的源地址。 |
Destination Address | 128比特 | 该字段表示该报文的目的地址。 |
Extension Headers | 可变 | 扩展报头。IPv6取消了IPv4报头中的选项字段,并引入了多种扩展报文头,在提高处理效率的同时还增强了IPv6的灵活性,为IP协议提供了良好的扩展能力。当超过一种扩展报头被用在同一个分组里时,报头必须按照下列顺序出现:IPv6基本报头逐跳选项扩展报头(值为0,在IPv6基本报头中定义)目的选项扩展报头(值为60,指那些将被分组报文的最终目的地处理的选项)路由扩展报头(值为43,用于源路由选项和Mobile IPv6)分片扩展报头(值为44,在源节点发送的报文超过Path MTU时对报文分片时使用)授权扩展报头(值为51,用于IPSec,提供报文验证、完整性检查。定义和IPv4中相同)封装安全有效载荷扩展报头(值为50,用于IPSec,提供报文验证、完整性检查和加密。定义和IPv4中相同)上层扩展报头(如TCP/UDP/ICMP等)。不是所有的扩展报头都需要被转发路由设备查看和处理的。路由设备转发时根据基本报头中Next Header值来决定是否要处理扩展头。除了目的选项扩展报头出现两次(一次在路由扩展报头之前,另一次在上层扩展报头之前),其余扩展报头只出现一次。 |
- Payload Data | 可变 | 数据载荷 |
IPv6 Extension Headers 扩展头
IPv6 基本头部定长为 40 字节,扩展头位于 IPv6 基本头后,取代了 IPv4 报头中的选项字段计。
每个 IPv6 数据包可以有 0 个或多个扩展头,每个扩展头长度都是 8 字节的整数倍。
IPv6 的扩展头被当作 IPv6 静载荷的一部分,计算在 IPv6 基本头的 Palyload Length 字段内。
扩展头是可选的,具体格式根据不同的类型而有所不同。只在必要时添加,简化了高性能路由器的设计和实现。
扩展头提供了特殊功能,可以与高层协议头部连接,形成级联的头部结构。
常用的上层协议及对应的 Next Header 值
Next header 值 | 对应的扩展头或高层协议类型 |
---|---|
0 | 逐跳选项扩展头 |
6 | TCP |
17 | UDP |
43 | 路由选择扩展头 |
44 | 分段扩展头 |
50 | ESP 扩展头 |
51 | AH 扩展头 |
58 | ICMPv6 |
60 | 目的选项扩展头 |
89 | OSPFv3 |
IPv6 扩展头排列顺序
IPv6 选项字段是通过形成链式结构的扩展头支持的。
1. 逐跳可选项报头(Hop-By-Hop Options),值为 0(在 IPv6 基本头中定义)
此选项为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段,被转发路径所有节点处理。
路由告警(RSVP 和 MLDv1)通知到转发路径中所有节点
Jumbo 帧(长度超过 65535 的巨型帧)在转发路径中所有节点的正常处理
2. 目的可选项报头(Destination Options),值为 60
此选项可能出现在两个位置:路由头前和上层头前。当目的选项报头出现在路由头前时,该选项头将被目的节点以及路由头中指定的节点处理;而当目的选项报头出现在上层头前时(任何ESP选项之后),该选项头仅能被目的节点处理。
目的选项报头携带了一些只有目的节点才需要处理的信息。Mobile IPv6中使用了目的选项头,其中新增加了一种类型的目的选项头——家乡地址选项头。家乡地址选项头由目的选项头携带,用于在移动节点离开家乡后通知接收节点移动节点对应的家乡地址。当接收节点收到带有家乡地址选项头的报文时,会将家乡地址选项头中源地址(即移动节点的家乡地址)和报文中的源地址(即移动节点的转交地址)交换,从而使得上层协议始终认为与移动节点的家乡地址在通信,实现了移动漫游功能。
3. 路由报头(Routing),值为 43
用于源路由选项和 Mobile IPv6 。通过列出在到达目的地的路径中数据包所要经过的节点列表来提供源路由选择的功能。
路由报头和 IPv4 的 Loose Source and Record Route 选项类似,该报头能够被 IPv6 源节点用来强制数据包经过特定的路由器。
4. 分段报头(Fragment),值为 44
此选项头在源节点发送的报文超过 Path MTU(源和目的之间传输路径的 MTU)时对报文分片时使用。
IPv6 中的分段与 IPv4 有一些重要的不同之处。在 IPv4 和 IPv6 数据包中,当报文长度超过路径 MTU(Path MTU,即源和目的之间传输路径的最大传输单元)时,需要对报文进行分段。然而,IPv6 与 IPv4 不同的是,只有发起该数据包的节点能够对数据包进行分段;而 IPv6 路由器并不会对数据包进行分段。
因此,发起数据包的节点必须通过路径 MTU 发现(PMD,Path MTU Discovery,详见 RFC1191)来获取到达目的地路径上最小的 MTU 值,或者选择永远不发送大于 1280 字节的数据包。根据 IPv6 协议规定,所有支持 IPv6 的链路都必须能够支持最小大小为 1280 字节的数据包。因此,如果可以选择的话,发起数据包的节点可以利用最小长度选项来避免使用 PMD。
和 IPv4 类似,IPv6 报文发送也受到 MTU 的限制。当报文长度超过 MTU 时就需要将报文分段发送,而在 IPv6 中,分段发送使用的是分段报头。
5. 认证报头(AH,Authentication Header),值为 51
用于 IPSec,提供报文验证、完整性检查以及重放保护。它还对 IPv6 基本报头中的一些字段进行保护。定义和 IPv4 中相同。
6. 封装安全有效载荷报头(ESP,Encapsulation Security Payload),值为 50
用于 IPSec,提供报文验证、完整性检查和加密以及重放保护。定义和 IPv4 中相同,类似于认证报头。
7. 上层报头,上层协议头
如 TCP / UDP / ICMP 等,目的选项头最多出现两次(一次在路由头前,一次在上层协议头前),其它选项头最多出现一次。但 IPv6 节点必须能够处理选项头(逐跳选项头除外,它固定只能进随基本头之后)的任意出现位置和任意出现次数,以保证互通性。
IPv6 扩展报头规约
-
扩展报头必须按下图排列的顺序出现。
-
除目的选项报头外,每种扩展报头只能出现一次。
-
目的选项报头最多出现两次,一次出现在路由报头之前,一次出现在上层协议数据报文之前;如果没有路由报头,则只能出现一次。