TCP 快速重传与选择性确认:丢包之后怎么补才快

2026年08月31日

16 次

有的连接丢包后很快恢复,有的连接丢一个包要慢上几秒。同样丢包,恢复速度为什么差这么多?差别往往不在丢包本身,而在丢包之后,两端靠什么机制把缺的数据补回来。补得快不快,直接决定这条链路在恶劣网络下的实际吞吐。

超时重传

最早的补包方式:发送方发出数据后,要等一个固定的超时时间,没收到确认就认定包丢了,重新发一遍。简单可靠,但等待超时的这段时间,链路一直闲着——丢包率一高,速度就断崖式下跌,而且丢得越频繁,等待浪费的时间越多,恢复越慢。

快速重传

发送方连续收到三个对同一字节的重复确认,就能推断后面有包丢失,不等超时立刻重传。它把”等超时”缩短为”等三个确认”,恢复速度明显加快;但对丢了多少、丢在哪一段,发送方仍然不清楚,只能把之后的整段数据重新发一遍。

选择性确认 SACK

接收方把”我收到了哪些、缺了哪些”具体写进确认里,发送方只补缺失的那几段,不用把没丢的部分也重发一遍。丢包越多、窗口越大,省下来的重传越可观,这是目前高丢包环境下最有效的补包方式。

恢复速度差在哪

三条路逐级升级:超时重传是”整段等待加整段重传”,快速重传是”尽早发现加整段重传”,选择性确认是”尽早发现加精准补缺”。对代理链路来说,客户端到代理、代理到目标端各有一段连接,任何一段丢包都会被整条链路感受到,高丢包率下,是否支持快速重传与选择性确认,直接决定吞吐能恢复到几成。

判断丢包重传的影响,还可以看业务类型:网页浏览、即时通信这类小包流量,丢一个包重传一次,影响有限;大文件传输、视频会议这类长流水,丢包造成的重传浪费会被放大,恢复机制的好坏直接影响体验。先分清自己的流量形态,再决定值不值得为这些细节投入。

几个值得记住的习惯:

  • 测丢包率用持续传输,单次短测的参考意义有限
  • 高丢包环境下,优先选支持快速重传与选择性确认的链路
  • 对比两条线路时,在同一时段、同一文件下看恢复速度
  • 丢包率高且恢复慢时,先修链路质量,别只盯着带宽数字

丢包率与恢复机制的关系还藏在场景里:长距离跨境链路天然丢包更多,补包机制的作用就越明显;而低丢包率的优质链路上,三种方式的差别几乎感觉不到。判断链路是否需要关注这些细节,先看丢包率本身,再决定投入多少精力去抠机制。

小结: 丢包不可怕,可怕的是丢包之后用最慢的方式补。快速重传缩短等待,选择性确认减少浪费,这两项机制在高丢包、长距离的代理链路上,是吞吐的隐形守卫——评估链路时多看一眼丢包率和重传方式,比反复换出口更接近问题本身。

相关咨询请联系QQ/微信:157069302