Skip to content

TCP 可靠传输与拥塞控制

确认重传、滑动窗口、拥塞控制四算法。

Updated View as Markdown
For humans

TCP 可靠传输与拥塞控制

TCP 可靠的两个层面:可靠传输(不丢不错不乱,端到端)和拥塞控制(不把网络打爆,全局)。面试主线:可靠靠什么、窗口怎么动、拥塞算法演进。

可靠传输机制

机制 作用
序列号 + 确认 排序、去重、丢包检测
超时重传 没收到 ACK 就重发(RTO 动态估算)
快速重传 收到 3 个重复 ACK 立即重发(不等超时)
累计确认 ACK n 表示 n 之前全收到(简化)

快速重传是优化重点:丢包不用等超时(超时太慢),3 个重复 ACK 就触发重发。

滑动窗口

滑动窗口: 窗口内可发, ACK 后右移

  • 窗口大小 = 接收方可用缓冲区(流量控制):接收方告诉发送方“我还能收多少”
  • 发送方窗口内的报文可以连续发(不用逐包等确认),提高吞吐
  • 流量控制 vs 拥塞控制:流量控制是接收方能力(端到端),拥塞控制是网络能力(全局)
  • 窗口为 0 时发送方停止,等接收方窗口更新通告

拥塞控制四阶段

拥塞控制: 慢启动探路, 拥塞避免巡航, 丢包减半

阶段 机制 目的
慢启动 cwnd 从 1 指数增长 快速探测可用带宽
拥塞避免 到 ssthresh 后线性增长 避免打爆网络
快速重传/恢复 3 重复 ACK 触发,cwnd 减半 丢包不从头再来
超时重传 超时触发,回到慢启动 严重拥塞彻底退让

关键判断:超时 = 严重拥塞(cwnd 归 1);3 个重复 ACK = 轻度丢包(cwnd 减半)。不同丢包信号不同退让幅度。

BBR(Google):不再以丢包为拥塞信号(丢包可能只是缓冲),改用带宽和延迟测量(BDP 探测),在高速长距网络明显优于传统算法。考点了解级:知道“基于测量而非丢包”即可。

面试追问

  1. TCP 怎么保证可靠? 序列号 + 确认 + 重传(超时/快速重传)+ 窗口。四件套
  2. 快速重传为什么快? 3 个重复 ACK 立即重发,不等超时(RTO 可能上百毫秒)
  3. 流量控制和拥塞控制的区别? 流量控制管接收方缓冲(端到端),拥塞控制管网(全局)。窗口 = min(接收窗口, 拥塞窗口)
  4. 慢启动为什么指数增长? 快速探测带宽:网络好就快速冲,丢包再退让
  5. 超时和重复 ACK 的区别? 超时是严重拥塞(归 1 重来),重复 ACK 是轻度丢包(减半恢复)
Navigation

Type to search…

↑↓ navigate↵ selectEsc close