系列TCP/IP协议-定时器(014完)

栏目: 服务器 · 发布时间: 5年前

内容简介:在TCP中,通常有类似于心跳一样的定时器来保证传输的正常。对于每一个连接,TCP管理了4个不同的定时器。这里介绍三种。TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没有收到确认,它就重传该数据。 对每个连接而言,报文段中数据的起始序号也被记录下来。当收到一个包含这个序号的确认后,该定时器就被关闭。如果ACK到达时数据没有被重传,则被平滑的RTT和被平滑的均值偏差将基于这个新测量进行更新。

在TCP中,通常有类似于心跳一样的定时器来保证传输的正常。对于每一个连接,TCP管理了4个不同的定时器。

  • 定时重传;
  • 持久定时器(persist);
  • 保活定时器(keepalive);
  • 2MSL定时器,用来测量处于TIME_WAIT状态的连接。

这里介绍三种。

二、定时重传定时器

TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没有收到确认,它就重传该数据。 对每个连接而言,报文段中数据的起始序号也被记录下来。当收到一个包含这个序号的确认后,该定时器就被关闭。如果ACK到达时数据没有被重传,则被平滑的RTT和被平滑的均值偏差将基于这个新测量进行更新。

三、持久定时器(persist timer)

我们已经看到TCP通过让接收方指明窗口大小来对发送方进行流量控制的。当窗口大小为0,发送方将不会发送数据,直到接收方发送ack通知非0窗口大小。 但是当这个ack丢失了呢,又是什么情况?发送方窗口大小为0,接收方又认为发送方的发送窗口不为0。两个就这么僵持着,直到关闭连接。 这是个问题!为了防止这种死锁情况的发生,在每一个TCP连接中,发送方都使用一个叫持久定时器(persist timer)来周期性的向接收方查询,以便发现窗口是否变大了。

四、保活定时器(keepalive timer)

我们会很惊奇地发现可以没有任何数据流通过一个空闲的TCP连接。也就是说, 如果TCP连接的双方都没有向对方发送数据, 则在两个TCP模块之间不交换任何信息。例如,没有可以在其他网络协议中发现的轮询。这意味着我们可以启动一个客户与服务器建立一个连接,然后离去数小时、数天、数个星期或者数月,而连接依然保持。然而,许多时候一个服务器希望知道客户主机是否崩溃并关机或者崩溃又重新启动。许多实现提供的保活定时器可以提供这种能力。这就是保活定时器。 事实上,keepalive timer 在RPC中是不被推荐的, 许多人认为如果需要,这个功能不应该在 TCP中提供,而应该由应用程序来完成。在大部分的协议中,也是关闭了这个的,原因如下:

  • 在出现短暂差错的情况下,这可能会使一个非常好的连接释放掉;
  • 它们耗费不必要的带宽;
  • 在按分组计费的情况下会在互联网上花掉更多的钱。

保活功能主要是为服务器应用程序提供的。服务器应用程序希望知道客户主机是否崩溃,从而可以代表客户使用资源。 一句话,keepalive timer就是我们经常遇到的心跳包,在需要的时候可以在应用层实现。

都看到这里了,要不要扫二维码关注一下微信公众号 林湾村龙猫

系列TCP/IP协议-定时器(014完)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

打火机与公主裙·荒草园

打火机与公主裙·荒草园

Twentine / 青岛出版社 / 2017-3 / 36.00元

“如果人临死前真有走马灯这个环节,她大概会是我这辈子见的最后一人。” 从青涩的校园时代里一抹明亮的金,到厮杀的职场中那化不开的黑,李峋就像荒芜之地的一株野草,受到再大的挫折依然固执地生长。 如果说朱韵从前的生活一直维持着表面的顺风顺水,平静安和,那李峋的出现则打破了这一切。他是她生命中第一次,也是唯一一次的冒险。 在外人眼里李峋嚣张而轻蔑,只有朱韵懂得他心中那片自留地,自愿成为孤......一起来看看 《打火机与公主裙·荒草园》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具