IPv6 地址头
IPv6 的奇妙之处在于它的标头。IPv6 地址比 IPv4 大 4 倍,但令人惊讶的是,IPv6 地址的标头仅比 IPv4 大 2 倍。IPv6 标头具有一个固定标头和零个或多个可选(扩展)标头。路由器所必需的所有必要信息都保存在固定标头中。扩展头包含可选信息,可帮助路由器了解如何处理数据包/流。
固定标头
IPv6 固定报头长 40 字节,包含以下信息。
序号 |字段|描述 1 |Version (4-bits)|代表Internet协议的版本,即0110。 2 |Traffic Class(8 位)|这 8 位分为两部分。最重要的 6 位用于服务类型,让路由器知道应该向这个数据包提供什么服务。最低有效 2 位用于显式拥塞通知 (ECN)。 3 | Flow Label(20 位)|此标签用于维护属于通信的数据包的顺序流。源标记序列以帮助路由器识别特定数据包属于特定信息流。该字段有助于避免重新排序数据包。它专为流媒体/实时媒体而设计。 4 |有效载荷长度(16 位)|该字段用于告诉路由器特定数据包在其有效载荷中包含多少信息。有效载荷由扩展头和上层数据组成。16位,最多可指示65535字节;但如果 Extension Headers 包含 Hop-by-Hop Extension Header,则有效载荷可能会超过 65535 字节,并且该字段设置为 0。 5 |Next Header (8-bits)|该字段用于指示扩展报头的类型,或者如果扩展报头不存在,则它指示上层 PDU。上层 PDU 类型的值与 IPv4 相同。 6 |Hop Limit (8-bits)|该字段用于阻止数据包在网络中无限循环。这与 IPv4 中的 TTL 相同。Hop Limit 字段的值在它通过链接(路由器/跳)时减 1。当字段达到 0 时,数据包被丢弃。 7 |源地址(128 位)|该字段指示数据包的发起者地址。 8 |目标地址(128 位)|该字段提供数据包的预期接收者的地址。
扩展头
在 IPv6 中,Fixed Header 只包含必要的信息,避免那些不需要或很少使用的信息。所有这些信息都以扩展报头的形式放在固定报头和上层报头之间。每个扩展头由一个不同的值标识。
当使用扩展头时,IPv6 固定头的下一个头域指向第一个扩展标头。如果还有一个扩展标头,则第一个扩展标头的“下一个标头”字段指向第二个,依此类推。最后一个扩展标头的“下一个标头”字段指向上层标头。因此,所有的标头都以链表的方式指向下一个。
如果Next Header字段的值为59,则表示该标头之后没有标头,甚至没有上层标头。
根据 RFC 2460,必须支持以下扩展标头:
扩展标头 | 下一个标头值 | 描述 |
---|---|---|
Hop-by-Hop 可选标头 | 0 | 在传输网络中被所有设备读取 |
路由标头 | 43 | 包含路由决策的方法 |
段标头 | 44 | 包含数据段分段的参数 |
目的地可选标头 | 60 | 被目的设备读取 |
认证标头 | 51 | 认证所需的信息 |
封装的安全有效载荷标头 | 50 | 加密信息 |
扩展标头的顺序如下所示:
这些标头:
- 应由 First 和后续目的地处理。
- 应由最终目的地处理。
Extension Headers以链表的方式依次排列,如下图所示: