先决条件– Internet协议版本6(IPv6)标头
在IPv4中,只要需要,就可以在目标位置或路由器处进行分段,而在IPv6中,仅源可以进行分段,而路由器则不可以。仅当源知道路径最大传输单位(MTU)时才能执行此操作。在IPv6中,“不分段”位始终为1,而IPv4中的大小写不相同,而“更多分段”位仅是分段头中的标志位,为1位。保留两位供将来使用,如下图所示。
Internet协议版本6碎片标头–
- 下一个标题–
下一个报头是一个8位字段,用于标识在Fragmentation报头之后出现的报头类型。 - 预订的 –
它是一个8位字段,到现在为止完全为零。将来,我们可能会在这里找到有用的内容。同样,保留了一个额外的2位字段供以后使用。 - 片段偏移–
它与大小为13位的IPv4完全相同。就像我们扩大了IPv4中的片段偏移一样,我们在IPv6中也是如此。 - 更多片段(M)–
此处更多的片段位用“ M”表示。这是一个一位的字段,它告诉我们后面是否还有更多的片段。如果更多的分片位为零,则表示它的最后一个分片;如果为1,则它可以是除最后一个分片外的任何数据包。 - 识别号–
与特定数据包的所有片段相同的标识号字段的大小是IPv4的两倍。在数据包标识符字段中为32位,在IPv4中字段为16位。
IPv6发送方可能会在源头执行分段操作,因为IPv6路由器无法执行分段操作,因此,如果数据包太大而无法进行下一跳,路由器将生成ICMP数据包,以使源知道该数据包太大。
分段头通过支持1280字节的最小数据包大小,尝试尽可能减少分段的使用。如上图所示,如何根据发送方知道的MTU进行分段。
IPv6和其他扩展头是不可分割的部分,因为每个片段都必须经过节点或路由器,并且在每个路由器上,都需要存储在这些扩展头中的信息。这就是为什么IPv6数据包分为两部分的原因。一个是不可分割的部分,另一个是可分割的部分。不可分割的部分在它们之间没有任何修改,而另一个可分割的部分则分为许多小片段,例如片段1,片段2,依此类推。
创建小片段后,将片段头和特定片段(作为片段1)连接到不可片段化的部分,并将其发送到目标。分片后和添加分片标头后,有效载荷长度可能会发生变化,例如下一个标头,标识号,分片偏移和相应的更多分片位将被适当填充。