定义

TCP 拥塞控制(Congestion Control)是 TCP 防止网络拥塞的机制,通过动态调整发送窗口大小来控制数据注入网络的速率。

关键参数

  • cwnd(拥塞窗口):发送方根据网络拥塞程度设置的窗口大小
  • rwnd(接收窗口):接收方通告的窗口大小
  • ssthresh(慢开始门限):慢开始和拥塞避免的分界点
  • 发送窗口上限 = min(rwnd, cwnd)

算法

慢开始(Slow Start)

  • cwnd 从 1 开始,每经过一个 RTT 翻倍
  • 当 cwnd < ssthresh 时使用
  • 呈指数增长

拥塞避免(Congestion Avoidance)

  • 当 cwnd >= ssthresh 时使用
  • 每经过一个 RTT,cwnd 加 1
  • 呈线性增长

快重传(Fast Retransmit)

  • 收到 3 个重复 ACK 时,立即重传丢失报文
  • 无需等待重传计时器超时

快恢复(Fast Recovery)

  • 收到 3 个重复 ACK 后,ssthresh = cwnd / 2,cwnd = ssthresh
  • 直接进入拥塞避免阶段,而非慢开始