1.滑动窗口协议
1.1滑动窗口
上一节中的Nagle算法是一种对小分组数据的流量控制算法。这一篇主要介绍另一种流量控制算法滑动窗口协议。这个协议可以使得多个报文能够连续发送,提高传输效率。
接收方通过窗口大小来告诉对方可以发送多少个字节的数据,当接收方确认数据后,这个滑动窗口不时地向右移动,如下图所示
1.2 TCP的坚持定时器
如果接收方在某次ACK中通告窗口大小为0,过了段时间后,接收方的缓存释放了一些出来,那么接收方应该再发送一条更新通告窗口的ACK,但是如果这条ACK丢失了,那么发送方就会仍然等会接收方发送更新窗口的报文,而接收方却还在等待发送方给它发送数据。这样就形成了“死锁”的状态。
为了解决这种困境,就设置了一个TCP的坚持定时器,每隔一段时间就发送一次探查的信息,直到检测到窗口被打开或者应用进程被关闭。
1.3 糊涂窗口综合症
糊涂窗口综合症是指接收方总是通告一个小窗口,而发送方也发送少量的数据。这样会导致传输效率低下。
解决这个问题可以采用的措施有:
- 当窗口大小小于一个MSS时,不通告<