摘要

  • IPv4 选项类型的最高位表示该选项是否复制到所有分片。
  • 取零时选项留在第一个分片;取一时复制到所有分片,但这不保证设备会处理或接受它。

一个数据报,不同的报头

分片会拆分数据,同时生成多个 IPv4 报头。这些报头不必完全相同。RFC 791 规定,某些选项要复制,另一些只保留在第一个分片中。

这条规则写在选项自身的类型字段里。类型八位组由一个复制位、两个类别位和五位选项编号组成。复制位为零,表示分片时不复制;为一,表示复制到所有分片。

因此,后续分片缺少原始报头中的某个选项,并不单凭这一点就构成格式错误。标记为复制的选项则必须出现在分片产生的每个报头中。

传播规则不是分类规则

其余七个位承担不同职责。类别位在历史上区分控制类与调试、测量类;编号标识选项语法。它们都不决定选项是否传播。

RFC 791 将源路由选项和 Security 选项标记为复制。Record Route 与 Timestamp 不复制,只留在第一个分片中。复制位描述的是传播方式,而不是重要性、安全性或处理优先级。

不复制的选项可以留在第一个分片,因为它包含原始数据的开头。复制的选项则表明其状态应随可能独立转发和处理的分片继续存在。

每个分片都有自己的报头

选项集合不同,报头长度也可能不同。删除不复制选项的分片可能拥有更短的 IHL。总长度涵盖该分片自己的报头和数据,而 IPv4 报头校验和只覆盖该分片的报头;两者都不能直接沿用原始数据报的值。

延续至今的规则

RFC 7126 在 2014 年仍采用相同的类型布局:复制、类别和编号。它还说明,设备可能丢弃、忽略或处理带有 IPv4 选项的报文。

复制并不保证设备会解释、接受或安全地处理该选项。它只说明分片过程在本地处理和过滤策略生效前,应把什么放入每个报头。

来源