摘要

  • RFC 791 将 Identification 定义为帮助接收方重新组合分片的发送方数值。
  • RFC 6864 对原子数据报取消了这一语义,只在分片仍可能需要关联时保留它。

相同的 ID,不代表相同的身份

当 DF=1、MF=0 且分片偏移为零时,两个 IPv4 数据报可以合法地携带相同的 Identification 值。这类数据报是原子的:它们没有被分片,路由器也不能再对其分片。因此,重复的 ID 不能证明数据包重复、计数器耗尽或发送方出错。

RFC 791 的原始设计让 Identification 协助重组一个数据报的各个分片。接收方结合源地址、目的地址、协议、Identification 值、MF 标志和分片偏移,在同一重组生命周期内区分不同数据报的片段。

然而,16 位字段只有 65,536 个取值。若要求同一范围内的每个数据报在最大生命周期内都不重复,高速发送会使这种要求变得困难;而不会产生分片的原子数据报并不会带来重组歧义。

RFC 6864 利用现有字段区分两类状态。DF=0、MF=1 或非零偏移表示数据报允许分片或已经带有分片状态,ID 在此仍服务于重组。对于原子数据报,源可以使用任意 ID,检查 IPv4 报头的设备必须忽略它。零并不是专门的“无意义”标记。

这项更新没有删除字段,也没有宣称 IPv4 分片已经不可能。它只是撤回了过宽的承诺:ID 不是通用的唯一包标识、重复检测器或跨路径关联凭据。测量工具若需要关联数据包,必须使用其他证据。顺序递增的模式可以反映某种实现,却不是标准保证。

来源