以字节为单位的滑动窗口:
滑动窗口的基本原理可表示如下:
可以看到数据发送方维持了一个大小为20的发送窗口,其中发送前沿向前移动,强烈建议不向后移动,这个时候我们可以看到,当前发送方可以发送的字节序列从31-50为止,现在发送方可以发送的数据为20字节。
A已经发送了从31到41之间的11个字节序,其中32和33已经到达接收方,但31没有按序到达;
此时,B向A发出31的确认(表示31号没有收到),此时窗口值依然为20,因为此时B发送的是对31号的确认,A的发送窗口不能向前移动;随后B收到了31号字节,发送给A一个确认包,这个包的窗口值依然为20(假设窗口值不变),但此时确认号为34,这表明B已经收到了截至33号的所有数据,并把它们交付给了主机,然后将它们删除,B将接收窗口向后挪动3个单位,那么接受范围从34到53;随后,A接收到了B对31-33号数据的接收确认,A将发送窗口向后挪动3个单位,其中p2位置不变,此时代表A可以发送的字节序列为34-53;随后A的p2指针和p3重合,代表已经将所有可以发送的数据全部发送,但是还没有收到确认;
原文:https://www.cnblogs.com/jsxh-bobo/p/12643454.html