TCP滑动窗口机制

1、数据分片

TCP滑动窗口机制

2、滑动窗口机制

2.1 单一发送总是要等回复,效率太低:

TCP滑动窗口机制

2.2 设置窗口,提升效率

以下的窗口大小为3:
TCP滑动窗口机制
窗口大小指的是可以发送数据包的最大数量。在实际使用中,它可以分为两部分。第一部分表示数据包已经发送,但未得到确认应答包;第二部分表示允许发送,但未发送的数据包。在进行数据包发送时,当发送了最大数量的数据包(窗口大小数据包)时,有时不会同时收到这些数据包的确认应答包,而是收到部分确认应答包。那么,此时窗口就通过滑动的方式,向后移动,确保下一次发送仍然可以发送窗口大小的数据包。这样的发送方式被称为滑动窗口机制。设置窗口大小为 3,滑动窗口机制原理如下:
TCP滑动窗口机制

3、数据重发

3.1 只要收到三个包中最后一个应答包(回应包丢了的情况),就继续正常发送

TCP滑动窗口机制

3.2 当发送的数据报丢了,会进行3次提醒,重新发送后,之后恢复正常

TCP滑动窗口机制

4、TCP流控制

双方协商窗口大小
TCP滑动窗口机制
如果在接收端返回的确认应答包中,窗口设置为 0,则表示现在不能接收任何数据。这时,发送端将不会再发送数据包,只有等待接收端发送窗口更新通知才可以继续发送数据包。
如果这个更新通知在传输中丢失了,那么就可能导致无法继续通信。为了避免这样的情况发生,发送端会时不时地发送窗口探测包,该包仅有1个字节,用来获取最新的窗口大小的信息。如下:

TCP滑动窗口机制