关闭

TCP定时器介绍

401人阅读 评论(0) 收藏 举报
分类:

TCP/IP中关于定时器的介绍,TCP为每条连接建立七个定时器,分别为:

    1.连接建立定时器,在发送SYN报文段建立一条新连接时启动。如果没有在75S内收到响应,连接建立将终止。

    2.重传定时器在TCP发送数据时设定。如果定时器已超时而对端的确认还未到达,TCP将重传数据。重传定时器的值(即TCP等待对端确认的时间)是动态计算的,取决于TCP为该连接测量的往返时间和该报文段 已被重传的次数。

    3.延迟ACK定时器在TCP收到必须被确认但无需马上发出确认的数据设定。TCP等待200ms后发送确认响应。如果,在这200ms内,有数据要在该连接上发送,延迟的ACK响应就可随着数据一起发送回对端,称为捎带确认。

    4.持续定时器在连接对端通告接收窗口为0,阻止TCP继续发送数据时设定。由于连接对端发送的窗口通告不可靠(只有数据才会被确认,ACK不会被确认),允许TCP继续发送数据的后续窗口更新有可能丢失。因此,如果TCP有数据要发送,单对端通告接收窗口为0,则持续定时器启动,超时后向对端发送1字节的数据,判断对端接收窗口是否已打开。与重传定时器类似,持续定时器的值也是动态计算的,取决于连接的往返时间,在5S到60S之间取值。

    5.保活定时器在应用进程选取了插口的SO_KEEPALIVE选项时生效。如果连接的连续空闲时间超过2小时,保活定时器超时,向对端发送连接探测报文段,强迫对端响应。如果收到了期待的响应,TCP可确定对端主机正常工作,在该连接再次空闲超过2小时之前,TCP不会再进行保活测试。如果收到的是其他响应,TCP可确定对端主机已重启。如果连接若干次保活测试都未收到响应,TCP就假定对端主机已崩溃,尽管它无法区分是主机故障(例如系统崩溃而尚未重启),还是连接故障(例如,中间的路由器发送故障或电话线断了)。

    6.FIN_WAIT_2定时器。当摸个连接从FIN_WAIT_1状态变迁到FIN_WAIT_2状态,并且態再接收任何新数据时(意味着应用进程调用了close,而非shutdown,没有利用TCP的半关闭功能),FIN_WAIT_2定时器启动,设为10分钟。定时器超时后,重新设为75S,第二次超时后连接被关闭。加入这个定时器的目的是为了避免如果对端一直不发送FIN,某个连接会永远滞留在FIN_WAIT_2状态。

    7.TIME_WAIT定时器,一般也称为2MSL定时器。MSL指最大报文段生存时间。当连接转移到TIME_WAIT状态,即连接主动关闭时,定时器启动。连接进入TIME_WAIT状态时,定时器设定为1分钟,超时后,TCP控制块和InternetPCB被删除,端口号可重新使用。

    TCP包括两个定时器函数:一个函数为200ms调用一次(快速定时器);另一个函数每500ms调用一次(慢速定时器)。延迟ACK定时器与其它6个定时器有所不同,如果摸个连接上设定了延迟ACK定时器,那么下一个200ms定时器超时后,延迟的ACK必须被发送(ACK的延时时间必须在0-200ms之间)。其它的定时器每500ms递减一次,计时器减为0时,就触发相应的动作。

0
0
查看评论

TCP/IP详解-坚持定时器和保活定时器

1 坚持定时器 ACK的传输并不可靠。TCP不对ACK报文段进行确认,只确认那些包含有数据的ACK报文段当接收窗口大小为0,并且接收方发送的窗口通告确认丢失了,那接收方等待接收数据,而发送方在等待允许它继续发送数据的窗口更新,这样就形成了死锁。对该情况的解决方案:发送方使用一个坚持定时器来周期性地...
  • rosepicker
  • rosepicker
  • 2015-08-26 22:33
  • 1444

TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 坚持定时器 保活定时器 2MSL定时器其中坚持定时器用于防止通告窗口为0以后双方互相等待死锁的情况;而保活定时器则用于处理半开放连接1.坚持定时器坚持定时器的原理是简单的,当...
  • goodboy1881
  • goodboy1881
  • 2006-05-28 00:34
  • 24849

TCP协议里的七种定时器

TCP/IP协议,或称为TCP/IP协议栈,或互联网协议系列,在内核中tcp协议栈有七个类型的定时器。 1 连接建立(connection establishment)”定时器在发送SYN报文段建立一条新连接时启动。如果在75秒内没有收到响应,连接建立将中止。 2 ...
  • baidu20008
  • baidu20008
  • 2013-08-29 10:31
  • 910

【网络协议】TCP中的四大定时器

前言 对于每个TCP连接,TCP一般要管理4个不同的定时器:重传定时器、坚持定时器、保活定时器、2MSL定时器。 重传定时器 很明显重传定时器是用来计算TCP报文段的超时重传时间的(至于超时重传时间的确定,这里涉及到一大堆的算法,书上有说,我这里不细谈了)。每发送一个...
  • mmc_maodun
  • mmc_maodun
  • 2014-06-20 08:30
  • 5067

TCP的定时器系列 — 超时重传定时器

主要内容:TCP定时器开篇,超时重传定时器、ER延迟定时器、PTO定时器的实现。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   Q:一条TCP连接会使用多少个定时器呢? A:目前的答案是9个: 超时重传定时器,持续定时器,ER延迟定时器,...
  • zhangskd
  • zhangskd
  • 2015-03-30 22:53
  • 13151

TCP/IP详解--几类定时器的作用(重传 保活定时器)

与数据链路层的ARQ协议相类似,TCP使用超时重发的重传机制。即:TCP每发送一个报文段,就对此报文段设置一个超时重传计时器。此计时器设置的超时重传时间RTO(Retransmission Time-Out)应当略大于TCP报文段的平均往返时延RTT,一般可取RTO=2RTT。但是,也可以根据具体...
  • yusiguyuan
  • yusiguyuan
  • 2014-04-02 21:33
  • 2856

TCP的定时器系列 — 保活定时器

主要内容:保活定时器的实现,TCP_USER_TIMEOUT选项的实现。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   原理   HTTP有Keepalive功能,TCP也有Keepalive功能,虽然都叫Keepalive,但...
  • zhangskd
  • zhangskd
  • 2015-04-05 10:35
  • 8783

TCP坚持定时器

TCP通过让接收方指明希望从发送方接收的数据字节数(即窗口大小)来进行流量控制。如果窗口大小为0会发生什么情况呢?这将有效阻止发送方传送数据,直到窗口变为非0为止。 ACK的传输并不可靠,也就是说,TCP不对ACK报文段进行确认,TCP只确认那些包含有数据的ACK报文段。 1.坚持定时器...
  • zhuaimiao1
  • zhuaimiao1
  • 2015-09-26 23:07
  • 575

TCP延迟确认定时器

TCP延迟确认定时器: TCP延迟确认定时器是指在一个TCP连接中,当一方收到另一端的数据之后,并不是立马返回ACK进行确认。而是等待200ms(在linux-2.6.38内核实现中应该是400ms),如果这段时间内有新的数据要发往对方,本地将ACK和数据封装在一个数据包中,称作捎带确认机制。没有...
  • a364572
  • a364572
  • 2014-10-23 20:37
  • 580

TCP的四种定时器简单记录

TCP管理的4个不同的定时器: 1.重传定时器:用于当希望收到另一端的确认。 2.坚持定时器:使窗口大小信息保持不断流动。 3.保活定时器:检测TCP空闲连接的另一端何时崩溃或重启。 4.2MSL定时器:测量一个连接处于TIME_WAIT状态的时间。MSL(报文段最大生存时间)   重传定...
  • liuming9283
  • liuming9283
  • 2016-03-06 16:43
  • 574
    个人资料
    • 访问:852506次
    • 积分:10723
    • 等级:
    • 排名:第1840名
    • 原创:139篇
    • 转载:739篇
    • 译文:4篇
    • 评论:28条
    文章分类
    最新评论