747 字
4 分钟
TCP 流量控制和拥塞控制有什么区别
  1. 1计算机网络学习路线与文章导读
  2. 2网络分层模型与数据封装是怎么回事
  3. 3TCP/IP 四层模型与 OSI 七层模型
  4. 4IP 地址与 CIDR 子网怎么理解
  5. 5ARP 是什么?主机如何找到目标 MAC 地址
  6. 6IP 路由与默认网关是如何工作的
  7. 7TCP 和 UDP 有什么区别?如何选择
  8. 8TCP 握手、挥手和丢包重传分别解决什么问题
  9. 9TCP 三次握手与四次挥手
  10. 10TCP 流量控制和拥塞控制有什么区别本文
  11. 11TCP 为什么可靠:流量控制、拥塞控制与局限性
  12. 12TCP 丢包、粘包和拆包是什么
  13. 13HTTP/1.0、HTTP/1.1、HTTP/2 与 HTTP/3 有什么区别
  14. 14HTTP 请求包含哪些内容
  15. 15HTTP 中 GET 和 POST 有什么区别
  16. 16HTTP 方法的安全性与幂等性怎么区分
  17. 17HTTP 状态码与网络故障如何区分排查
  18. 18常见 HTTP 状态码与网站故障排查
  19. 19HTTP 和 HTTPS 有什么区别
  20. 20谈谈对 DNS 和 CDN 的理解
  21. 21从输入网址到网页显示发生了什么
  22. 22TCP 的 TIME_WAIT 状态有什么作用
  23. 23TCP 的 CLOSE_WAIT 状态是什么,过多如何排查
  24. 24TLS 1.3 握手过程是什么
  25. 25HTTPS 如何校验证书
  26. 26HTTP 强缓存和协商缓存怎么工作
  27. 27HTTP Keep-Alive 是什么,连接如何复用
  28. 28WebSocket 和 HTTP 有什么区别
  29. 29服务端如何解析 HTTP 请求的数据
  30. 30NAT 是什么?端口映射如何实现
  31. 31ICMP、ping 和 traceroute 分别做什么
  32. 32网络故障如何分层排查
  33. 33Cookie、Session、Token 与 JWT 有什么区别
  34. 34常见的登录鉴权方式有哪些
  35. 35什么是 SYN Flood 攻击

TCP 流量控制和拥塞控制都会限制发送速度,但保护对象不同。流量控制避免发送端把接收端的缓冲区压满;拥塞控制避免发送端向网络注入过多流量,导致路由器队列积压、丢包和时延上升。一个看接收方能力,一个看路径的网络承载能力。

接收端通过 TCP 首部通告接收窗口 rwnd,表示当前还能接收多少尚未确认的数据。发送方据此限制在途数据,接收缓冲变紧时窗口可能缩小,甚至通告零窗口;发送方需按协议探测窗口何时重新打开。窗口扩大选项可以表示超过首部字段基本范围的接收窗口,但协商与实现受连接条件影响。

拥塞控制由发送端的拥塞窗口 cwnd 等状态控制。经典算法根据确认、丢包或其他拥塞信号调整发送量,常讲慢启动、拥塞避免、快速重传和快速恢复;现代算法的具体机制差异较大。cwnd 不是接收端在报文中直接告诉发送端的数值,而是发送端对网络路径容量的控制状态。

概念上,发送方可用的在途数据上限受接收窗口与拥塞窗口共同约束,通常不能超过二者中较小的限制;另外还要受发送队列、应用数据和协议状态影响。因此只看某一个窗口不足以判断吞吐。接收端窗口很大时,网络拥塞仍可让 cwnd 成为瓶颈;网络空闲时,接收端处理慢也可能由 rwnd 限速。

这两类控制都不等同于应用限流。服务端仍可在业务层限制请求速率、队列长度或并发数;TCP 窗口针对字节传输,无法替应用完成公平调度或优先级控制。

常见追问#

rwnd 和 cwnd 分别由谁决定?#

rwnd 由接收方依据缓冲区情况通告;cwnd 由发送方拥塞控制算法维护,用来控制网络中的在途数据。

接收窗口很大,为什么发送速度仍然慢?#

拥塞窗口可能更小,也可能受 RTT、丢包、应用供数速度、发送队列或接收处理能力等因素限制。实际在途量受多个约束共同影响。

零窗口和网络拥塞是一回事吗?#

不是。零窗口表示接收端暂时没有接收空间,是流量控制信号;拥塞是网络路径承载压力,靠拥塞控制算法响应。

快速重传属于流量控制还是拥塞控制?#

它属于可靠传输及拥塞控制相关机制,用丢包迹象触发更早重传,并可带动拥塞窗口调整;它不是接收窗口的流量控制。

TCP 流量控制和拥塞控制有什么区别
https://blog.xqcherry.top/posts/interview/network/tcp-flow-control-vs-congestion-control/
作者
xqcherry
发布于
2026-10-12
许可协议
CC BY-NC-SA 4.0