博客
关于我
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删除列表元素的三种方法
查看>>
python初步学习-python数据类型-集合(set)
查看>>
python列表生成字典_Python中将字典转换为列表的方法
查看>>
python列表对应元素合并为列表及判断一个列表是几维
查看>>
python列表去重复后按照顺序_从包含不可共元素的Python列表中删除重复元素,同时保留顺序?...
查看>>
python列表前几个_python之列表
查看>>
python列表元组
查看>>
Python列表/元组/字典和集合使用
查看>>
python列表 行列选择_python_pandas_dataframe_行列选择_切片操作
查看>>
python列表
查看>>
python列出当前目录、子目录和文件的脚本
查看>>
python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校体测管理系统的设计与实现(程序+开题+论文)
查看>>
Python切片对象和__getitem__
查看>>
python+flask计算机毕业设计高校体育竞赛成绩管理系统的设计与实现(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校体育赛事系统(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校体育运动会比赛系统(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校危化品管理系统(程序+开题+论文)
查看>>