📜  IPv6 分片头

📅  最后修改于: 2021-09-27 14:48:01             🧑  作者: Mango

先决条件 – Internet 协议版本 6 (IPv6) 标头
在 IPv4 中,在需要时在目的地或路由器上进行分片,而在 IPv6 中,只有源应该进行分片,而不是路由器。这只能在源知道路径最大传输单元 (MTU) 时完成。在 IPv6 中,“不分片”位始终为 1,其中 IPv4 中的情况不同,“更多分片”位仅是分片标头中的一位标志。如下图所示,保留两位供将来使用。

Internet 协议版本 6 分段报头 –

  • 下一个标题 –
    Next Header 是一个 8 位字段,用于标识 Fragmentation 标头之后出现的标头类型。
  • 预订的 –
    它是一个 8 位字段,目前完全为零。将来,我们可能会在这里找到一些有用的东西。同样,一个额外的 2 位字段被保留用于以后的目的。
  • 片段偏移 –
    它与大小为 13 位的 IPv4 完全相同。正如我们在 IPv4 中扩大片段偏移所做的那样,我们将在 IPv6 中做同样的事情。
  • 更多片段 (M) –
    这里更多的片段位用“M”表示。它是一个 1 位字段,告诉我们它后面是否还有更多的片段。如果更多片段位为零,则表示它的最后一个片段,如果为 1,则它可以是除最后一个之外的任何数据包。
  • 身份证号码 –
    对于特定数据包的所有片段都相同的标识号字段的大小是 IPv4 中的两倍。在数据包标识符字段中为 32 位,在 IPv4 中为 16 位。

IPv6 发送方可能在源端进行分片,因为 IPv6 路由器无法进行分片,因此如果下一跳的数据包过大,路由器将生成一个 ICMP 数据包,让源知道数据包过大。

分段报头通过支持 1280 字节的最小数据包大小来尽可能地减少分段的使用。如上图所示,根据发送方知道的 MTU 分片是如何发生的。

IPv6和其他的扩展报头是不可分段的部分,因为每个片段都必须经过节点或路由器和存储在这些扩展所需的头部每个路由器的信息。这就是 IPv6 数据包分为两部分的原因。一个是不可分割的部分,另一个是可分割的部分。不可分片的部分中间没有发生任何修改,可分片的另一部分被分成许多小片段,如片段1、片段2等。

在创建小片段后,片段头和特定片段(如片段 1)连接到不可分片部分并发送到目的地。分片后有效载荷长度可能会发生变化,并且在添加分片头后,相应的字段如下一个头,标识号,分片偏移量,以及适当填充更多分片位。