博客
关于我
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/

你可能感兴趣的文章
Python 列表删除相同的元素
查看>>
python 列表生成式
查看>>
Python 列表解析 大文件
查看>>
python 列表转字典方法
查看>>
Python 列表(List)概述-ChatGPT4o作答
查看>>
Python网络爬虫基础进阶到实战教程
查看>>
Python 初学者需要知道的四条建议
查看>>
Python 判断字符串是否包含子字符串
查看>>
python 判断当前时间是否为零点
查看>>
python 利用pandas读取本地中CSV文件的指定列 列名重命名 并保存回本地
查看>>
python 利用pyspark读取HDFS中CSV文件的指定列 列名重命名 并保存回HDFS
查看>>
python 利用pyttsx3文字转语音
查看>>
python 利用已有Ner模型进行数据清洗合并
查看>>
python 到大数据开发工程师_如何成为一个大数据开发工程师?
查看>>
python 加密解密(base64, AES)
查看>>
Python 包管理器和 Node.js
查看>>
Python 单词字母顺序不变且所有倒排
查看>>
python 反射机制
查看>>
python 启动提示IDLE's subprocess didn't make conne...
查看>>
python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
查看>>