TCP-滑动窗口

TCP滑动窗口

术语
  • 窗口合拢:窗口左边沿向右边沿靠近
  • 窗口张开:窗口右边沿向右移动时将容许发送更多的数据
  • 窗口收缩:窗口右边沿向左移动
    窗口边沿的移动
    详细解释:
    • 窗口合拢发生在数据被发送和确认时
    • 窗口张开发生在对端接收进程读取已经确认的数据并释放了TCP的接受缓存
    • 窗口收缩的使用场景 结合糊涂窗口综合征
    • 窗口的左边沿受对端发送的确认序号的控制,所以不可能向左边移动。若是接收到一个指示窗口左边沿向左移动的ACK,则它被认为是一个重复ACK,并被丢弃
    • 若是左边沿到达右边沿,则称其为一个零窗口,此时发送方不可以发送任何数据
窗口控制

滑动窗口
  如上图:web

  • 将字节从1到11进行编号
  • 接受方通告的窗口标识为提供的窗口,它覆盖了从第4到第9字节的区域,代表接受方已经确认了包含第3字节在内的数据,且通告大小为6
  • 窗口大小是与确认序号相对应的。发送方计算它的可用窗口,该窗口代表多少数据能够当即被发送
  • 接收方确认数据后,这个滑动窗口不时地向右移动。窗口两个边沿的相对运动增长或减小了窗口的大小