通过以字节为单位的滑动窗口来实现TCP可靠传输。
A的发送窗口是由B的接收窗口来决定的。
一次任意字节一个数据包陆续发送,此时发送缓存的数据还不能删除,直到送入B接收缓存后,B的ACK发送一个信号,需要接受的下个字节的编号,此时,A收到信号后,就移动滑动窗口。删除前面B接受的缓存数据。B的滑动窗口也移动。将前面接受的空出。应用程序已经可以读接收到并在窗口外的数据了。
假如传输过程中7,8,9的数据包丢失了。
给发送方发送信号,需要的字节为7,有个选择确认信号SACK,告诉发送方哪一段丢失了,然后发送方只发送丢失的那一段。
当收到连续的字节后,发送确认信号,
发送很多数据包后计算平均的往返时间就是RTTs。
当网速变快时,可能RTTs原来是10S,现在是8s,就需要重新调整超时重传时间,
α的值越小说明新值越依赖于旧值。如果α较大说明时间修正的更及时。
网络波动很大α及时修正比较好,网络稳定α可以小一点。