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