BDP = 带宽 × 往返时延,表示「管道中最多能容纳多少在途数据」。例如 100Mbps 带宽、RTT 100ms 的链路,BDP ≈ 1.25MB——要想跑满带宽,任何时刻都必须有约 1.25MB 数据在飞。TCP 的接收窗口(rwnd)和拥塞窗口(cwnd)共同限定了在途数据量上限,因此窗口 ≥ BDP 是跑满链路的必要条件;窗口小于 BDP 时,吞吐 = 窗口 / RTT,管道填不满,带宽被浪费。

由此引出经典问题:TCP 头里窗口字段只有 16 位(最大 64KB),在上面的例子里吞吐上限只有 64KB/100ms = 5Mbps——这就是「长肥网络」(LFN)的窗口瓶颈,解法是握手时协商 Window Scale 选项(把窗口值左移最多 14 位,扩展到 1GB)。延伸考点:1)高速链路下 32 位序列号回绕问题(PAWS 时间戳防护);2)Bufferbloat——路由器缓冲远大于 BDP 时排队延迟飙升,CUBIC 会把缓冲区塞满,BBR 主动把在途量钳制在 BDP 附近;3)数据中心 RTT 微秒级、BDP 极小,拥塞控制目标完全不同(DCTCP 用 ECN 标记维持浅队列)。追问方向:窗口缩放只在 SYN 阶段协商的含义、发送缓冲区/接收缓冲区内核参数的调优计算。

(约 450 字)