摘要
- 累积 ACK 只承诺一件强而清楚的事:确认号之前没有缺口。首个片段丢失时,后续数据即使已经排队,确认号也不能越过去。
- SACK 经握手协商后报告若干不连续区间,使发送方看见“哪些已到、哪些像是缺口”,却不改变普通 ACK 的含义。
- 报告容量有限,也可能被撤回。发送方仍保存原数据、遵守拥塞窗口,并以累积 ACK 的推进作为最终交付凭据。
一个数字遮住了七个片段
假设接收方下一步等待字节 5000。包含 5000 的片段没有到,后面七个片段却连续填满了 5500 到 9000。TCP 头部里的确认号仍是 5000。它不是说“我什么都没收到”,而是说“我还不能证明从起点到这里已经连续”。
这句话对可靠字节流足够严谨,对修复却不够具体。发送方看见一串重复的 5000,不知道只有第一段丢了,还是后面的数据也散落各处。把整个发送窗口重传,会重复搬运已经到达的数据;每经过一个往返才发现下一个缺口,又会让长时延路径付出成倍时间。
RFC 793 把累积语义写得很明确:ACK X 表示 X 以前的所有字节都已收到,X 是下一个期待值。这个承诺让双方最终可以释放缓冲和前移窗口。它的盲点正来自它的强度——接收方不能用零散到达冒充连续完成。
先有方案,后有可部署的共识
1988 年的 RFC 1072 已提出选择性确认。双方在 SYN 中用 SACK-Permitted 协商,连接建立后,接收方可以在 ACK 里描述已经收下的不连续数据块。若对端不认识选项,基本的累积确认仍能工作。
但这版方案没有按原样进入互联网的共同实现。RFC 2018 记载,当时对它与窗口扩展如何组合存在分歧。标准文本提供了讨论对象,却不能凭发布日期制造兼容代码。真正的采用还要依靠实现、测试和相互接受。
1996 年的修订保留了握手协商,改用完整的 32 位左右边界。左边界是块中第一个字节,右边界是最后一个字节之后的位置。于是同一份 ACK 可以继续确认 5000,同时用 SACK 表示 [5500, 9000)。连续承诺没有被改写,缺口后的观察也不再被隐藏。
四十字节装不下整条队列
TCP 选项区最多 40 字节。SACK 的类型和长度占两字节,每个块再占八字节;单独使用时最多四块,与时间戳一起时通常只剩三块。如果接收队列被切成更多“岛屿”,一个 ACK 不可能完整公开它们。
因此 RFC 2018 要求优先放入最近到达片段所属的块,并在后续 ACK 中重复较新的块。反向路径也会丢包,重复不是浪费,而是在多个短报告中保住信息。发送方把这些观察合并,形成自己的状态表。
共同协议只传必要的边界,不要求公开接收方的内存布局、队列实现和全部历史。各系统可以在内部完全不同,只需同意如何表达一个序号区间。这正是薄协调的价值:共享可互操作的事实格式,而不是统一所有执行细节。
提示不等于收据
SACK 在规范中是 advisory,也就是建议性信息。接收方之后可能因内存压力等原因丢掉已经报告的数据,这叫 reneging。发送方可以暂时跳过被标记的范围,却不能只凭 SACK 删除自己的副本;只有累积 ACK 真正越过该范围,交付义务才算结束。
若重传计时器到期,发送方必须考虑旧 SACK 状态已失效,从左边界重新保证数据。这个保守退路维护了证据等级:瞬时观察可以优化行动,但不能自动升级为不可撤销的证明。
执行面也留在发送方。它保存重传队列、合并区间、推断缺口并选择下一段。RFC 6675 后来把发送方的这份记录称为 scoreboard,并给出估计网络中尚存字节与选择重传片段的保守算法。接收方贡献视角,不控制发送器。
看清缺口并不增加带宽权利
SACK 也没有替代拥塞控制。RFC 2018 明确要求保留既有算法:一个乱序 ACK 不能单独证明丢失,恢复期间的发送仍有限制,遇到拥塞信号时仍需缩小拥塞窗口。
这与 1986 年拥塞崩溃的历史边界不同。拥塞窗口回答“最多能向共享路径放多少”;SACK 回答“在这个额度内,哪些字节最值得补”。地图更精确,不会让道路变宽。
2000 年的 D-SACK 又让接收方报告重复片段。发送方由此可以怀疑重排序、ACK 丢失、网络复制或过早超时。RFC 2883 刻意没有规定唯一反应,还提醒发送方不能天然相信接收方的陈述。更好的证据扩大了诊断空间,没有建立服从关系。
来源与证据边界
累积确认来自 RFC 793,早期选项方案见 RFC 1072,修订格式及限制见 RFC 2018。RFC 2883 定义 D-SACK,RFC 5681 给出拥塞控制边界,RFC 6247 记录旧方案转为历史状态,RFC 6675 描述保守的 SACK 恢复算法。
这些文档证明规范、演进与已知限制,不证明全球同时部署,也不能从一个 SACK 块确定某个包在哪里、为什么丢失。它报告的是接收方在某一刻声称持有的序号范围,不是身份认证。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
