【网络】TCP中的四个计时器

来源:互联网 发布:金手指考试软件下载 编辑:程序博客网 时间:2024/05/18 23:56
TCP中有四种定时器(Timer,也称为“计时器”):
重传计时器:Retransmission Timer
坚持计时器:Persistent Timer
保活计时器:Keeplive Timer

时间等待计时器:Time_Wait Timer。


1、重传计时器:

当TCP发送报文时,就创建该特定报文段的重传计时器。可能发生两种情况:
①若在计时器截止时间到达之前收到对此特定报文段的确认,则撤销此计时器。
②若计时器截止时间到达,但没有收到对此特定报文的确认信息,则重传此报文,并将计时器复位。

2、坚持计时器:
      假定接收端TCP宣布了窗口大小为0,发送端TCP就停止传送报文,知道接受端TCP发送并宣布一个非0的窗口大小。但是我们知道在TCP中,对确认是不需要发送确认的,若确认丢失了,接收端TCP并不知道,而是会认为已经完成了任务,并等待发送端TCP发送更多报文,但是由于发送端TCP没有收到确认信息,就会等待对方发送确认窗口的大小。这种情况下,双方的TCP都在等待着对方形成死锁。
      为了避免这种死锁,TCP为每一个连接设置一个坚持计时器,当发送端收到窗口为0的消息,启动坚持计时器,当坚持计时器的截至时间到期,发送端TCP就发送一个特殊报文段,叫做探测报文段,这个报文段只有一个字节的数据,该探测报文段有序号,但这个序号永远不需要确认,甚至在计算对其他部分数据的确认时该序号也被忽略。探测报文段提醒接收端TCP,确认已丢失,必须重传。
坚持计时器的值设置为重传时间的数值。但是若没有收到从接受端发来的响应,则需要发送另一个探测报文段,并将坚持计时器的值加倍和复位。发送端继续发送探测报文段,继续将计时器的值加倍和复位,直到这个值增大到最大限制(通常为1分钟)为止。在这之后,发送端每个1分钟就发送一个探测报文段,直到窗口重新打开。

3、保活计时器:
保活计时器是用来防止两个TCP之间的连接出现长时间的空闲。假设一个客户打开了到服务器的链接,传送了一些数据,然后这个客户出现了一些故障。在这种情况下,这个链接将永远处于打开状态。要解决这种问题,则需要设置保活计时器。每当服务器收到客户的信息时,就将计时器复位。超时通常设置为2小时,若服务器超过两个小时没有收到客户的信息,他就发送探测报文,若发送了10个(每75s发送一次)探测报文段还没有响应,就认为客户出现故障,因而终止连接。
4、时间等待计时器:

时间等待计时器是在连接终止期间使用的。当TCP关闭一个链接时,她并不认为这个连接马上就真正的关闭了。在时间等待期间,连接还处于一种中间过渡状态。这就可以使重复的 FIN报文(如果有的话)带到目的站后将其丢弃。这个计时器一般设置为报文段最大生存时间(Maximum Segment Lifetime)的两倍。2MSL时间是为了让TCP有时间发送最后一个ACK,防止该ACK丢失。



0 0