网络 – 滑动窗口
作用
滑动窗口是确保TCP可靠传输数据的利器。
滑动窗口
滑动窗口是以字节为单位的。发送方有发送窗口,接收方有接收窗口。
图解
【step 1】
假设A向B发送数据,然后B向A发送确认报文,报文头部信息中窗口大小是20字节,确认号是31,这表明B缓冲区还可接收数据是20字节,而且B期望收到下一个序号是31的数据,并且30为止的数据都已经接受到了,根据这两个数据A的发送窗口如下图
发送窗口
表示在上图20字节中的数据都可以发送给B,即使先发送的数据没有收到ACK,但是发送的数据在没有收到ACK之前都保存发送缓冲区中,防止超时重传。
对于已发送并且收到ACK的数据A就可以将其清理出缓冲区,不可发送的数据是因为接收缓冲区没有容量接收这么多数据,只能接收窗口大小(20字节)数据。
【step 2】
现在假设A向B发送了31 到 40序号的数据,但是未接收到任何ACK,因此发送窗口并没有变,但是窗口内的数据还在发送,对于窗口中未发送部分叫做 有效窗口, 如图所示