TCP中有哪些定时器?

每一个链接。TCP管理4个不用的定时器算法

  1. 重传定时器,使用于当但愿收到另外一端的确认。
  2. 坚持定时器,使窗口大小信息保持不断流动,即便另外一端关闭了其接收窗口
  3. 保活定时器,检测到一个空闲链接的另外一端什么时候崩溃或重启
  4. 2MSL定时器,测量一个链接处于TIME_WAIT状态的时间

如何处理TCP链接中打开窗口的ACK丢失的状况?

关闭窗口的场景:接收方通告发送方接收的数据窗口为0,这个时候发送方再也不发送数据;缓存

打开窗口ACK丢失的危害:当接收方通告了一个窗口为非0的ACK,此ACK因为某种缘由丢失,此时发送方在永远的等窗口打开的通知,接收方则永远的在等新数据的到来,这样有可能由于等待而形成链接关闭。服务器

解决策略:使用坚持定时器,周期性的向接收方查询,以便发现窗口的变化class

这种周期性的查询的,从发送方发出的报文段称为窗口探查,窗口探查包含一个字节的数据,可是返回窗口为0的ACK并不对这个字节进行确认效率

什么是糊涂窗口综合症?

对于服务器来说,若是处理的速度过于缓慢,他会将通告窗口的值设置的愈来愈小,甚至是小于报文头,这种状况下,通讯的效率极其低下,这种状况称做糊涂窗口综合症。定时器

如何避免糊涂窗口综合症?

  1. 接收方:当窗口增长一个报文段大小(MSS)或者能够增长接收方缓存空间一半时,才通告窗口大小
  2. 发送方:当能够发送一个满长度的报文、发送至少是接收方通告窗口大小的一半的报文或者是能够发送任何数据而且不但愿接收ACK(这种状况,数据都已经确认了)

Nagle算法中,当报文过小的时候就不发送,这里的小,能够看出发送方发送的报文小于报文段大小程序

保活定时器是作什么用的?

服务器应用程序用来探知客户主机是否崩溃并启动,或者崩溃关机等场景。 具体来讲客户主机一定处于如下4中状态之一:通信

  1. 正常运行。TCP响应正常,服务端知道客户端工做正常,服务器在两小时后将保活定时器复位,若是这两小时之间有应用程序经过这个链接通讯,保活定时器在交换数据后的将来两小时再复位;此时的服务器应用程序不须要感知保活定时器
  2. 客户主机崩溃,而且关闭或者正在重启。服务器总共发送10个探查,每一个间隔75秒,若是没有任何响应,认为客户主机关闭并终止链接;
  3. 客户主机崩溃但已经重启。服务器收到保活探查的响应,但响应回会是个复位,使得服务器终止链接;
  4. 客户主机正常,可是服务不可达。与2相似,只能获得没有探查响应

缺点在于:1短暂差错可能使得一个好的链接被释放;2保活浪费没必要要的带宽;数据

附录

把书读薄(TCP/IP详解 卷一 第二十二章 第二十三章)客户端

相关文章
相关标签/搜索