TCP的四种计时器

TCP协议通过四种核心计时器来保障数据传输的可靠性和连接的有效管理。下面的表格汇总了它们的基本信息,方便你快速把握要点。

计时器名称 主要触发场景 核心功能 典型设置/行为
重传计时器 发送数据后等待确认 防止数据包丢失,确保可靠性 超时未收到确认则重传,时间基于RTT动态计算
坚持计时器 收到接收方"零窗口"通知 解决"零窗口"死锁,保持窗口更新 定时发送窗口探测报文,采用指数退避策略
保活计时器 连接长时间空闲 检测连接另一端是否依然有效 发送探测报文段,若多次无响应则断开连接
时间等待计时器 主动关闭连接后进入TIME_WAIT状态 保证连接彻底关闭,避免旧数据混淆 持续时间通常为2MSL(两倍报文最大生存时间)

🔍 深入了解各种计时器

1. 重传计时器

这是TCP可靠传输的基石。每当发送一个数据段后,这个计时器就会启动。它的核心任务是确保数据能送达对方。关键在于超时时间(RTO) ​ 的设置,它基于往返时间(RTT) ​ 动态计算。如果计时器超时前收到确认(ACK),计时器关闭;如果超时仍未收到,则重传该数据段并重置计时器。为解决重传时无法确定ACK是针对哪次发送的歧义,TCP采用了Karn算法,即在计算新RTT时忽略重传报文段的样本。

2. 坚持计时器

此计时器专门解决接收方通告零窗口 后可能出现的死锁。当发送方收到零窗口通知,会暂停发送。如果之后接收方窗口有空间了,其发送的"窗口更新"报文若丢失,双方会陷入无限等待:接收方等数据,发送方等窗口更新。此时,坚持计时器发挥作用,它到期后,发送方会发送一个探测报文 (仅1字节),提醒接收端重传窗口信息。其超时时间也采用指数退避策略增长,以避免过多探测报文加重网络负担。

3. 保活计时器

用于检测长时间空闲的连接是否有效。服务器端通常每2小时(默认值)若未收到客户端任何数据,会发送一个探测报文。客户端主机可能的状态包括:

  • 正常运行且可达:服务器收到正常响应,计时器复位。

  • 崩溃或不可达:服务器收不到响应,在连续发送多个(如10个)探测报文均失败后,判定连接失效并中断。

    需要注意的是,保活功能可能增加系统负担,且TCP标准不建议默认开启,应用层的心跳机制常是更好选择。

4. 时间等待计时器

在主动关闭连接的一方进入TIME_WAIT 状态时启动,持续时间为2MSL。这段时间有两个关键作用:

  • 确保最后的ACK能到达:如果被动关闭方未收到对FIN的ACK,会重传FIN,主动关闭方还能响应。

  • 让旧连接报文彻底消散:防止之前连接延迟的报文段被新建立的相同连接错误接收。

💎 总结

这四个计时器各司其职又相互配合:重传计时器 保障单次发送可靠;坚持计时器 确保流量控制机制不僵死;保活计时器 管理连接生命周期;时间等待计时器保证连接优雅关闭。它们共同构成了TCP协议可靠、稳定特性的重要基础。

希望这些解释能帮助你清晰地理解TCP的四种计时器。如果对某个细节还想深入了解,我们可以继续探讨。

相关推荐
寻星探路3 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
七夜zippoe6 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥6 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
会员源码网6 小时前
理财源码开发:单语言深耕还是多语言融合?看完这篇不踩坑
网络·个人开发
米羊1217 小时前
已有安全措施确认(上)
大数据·网络
Fcy6487 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满7 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠7 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
主机哥哥8 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
Harvey9038 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s