【Linux】中TCP的四大定时器

不念不忘少年蓝@ 2022-06-12 01:38 361阅读 0赞

TCP中有四大定时器来维持连接的正常运行,这四个定时器分别是超时重传定时器、坚持定时器、保活定时器以及时间等待计时器

超时重传定时器:

重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。

当TCP发送报文段时,就创建这个特定报文段的重传计时器,可能发生两种情况:

(1)若在计时器超时之前收到对报文段的确认,则撤销计时器;

(2)若在收到对特定报文段的确认之前计时器超时,则重传该报文,并把计时器复位;
重传时间=2*RTT;
RTT的值应该动态计算。常用的公式是:RTT=previous RTT*i + (1-i)*current RTT。i的值通常取90%,即新的RTT是以前的RTT值的90%加上当前RTT值的10%.
Karn算法:对重传报文,在计算新的RTT时,不考虑重传报文的RTT。因为无法推理出:发送端所收到的确认是对上一次报文段的确认还是对重传报文段的确认。干脆不计入。

坚持定时器:

专门为对付零窗口通知而设立的。
当发送端收到零窗口的确认时,就启动坚持计时器,当坚持计时器截止期到时,发送端TCP就发送一个特殊的报文段,叫探测报文段,这个报文段只有一个字节的数据。探测报文段有序号,但序号永远不需要确认,甚至在计算对其他部分数据的确认时这个序号也被忽略。探测报文段提醒接收端TCP,确认已丢失,必须重传。
坚持计时器的截止期设置为重传时间的值,但若没有收到从接收端来的响应,则发送另一个探测报文段,并将坚持计时器的值加倍和并复位,发送端继续发送探测报文段,将坚持计时器的值加倍和复位,知道这个值增大到阈值为止(通常为60秒)。之后,发送端每隔60s就发送一个报文段,直到窗口重新打开为止;

保活定时器:

每当服务器收到客户的信息,就将keeplive timer复位,超时通常设置2小时,若服务器超过2小时还没有收到来自客户的信息,就发送探测报文段,若发送了10个探测报文段(没75秒发送一个)还没收到响应,则终止连接。

时间等待定时器:

在连接终止期使用,当TCP关闭连接时,并不认为这个连接就真正关闭了,在时间等待期间,连接还处于一种中间过度状态。这样就可以时重复的fin报文段在到达终点后被丢弃,这个计时器的值通常设置为一格报文段寿命期望值的两倍。

发表评论

表情:
评论列表 (有 0 条评论,361人围观)

还没有评论,来说两句吧...

相关阅读

    相关 《网络协议》TCP 定时器

    TCP 是提供可靠的传输层,它使用的方法之一就是确认从另一端收到的数据。但是数据和确认都可能会丢失。TCP 通过在发送时设置一个定时器来解决这个问题。如果当定时器溢出时还没收到

    相关 tcp定时器

    我们都知道,TCP发送的报文段是要交给IP层传送的,但IP层只能提供尽最大努力服务。也就是说TCP下面的网络所提供的是不可靠传输。因此TCP必须采取适当的策略。而定时器就发挥作

    相关 解读TCP定时器

    一、TCP的四种定时器 TCP 是提供可靠的传输层,它使用的方法之一就是确认从另一端收到的数据。但是数据和确认都可能会丢失。TCP 通过在发送时设置一个定时器来解决这个问

    相关 TCP定时器

    1、建立连接定时器(connection-establishment timer)   顾名思义,这个定时器是在建立连接的时候使用的, 我们知道, TCP建立连接需要3次

    相关 TCP定时器

    1.连接建立(connection establishment)”定时器        在发送SYN报文段建立一条新连接时启动。如果在75秒内没有收到响应,连接建立将中止

    相关 TCP定时器

    1、建立连接定时器(connection-establishment timer)   顾名思义,这个定时器是在建立连接的时候使用的, 我们知道, TCP建立连接需要3次