TCP 拥塞控制主要包括四个阶段:
-
慢开始(Slow Start)
-
初始时,TCP连接的拥塞窗口(cwnd)很小,比如1个MSS(最大报文段长度)。
-
每收到一个 ACK,cwnd 翻倍增长,指数级扩张。
-
快速增加网络利用率,但一旦到达慢开始阈值(ssthresh),就进入下一个阶段。
-
-
拥塞避免(Congestion Avoidance)
-
cwnd 以线性增长,比如每收到一轮 ACK,cwnd 只增加 1 MSS。
-
比慢开始更温和,避免引发网络拥塞。
-
-
快重传(Fast Retransmit)
-
TCP在收到连续三个重复ACK时,推测有报文丢失了,不等超时,立即重传丢失的段。
-
加快了丢包的响应速度,避免等待RTO超时。
-
-
快恢复(Fast Recovery)
-
在快速重传之后,不是像慢开始那样重新从1开始,而是:
-
把 ssthresh 调低到当前 cwnd 的一半;
-
然后把 cwnd 设置为 ssthresh,并进入拥塞避免阶段。
-
总结关键词:
-
慢开始(指数增长)
-
拥塞避免(线性增长)
-
快重传(收到3个重复ACK)
-
快恢复(调低阈值,快速恢复传输)
“TCP拥塞控制和流量控制是不同的,流量控制是针对接收端的处理能力(靠滑动窗口),拥塞控制是针对网络整体的拥塞状态。”