加载中...
选择性确认是 TCP 的一项可选扩展,允许接收方精确告知发送方哪些不连续的数据段已经成功收到,从而让发送方只重传真正丢失的部分,避免不必要的重复传输,提升丢包环境下的吞吐效率。

| 中文名 | 选择性确认 |
| 英文名 | Selective Acknowledgment |
| 所属协议 | TCP |
| 实现方式 | TCP 选项 |
| 主要作用 | 精准重传丢失段 |
选择性确认(Selective Acknowledgment,SACK)是 TCP 的一种可选机制,它扩展了 TCP 原本只能确认连续字节流的能力,使接收方能够告诉发送方在丢失段之后又收到了哪些不连续的数据块,让发送方精准地只重传缺失的部分。
标准 TCP 使用累积确认,只能确认到第一个丢失位置为止的连续数据。这意味着一旦中间某个段丢失,即便后面的段已被接收方收到,发送方也无从知晓,在超时或快速重传时可能重复发送本已到达的数据,浪费带宽。SACK 通过在 TCP 选项中携带额外信息弥补了这一缺陷。
SACK 在存在丢包或乱序的网络中价值巨大,例如高时延的长距离链路、无线网络和拥塞链路。它能显著减少不必要的重传、加快丢失恢复,是现代操作系统 TCP 协议栈默认开启的优化。它常与快速重传、快速恢复等机制配合使用。
问:没有 SACK 的 TCP 会怎样?答:只能依赖累积确认,遇到多个段丢失时往往一次只能修复一个,恢复较慢,且可能重传已到达的数据,效率较低。
问:SACK 需要手动开启吗?答:一般不需要。主流操作系统默认启用并在握手时自动协商,只有在特殊调优或排障时才会考虑手动关闭。

| 中文名 | 选择性确认 |
| 英文名 | Selective Acknowledgment |
| 所属协议 | TCP |
| 实现方式 | TCP 选项 |
| 主要作用 | 精准重传丢失段 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧