乐闻世界logo
搜索文章和话题

TCP 拥塞控制的四个算法是什么?

2月21日 17:09

TCP 拥塞控制机制详解

TCP 拥塞控制是网络稳定性的关键机制,防止网络拥塞导致的数据包丢失和性能下降。

拥塞控制的四个核心算法

1. 慢启动(Slow Start)

  • 初始状态:cwnd(拥塞窗口)初始化为 1 个 MSS(最大报文段大小)
  • 指数增长:每收到一个 ACK,cwnd 加倍,每经过一个 RTT,cwnd 翻倍
  • 阈值触发:当 cwnd 达到 ssthresh(慢启动阈值)时,进入拥塞避免阶段
  • 目的:快速探测网络可用带宽,避免一开始就发送大量数据导致拥塞

2. 拥塞避免(Congestion Avoidance)

  • 线性增长:每经过一个 RTT,cwnd 增加 1 个 MSS
  • 保守策略:增长速度比慢启动慢,避免突然导致网络拥塞
  • 触发条件:cwnd ≥ ssthresh 时进入此阶段

3. 快重传(Fast Retransmit)

  • 触发条件:收到 3 个重复 ACK(duplicate ACK)
  • 立即重传:不等待 RTO(重传超时)到期,立即重传丢失的报文段
  • 原因:重复 ACK 表明中间报文段丢失,但后续报文段已到达

4. 快恢复(Fast Recovery)

  • cwnd 调整:将 cwnd 设置为 ssthresh + 3 × MSS
  • ssthresh 更新:ssthresh = cwnd / 2
  • 后续处理:每收到一个重复 ACK,cwnd 加 1;收到新数据的 ACK 时,cwnd = ssthresh,进入拥塞避免

拥塞发生时的处理

  • 超时重传:ssthresh = cwnd / 2,cwnd = 1,重新进入慢启动
  • 快重传触发:ssthresh = cwnd / 2,cwnd = ssthresh,进入快恢复

相关问题

  • 慢启动和拥塞避免的区别是什么?
  • 为什么需要 3 个重复 ACK 才触发快重传?
  • 如何优化 TCP 拥塞控制以提高网络性能?
标签:TCP