TCP 怎么判断网络拥塞?为什么不是一上来就全速发?慢启动到底有多"慢"?四个算法如何协作?从原理到代码,一篇搞懂 TCP 拥塞控制。
一、为什么需要拥塞控制
没有拥塞控制的后果:
场景:100 个发送方同时向同一个路由器发数据
路由器缓冲区有限 → 缓冲区满 → 丢包
发送方发现丢包 → 重传 → 更多数据 → 更多丢包
→ 拥塞崩溃(Congestion Collapse)
1986 年 10 月,互联网拥塞崩溃:
某链路容量 32 kbps → 实际吞吐降到 40 bps
→ 下降 800 倍!
TCP 拥塞控制目标:
1. 避免网络拥塞(不发包太多)
2. 公平分享带宽(不发包太少)
3. 快速利用带宽(尽快达到最优速率)
核心思想:探测网络容量,逐步增加发送速率
发现拥塞 → 立即降低速率
2026/7/3大约 8 分钟
