TCP滑动窗口

滑动窗口分为发送窗口和接收窗口

TCP的滑动窗口主要有两个作用:一是提供TCP的可靠性,二是提供TCP的流控特性

  • 发送窗口

发送端的状态分为四种:已发送已收到ACK,已发送未收到ACK,待发送,未发送

其中处于滑动窗口的是中间两个状态

TCP滑动窗口

正常情况下

4号包收到了ACK,滑动窗口向右滑动一格,将11号包读进了缓存,将8/9号包发送出去。以此类推

TCP滑动窗口

丢包的情况

但是有时候会出现丢包的情况,我们的包发出去,对方的ACK丢了,或者我们的包发丢了,总之,发送方没有收到ACK。那么此时就会发送端就会一直等待ACK,如果一直等不到的话,仍会把待发送的数据包发送出去,但是窗口不会右移。

为了避免数据包丢失,TCP设置了超时重传机制

原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。

TCP通过滑动窗口的超时重传机制保证了TCP的传输可靠性

TCP滑动窗口

参考链接:https://www.cnblogs.com/coder-programming/p/10627746.html