TCP的中定时器
来源:互联网 发布:淘宝手机助手5.0版 编辑:程序博客网 时间:2024/05/16 14:11
在TCP协议中有的时候需要定期或者按照某个算法对某个事件进行触发,那么这个时候,TCP协议是使用定时器进行实现的。
(1)连接建立(connection establishment)定时器
在发送SYN报文段建立一条新连接时启动。如果在75秒内没有收到响应,连接建立将中止。
(2)重传(retransmission)定时器
在TCP发送某个数据段时设定。如果该定时器超时而对端的确认还未到达,TCP将重传该数据段。重传定时器的值
(即TCP等待对端确认的时间)是动态计算的,与RTT的估计值密切相关,且还取决于该报文段已被重传的次数。
(3)延迟ACK(delayed ACK)定时器
在TCP收到必须被确认但无需马上发出确认的数据时设定。如果在200ms内,有数据要在该连接上发送,延迟的
ACK响应就可随着数据一起发送回对端,称为捎带确认。如果200ms后,该确认未能被捎带出去,则定时器超时,此时需
要发送一个立即确认。
(4)持续 (persist)定时器
在连接对端通告接收窗口为0,阻止TCP继续发送数据时设定。由于连接对端发送的窗口通告不可靠(只有数据才会
被确认,ACK不会被确认),允许TCP继续发送数据的后续窗口更新有可能丢失。因此,如果TCP有数据要发送,但对端通
告接收窗口为0,则持续定时器启动,超时后向对端发送 1字节的数据,判定对端接收窗口是否已打开。
(5)保活(keep alive)定时器
在TCP控制块的so_options 字段设置了SOF_KEEPALIVE选项时生效。如果连接的连续空闲时间超过2小时,则保活
定时器超时,此时应向对端发送连接探测报文段,强迫对端响应。如果收到了期待的响应, TCP可确定对端主机工作正
常,在该连接再次空闲超过 2小时之前,TCP不会再进行保活测试。如果收到的是RST复位响应, TCP可确定对端主机已
重启。如果连续若干次保活测试都未收到响应, TCP就假定对端主机已崩溃,但它无法区分是主机故障还是连接故障。
(6)FIN_WAIT_2定时器
当某个连接从FIN_WAIT_1状态变迁到FIN_WAIT_2状态并且不能再接收任何新数据时,FIN_WAIT_2定时器启动,设
为10分钟。定时器超时后,重新设为75秒,第二次超时后连接被关闭。加入这个定时器的目的是为了避免如果对端一直
不发送 FIN,某个连接会永远滞留在FIN _ WAIT_ 2状态(假设TCP不选用半打开功能)。
(7) TIME_WAIT定时器
一般也称为2MSL定时器。2MSL指两倍的MSL,即最大报文段生存时间。当连接转移到TIME_WAIT状态,即连接主动
关闭时,定时器启动。连接进入TIME_WAIT状态时,定时器设定为1分钟,超时后,TCP控制块被删除,端口号可重新使
用。
.
- TCP的中定时器
- TCP中常见的定时器
- 【Linux】中TCP的四大定时器
- tcp 有关的定时器
- TCP的定时器
- TCP的定时器
- TCP定时器的分类
- TCP的定时器
- 常见的TCP定时器
- TCP定时器的调研
- 常见的TCP定时器
- 调研TCP的定时器
- 常见的TCP定时器
- TCP的定时器
- TCP的定时器系列 — SYNACK定时器
- TCP的定时器系列 — SYNACK定时器
- TCP的四种定时器
- TCP的四种定时器
- 第15章 使用远程服务
- Linux下tar的用法
- git简明教程
- 关系数据理论
- GIT命令
- TCP的中定时器
- 金额输入正则判断
- 关于以太坊,你应该知道的十件事
- list.remove(index)返回flase,移除失败
- django urllib2来做http proxy,非常简单~~
- EA使用(二): 根据ER图设计数据表
- LintCode 吹气球
- Xshell和pdsh工具的使用
- linux 修改防火墙配置