博客
关于我
TCP 七种定时器
阅读量:735 次
发布时间:2019-03-21

本文共 1163 字,大约阅读时间需要 3 分钟。

TCP中的七种定时器

在TCP协议中,定时器是实现TCP流量控制、错误检测和连接管理的关键机制。以下是TCP中常见的七种定时器及其功能。

1. 建立连接定时器(Connection-establishment timer)

这个定时器用于管理建立TCP连接的过程。TCP连接通常通过三次握手完成,建立连接定时器在发送SYN包时启动,通常设置为3秒。若SYN包丢失,经过3秒后会重新发送SYN包。接收方在接收SYN包后会启动其自己的SYN-ACK定时器。此外,/proc/sys/net/ipv4/tcp_syn_retries可以设置SYN包重传次数。

2. 重传定时器(Retransmission timer)

重传定时器用于处理未确认的数据包。当发送的数据包没有收到 ACK 应答时,重传定时器会触发,重新发送数据包。其工作原则包括:

  • 在发送前置一个数据包启动重传定时器;
  • 若发送队列为空,则停止定时器;
  • 定时器超时后,重新发送数据包最前端的报文段;
  • 若多个报文段累计确认,则批量处理。

3. 延迟应答定时器(Delayed ACK timer)

延迟应答定时器用于在接收数据时,延迟发送 ACK 应答,以便与后续的数据包一起发送,减少数据包的传输次数。这通常设置为200毫秒,以优化网络效率。

4. 坚持定时器(Persist timer)

坚持定时器用于处理发送方无法立即得到窗口更新的情况。当接收方的窗口变为非零时,会发送窗口更新通知。但若该通知丢失,坚持定时器会启动,发送窗口探查包以发现窗口变化。这些探查包称为窗口探查。

5. 保活定时器(Keepalive timer)

保活定时器的作用是检测连接是否仍然活跃。一旦设置,若在明确的时间间隔内没有数据交换(默认为2小时),就会发送探测包以验证对端是否存活。常用于防止长时间空闲的连接被废止,但其超时时间通常较长,建议在需要心跳机制时手动配置。

6. FIN_WAIT_2定时器(FIN_WAIT_2 timer)

在主动关闭连接的一方完成发送FIN包并接收ACK后,进入FIN_WAIT_2状态,等待被动关闭方发送终止连接请求。如果当期内未收到,被动关闭方的FIN丢失,FIN_WAIT_2定时器将触发协议处理,以划分资源或断开连接。此定时器可通过/proc/sys/net/ipv4/tcp_fin_timeout设置。

7. TIME_WAIT定时器(TIME_WAIT timer, 也叫2MSL timer)

TIME_WAIT是连接终止过程中的最后一个状态,确保重发最后的ACK或 FIN 包不会被丢失。它等待的时间为两倍最大段生存时间(2MSL),以保证任何迟到的数据包在新的连接中不会被处理。这个时间内,相同IP地址、端口对的新连接不会被建立。

转载地址:http://ukhgz.baihongyu.com/

你可能感兴趣的文章
MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)
查看>>
msf
查看>>
MSSQL数据库查询优化(一)
查看>>
MSSQL日期格式转换函数(使用CONVERT)
查看>>
MSTP多生成树协议(第二课)
查看>>
MSTP是什么?有哪些专有名词?
查看>>
Mstsc 远程桌面链接 And 网络映射
查看>>
Myeclipse常用快捷键
查看>>
MyEclipse用(JDBC)连接SQL出现的问题~
查看>>
myeclipse的新建severlet不见解决方法
查看>>
MyEclipse设置当前行背景颜色、选中单词前景色、背景色
查看>>
MyEclipse配置SVN
查看>>
MTCNN 人脸检测
查看>>
MyEcplise中SpringBoot怎样定制启动banner?
查看>>
MyPython
查看>>
MTD技术介绍
查看>>
MySQL
查看>>
MySQL
查看>>
mysql
查看>>
MTK Android 如何获取系统权限
查看>>