摘要
- Identification 的必要职责,是让接收端把同一 IPv4 数据报的碎片重新归组;早期规范却把唯一性要求扩展到了所有数据报。
- 16 位空间会在旧碎片退出重组窗口之前回绕,顺序计数还可能泄露活动,因此字段承担的通用身份承诺既难兑现也带来额外风险。
- RFC 6864 要求所有设备忽略原子数据报的 ID,但对允许分片或已经分片的非原子数据报继续维持唯一性义务。
碎片需要一个共同名字
RFC 791 允许网关把过大的数据报拆开,以穿过 MTU 更小的网络。目的端若要恢复原报文,就必须判断哪些碎片属于同一次发送。
Identification 提供共同编号,Fragment Offset 表示位置,MF 表示后面还有碎片,DF 则禁止分片。重组键还包括源地址、目的地址与上层协议。因此,这个编号并不是应用事务号,也不天然代表 TCP 段或用户请求;它只需在可能同时存活的碎片集合之间避免混淆。
问题在于,该字段固定存在于所有 IPv4 首部。一个随处可见的值,很容易被理解成通用的包身份。
便利的推论变成了额外承诺
早期规则要求,同一源地址、目的地址与协议组合中的每个数据报,在最大数据报寿命内使用不同 ID。RFC 1122 还记录过两种设想:网关可借此消除重复报文,重传也可沿用旧 ID,让两次发送的碎片互相补全。
这些用法把重组标签变成了普遍身份服务。发送端即使设置 DF、确保报文不会被分片,也要维持编号状态;诊断工具与中间盒则可能把连续值当作顺序、设备或流量证据。
低速时代看似廉价的承诺,在高速链路上首先败给算术。
回绕速度快过碎片消失速度
16 位只有 65,536 种取值。安全复用的关键不是计数器有没有走完一圈,而是旧碎片是否已经不可能进入同一个重组缓存。
RFC 4963 描述了高速条件下的错组风险:若两个已分片数据报在旧碎片仍存活时重复 ID,接收端可能把不同原报文的片段拼到一起。上层校验、丢包与时序会决定结果是丢弃、破坏还是性能下降。
这不等于“高速的完整包都会损坏”。危险需要分片与重叠的重组寿命。也正因为如此,让永远不会分片的包消耗同一套严格身份空间,没有改善重组安全。
RFC 6864 按 1500 字节 MTU 与两分钟寿命估算,旧式“所有数据报都唯一”的规则,会把一个端点对、一个协议的速度约束在 6.4 Mbps 左右。这个数字取决于假设,不是普遍阈值;它说明的是规范承诺已经落后于普通运行速度。
可预测不等于可依赖
递增计数器实现简单,却让远端观察者有机会比较两次探测之间的增量,推测主机活动或识别实现。在特定可达性、诱发分片与地址知识条件下,可猜测的分片 ID 也能支持离路径攻击。
RFC 7739 分析了这些风险与多种生成策略。随机并非自动安全:有限空间仍会碰撞,真正的碎片依然必须满足唯一性。
历史实现也不统一。有些来源早已给不可分片流量写入不变 ID。这样的差异恰好证明,非重组用途无法把编号序列当成可互操作契约。
字段可以被看见,但“能观察”并不会自动产生“可据此决定”的权力。
原子性划出新的边界
RFC 6864 把 DF=1、MF=0 且 Fragment Offset 为零的 IPv4 报文定义为原子数据报。它不是碎片,合规的中转设备也不能把它分片。
既然无需重组,它的 ID 就没有协议意义。发送端可以写入任意值。零可以使用,却不是保留值;常量、变化值或其他模式都不构成共享语义。
更关键的约束落在读取者身上:路由器、目的主机、防火墙、NAT、地址共享设备、隧道出口等所有检查 IPv4 首部的设备,都必须忽略原子数据报的 ID。规范撤销的不只是发送端负担,也包括下游借此判断的权力。
非原子数据报是逻辑上的其余情况。DF=0 的完整报文尚未被拆开,也仍可能在后续链路被分片;MF=1 或 offset 非零的报文则已经是碎片。因此它们的 ID 仍可能进入重组过程。
真正需要身份的地方没有放松
RFC 6864 没有原谅非原子流量的回绕风险。对同一源、目的与协议组合,发送端不得在一个最大数据报寿命内重复 ID。重传同一非原子数据报也必须换新编号,避免两次传输的碎片混合。
产生报文的角色不只有终端。隧道入口与重写地址的设备可能成为新的外层报文来源,也承担相应义务。
路径同样必须守约:DF=1 的报文不得被分片,中转设备不得清除 DF。否则,中间盒会先把“任意 ID 合法”的原子报文改造成需要可靠编号的碎片,再把后果推给发送端。
发送者只有在明确禁止分片时才获得本地自由;网络必须保持这个前提。
消失的是偶然形成的权威
更新明确禁止用 IPv4 ID 消除重复数据报。诊断关联要寻找其他证据。依据计数序列估算 NAT 后主机数的做法也会失灵。原子 ID 不再提供任何保证的熵,任意比特甚至可能被当作隐蔽信道。
字段并未从固定首部中删除。兼容性来自对已有 DF、MF 与 offset 的条件解释:旧格式保留,契约变小。
这是一种很少被赞美的协议进步。它没有增加位数,也没有建立全球编号机构,而是问清楚:共享正确性究竟在哪些报文上需要这个值?
可能出现碎片时,编号仍是严格的共同资源;不可能分片时,发送端恢复选择权,其他设备失去解释权。
来源与证据边界
封闭来源为 RFC 791、RFC 1122、RFC 4963、RFC 6864 与 RFC 7739。它们证明原始重组职责、旧主机要求、高速回绕风险、原子/非原子边界与可预测 ID 的安全问题;并不证明当前厂商行为、分片比例、统一计数算法或适用于所有路径的损坏阈值。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
