29-TCP 协议(持续定时器)

1. 持续定时器

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

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

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

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

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


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

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

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

3. 总结

  • 知道持续定时器的作用
说明:本文转自--Allen--,用于学习交流分享,仅代表原文作者观点。如有侵权,请联系我们删除~