第 17 篇:滑动窗口:流量的“红绿灯”
网络基础系列第 17 篇
上一篇我们讲了 TCP 四次挥手:连接关闭时要分别关闭两个方向。今天继续讲 TCP 可靠传输里的关键机制:滑动窗口。它决定了 TCP 一次能发多少、什么时候该慢一点。
开场:为什么 TCP 不一个包一个包等确认?
如果 TCP 每发一个包都停下来等 ACK,再发下一个包,会怎样?
流程大概是:
发一个 -> 等确认 -> 再发一个 -> 再等确认这听起来很稳。
但效率会很低。
尤其在网络延迟比较大的情况下。
比如你和远端服务器 RTT 是 100ms。
如果一次只发一个小包,发完就等 100ms,再发下一个。
那链路大部分时间都在空等。
就像高速公路上只有一辆车开过去,收费站确认后,下一辆车才允许出发。
安全是安全。
但高速公路会气得改名叫低速公路。
TCP 需要一种机制:
在没有收到每个 ACK 之前,也允许连续发送一批数据。
但又不能无限发。
因为接收方可能处理不过来。
于是滑动窗口出现了。
先给结论:
