文件名称:TCP的定时器-ax88772c,usb2.0转网口,市场上最具性价比的方案
文件大小:55.88MB
文件格式:PDF
更新时间:2024-07-30 05:03:08
TCP IP详解 全三卷
第25章 TCP的定时器 25.1 引言 从本章起,我们开始详细讨论 T C P的实现代码,首先熟悉一下在绝大多数 T C P函数里都会 遇到的各种定时器。 T C P为每条连接建立了七个定时器。按照它们在一条连接生存期内出现的次序,简要介 绍如下。 1 )“连接建立 (connection establishment)”定时器在发送 S Y N报文段建立一条新连接时启 动。如果没有在7 5秒内收到响应,连接建立将中止。 2 )“重传 ( r e t r a n s m i s s i o n )”定时器在T C P发送数据时设定。如果定时器已超时而对端的确 认还未到达,T C P将重传数据。重传定时器的值 (即T C P等待对端确认的时间 )是动态计算的, 取决于T C P为该连接测量的往返时间和该报文段已被重传的次数。 3 )“延迟ACK(delayed ACK)”定时器在T C P收到必须被确认但无需马上发出确认的数据 时设定。T C P等待200 ms后发送确认响应。如果,在这 200 ms内,有数据要在该连接上发送, 延迟的A C K响应就可随着数据一起发送回对端,称为捎带确认。 4 )“持续 (persist )”定时器在连接对端通告接收窗口为 0,阻止T C P继续发送数据时设定。 由于连接对端发送的窗口通告不可靠 (只有数据才会被确认,A C K不会被确认 ),允许T C P继续 发送数据的后续窗口更新有可能丢失。因此,如果 T C P有数据要发送,但对端通告接收窗口 为0,则持续定时器启动,超时后向对端发送 1字节的数据,判定对端接收窗口是否已打开。 与重传定时器类似,持续定时器的值也是动态计算的,取决于连接的往返时间,在 5秒到6 0秒 之间取值。 5 )“保活 ( k e e p a l i v e )”定时器在应用进程选取了插口的 S O _ K E E P A L I V E选项时生效。如 果连接的连续空闲时间超过 2小时,保活定时器超时,向对端发送连接探测报文段,强迫对端 响应。如果收到了期待的响应, T C P可确定对端主机工作正常,在该连接再次空闲超过 2小时 之前,T C P不会再进行保活测试。如果收到的是其他响应, T C P可确定对端主机已重启。如果 连续若干次保活测试都未收到响应, T C P就假定对端主机已崩溃,尽管它无法区分是主机故 障(例如,系统崩溃而尚未重启 ),还是连接故障 (例如,中间的路由器发生故障或电话线断 了)。 6) FIN_WA I T _ 2定时器。当某个连接从F I N _ WA I T _ 1状态变迁到F I N _ WA I T _ 2状态(图2 4 - 1 5 ), 并且不能再接收任何新数据时 (意味着应用进程调用了 c l o s e,而非s h u t d o w n,没有利用 T C P的半关闭功能 ),F I N _ WA I T _ 2定时器启动,设为 1 0分钟。定时器超时后,重新设为 7 5秒, 第二次超时后连接被关闭。加入这个定时器的目的是为了避免如果对端一直不发送 F I N,某个 连接会永远滞留在F I N _ WA I T _ 2状态。 7) TIME_WA I T定时器,一般也称为2 M S L定时器。2 M S L指两倍的M S L,2 4 . 8节定义的最 大报文段生存时间。当连接转移到 T I M E _ WA I T状态,即连接主动关闭时,定时器启动。卷 1