26.TCP协议-持续定时器

持续定时器

在我们学习滑动窗口协议的时,遇到过窗口大小为 0 的情况。接收方通告一个 0 窗口给接收方,可以用来阻止发送方继续发送数据。

如果在某个时候,接收方缓冲区有空间了,于是发送了一个非 0 窗口的通告给接收方,不幸的是这个通告丢失了,而发送方却还在死等接收方的非 0 窗口通告,接下来就成了死锁。

为了防止这种情况,发送方只要接收到了 0 窗口通告,就开启一个持续定时器(persist timer),周期性的向接收方发送 1 字节的 0 窗口探测报文。

2. 一个 0 窗口探测报文段的例子

这个数据包是我在 windows 上抓取的,见图 1.

这里写图片描述
图1 0窗口探测报文 

从图 1 中我们可以看到,注意观察红色框框那一行,红色框框是收到 0 窗口通告后,过了多久发送 0 窗口探测报文。

第一次经过约 0.3 秒,第二次 0.6 秒,第三次 1.2 秒,很明显这也是使用了指数退避算法。

猜你喜欢

转载自blog.csdn.net/regemc/article/details/80808492
今日推荐