调研TCP定时器

来源:互联网 发布:淘宝会员名怎么隐藏 编辑:程序博客网 时间:2024/06/06 01:36

TCP使用四种定时器(Timer,也称为“计时器”):
重传计时器:Retransmission Timer
坚持计时器:Persistent Timer
保活计时器:Keeplive Timer
时间等待计时器:Time_Wait Timer。

(1)重传计时器:

重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传计时器,可能发生两种情况:若在计时器超时之前收到对报文段的确认,则撤销计时器;若在收到对特定报文段的确认之前计时器超时,则重传该报文,并把计时器复位;
重传时间=2*RTT;
RTT的值应该动态计算。常用的公式是:RTT=previous RTT*i + (1-i)*current RTT。i的值通常取90%,即新的RTT是以前的RTT值的90%加上当前RTT值的10%.
Karn算法:对重传报文,在计算新的RTT时,不考虑重传报文的RTT。因为无法推理出:发送端所收到的确认是对上一次报文段的确认还是对重传报文段的确认。干脆不计入。

当TCP发送报文段时,就创建该特定报文段的重传计时器。
1.1、若在计时器截止时间到(通常60秒)之前收到了对此特定报文段的确认,则撤销此计时器。
1.2、若在计时器截止时间之前没有收到对此特定报文的确认,则就认为该报文丢失,需要重传此报文段,并将计时器复位。

(2)坚持计时器:persistent timer

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

假设TCP收到了一个窗口大小为0报文段,发送TCP就停止传送报文段,直到接收TCP发送一个非零的窗口大小。但是这个确认有可能丢失,若确认丢了,接收TCP并不会知道,而是认为他已经完成任务了。但是发送TCP由于没有收到确认,就会一直等待接收方发送确认来通知窗口的大小。双方的TCP这时就会造成死锁,所以要使用一个计时器来避免死锁的发送。
当TCP收到一个窗口大小为0的确认时,就要启动坚持计时器。当坚持计时器期限到时,发送TCP就发送一个特殊的探测报文,这个探测报文段只有一个字节数据,它有一个序号,但是它的序号永远不需要确认。探测报文段提醒对端,确认已丢失,必须重传。
坚持计时器的值设置为重传时间的数值。若没有收到从接收端来的响应,需要发送一个探测报文,并将坚持计时器的值加倍和复位,直到这个值增大到门限值(通常60秒)为止。在这以后,发送端每隔60秒发送一个探测报文,直到窗口重新打开。

(3)保活计时器:keeplive timer

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

保活计时器用来防止两个TCP之间的连续出现长时间的空闲。
假定客户已主动与服务器建立了TCP链接。然后这个客户端出现故障。在这种情况下,这个链接就会永远的处于打开状态。而服务器维护一个链接,也是要耗费一定的资源的,所以必须采取措施,使服务器不能白白等下去。
要解决这种问题,就要对服务器设置保活计时器。每当服务器收到客户的信息,就将计时器复位,保活时间通常设置为2小时。若服务器过了两小时还没有收到客户的信息,他就发送一个探测报文,以后每隔75秒就发一次,连续发送10个探测报文后客户端仍然没有响应,服务器就认为客户端出现了故障,接着就关闭这个链接。

(4)时间等待计时器:Time_Wait Timer

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

当客户端进入TIME-WAIT状态的时候,链接还没有释放掉,必须等待2倍的MSL(最长报文段寿命)后,客户端才能关闭连接。在时间等待期间,链接还处于一种过渡状态。这就可以使重复的FIN报文段(若果有的话)可以到达目的站因而可将其丢弃。

原创粉丝点击