leetcode的时候有看到滑动窗口这道Hard题, 还是挺难的. 它帮助TCP实现流量控制功能

发送端窗口


滑动窗口大致模型

包括两大主要部分:

  1. 已发送但未收到应答的数据
  2. 暂未发送的数据

接收端窗口


  • 发送端窗口由接收端剩余大小决定
  • 接收端会将当前窗口剩余大小, 连同ACK一起返回
  • 发送端收到Window Size之后, 根据该值和网络拥塞情况设置发送窗口的大小.

Zero窗口


对端出现0窗口, 这时发送端停止发送数据, 启动定时器定时发送请求到接收端, 让对端告知窗口大小, 重试超过一定次数后, 可能会终端连接.