摘要
- TCP 序列号范围是 0 到 2^32−1,所有相关运算都按模 2^32 进行。
- 从最大值转到零时,模比较仍能保留连接状态中的局部先后关系。
- 确认、重传和接收窗口判断都依赖这种比较方式。
有限的序列空间
RFC 793 和 RFC 9293 都说明,TCP 的序列空间是有限的,取值从零到 2^32−1。达到最大值后,下一位置就是零。协议并不是让字段无限增长,而是规定所有序列号运算都在模 2^32 的空间中完成。
若把这些值当作普通无符号整数,零似乎比最大值小,也就像是更早的值。但在连接的推进过程中,它可能正是后一个位置。因此,仅看数字大小,无法在回绕附近判断时间先后。
用环来表达顺序
模运算把序列空间变成一个环。发送和接收边界、确认号以及有限窗口共同划出当前需要解释的局部范围。脱离连接状态的两个任意 32 位值,并不存在普遍适用的时间顺序。
TCP 需要据此判断确认是否覆盖已发送数据、哪些位置仍可能需要重传,以及某个报文是否落在接收窗口内。规范定义了模意义下的关系,因为普通比较可能在零点附近把新旧关系颠倒。
回到零不是重置
序列号回到零不会重新建立连接,也不会清除传输控制状态。它只是同一个环上的下一个坐标,其他状态继续依照模比较推进。
这条规则的边界
正确的模运算不能单独解决旧报文、连接寿命或窗口范围带来的所有歧义。它解决的是更具体的问题:在不增加线上字段宽度的情况下,维持局部的前后关系。
Sources
- RFC 793, “Transmission Control Protocol”
sources/rfc793.txt - RFC 9293, “Transmission Control Protocol (TCP)”
sources/rfc9293.txt
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
