tcp定时器

来源:互联网 发布:js遍历对象属性 编辑:程序博客网 时间:2024/05/22 08:07

1:建立链接定时器

定时器在发送syn报文段建立一条新连接是启动。如果没有在75s收到响应,连接建立将中断。


2:重传定时器

定时器在tcp发送数据时设定。如果定时器已超时而对端的确定还没到达,tcp将重传数据,重传定时器的值是动态计算,取决于tcp为该链接测量的往返时间和该报文段已经被重传的次数。



3:延迟ack定时器

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


4:持续定时器

定时器在连接对端通知接收窗口为0,阻止tcp继续发送数据时设定。由于连接对端发送的窗口通知不可靠【只有数据才会被确定,ack不会被确定】,允许tcp继续发送数据的后续窗口更新有可能丢失。因此,如果tcp有数据要发送,但对端通知接收窗口为0,则持续定时器启动,超时后向对端发送1字节的数据,判断对端窗口是否打开。与重传的定时器一样,持续时间也是动态计算, 取决于连接往返时间, 在5s-60s的区间取值



5:FIN_WAIT_2定时器

当某个连接从FIN_WAIT_1的状态变成FIN_WAIT_2,并且不能再接收任何新数据时,FIN_WAIT_2定时器启动,设置为10min。定时器超时后,重新设为75s,第二次超时连接被关闭。加入该定时器的母的就是为了避免对端一直不发送FIN,整个tcp链接永远处于FIN_WAIT_2状态。


6:2MSL定时器


7:tcp心跳定时器 keeplive

定时器在应用进程选取接SO_KEEPLIVE的选项生效。如果链接的连续空闲时间超过2hour,保活定时器超时,向对端发送链接探测报文段,强迫对端响应。





0 0