TCP协议栈中的定时器

TCP为每条连接建立了7个定时器:

1.连接建立定时器

2.重传定时器

3.延迟ACK定时器

4.PERSIST定时器

5.KEEPLIVE定时器

6.FINWAIT2定时器

7.TIME_WAIT定时器

一、连接建立定时器

当发送端发送一个建立连接的SYN包时,如果没有收到对端发来的ACK确认报文,那么会进行重传。

二、重传定时器

第一个定时器是在建立连接时没有收到对端的ACK报文,如果在发送数据包的时候没有收到对端的ACK报文呢?

重传时间间隔是指数级退避,知道达到120s为止,重传次数是15次,(这个值由操作系统的/proc/sys/net/ipv4/tcp_retries2决定的)总时间达到15分钟。

三、延迟ACK定时器

在TCP收到数据包以后再没有数据包要回复时,不马上回复ACK,这时会开启一个定时器,等待一段时间看是否有数据需要回复,如果期间有数据要回复,则在回复的数据中捎带ACK,如果时间到了也没有数据要发送,则也发送ACK,

四、persist定时器

persist定时器就是专门为零窗口探测准备的,我们都知道TCP利用滑动窗口来实现流量控制,当接收端B接受窗口为0时,发送端A此时不能再发送数据,发送端此时开启persist定时器,超时后发送一个特殊的报文给接收端看对方窗口是否已经恢复,这个特殊的报文只有一个字节。

五、保活定时器

如果通信以后一段时间再也没有传输过数据,怎么知道对方是不是已经挂掉或者重启了呢,于是TCP提出了一个做法就是再连接的空闲时间超过2个小时,会发送一个探测报文,如果对方有回复则表示连接还活着,对方还在,如果经过几次探测对方都没有回复,客户端会丢弃这个连接

六、FIN_WAIT_2定时器

四次挥手过程中,主动关闭的一方收到ACK以后从FINWAIT1进入FINWAIT2状态等待对端的FIN包的到来,FINWAIT2定时器的作用是防止对方一直不发送FIN包,防止自己一直傻等,

七、TIME_WAIT定时器

TIMEWAIT也成为2MSL定时器,主动关闭连接的一方在TIMEWAIT持续2个MSL的时间,超时后端口号可被安全的重用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值