摘要
- 静默规则针对的是序列号记忆丢失,而不是每一次重启。
- RFC 793 要求等待一个 MSL,让旧重复报文退出网络。
- RFC 9293 保留这一安全边界,但认为触发条件在今天通常很少同时成立。
- 保留状态和 PAWS 属于不同的防护方式。
本地状态消失,网络状态仍在
崩溃可以立即清除 TCP 的易失状态,而此前发出的报文仍可能位于队列、路径或接收端。若重启后再次使用相同的地址和端口,旧报文就可能看起来像新数据。数据、SYN 和 FIN 都占用有限的序列号空间,因此后续连接可能与旧空间重叠。
用静默替代缺失的历史
RFC 793 规定,丢失活动连接所用序列号记忆的 TCP,必须在一个最大报文生存期内保持静默。规范采用两分钟这一工程选择。它不是重传计时器,也不是往返时间估计,而是给旧的时空痕迹足够时间离开网络。
规则有明确条件。如果实现保留了最近使用的序列号,就可以不等待,但必须从已用号码之后继续分配。主机若已经运行至少一个 MSL,相关的等待边界也已经过去。
现代规范保留了什么
RFC 9293 仍要求在丢失序列号记忆后至少等待一个 MSL,同时说明该问题在多数现代实现中通常可以忽略:初始序列号和临时端口已随机化,网络加速使有效 MSL 变短,而重启过程常常长于一个 MSL。
这不是对机制的废除。随机化降低碰撞概率,却不等同于记住真实历史。在高速环境中,TCP 时间戳和 PAWS 还提供了另一种接收端可见的旧重复报文防护,用于应对 32 位序列空间快速循环。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
