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的四种计时器。如果对某个细节还想深入了解,我们可以继续探讨。

相关推荐
R.lin4 小时前
Docker核心原理详解
运维·docker·容器
Dovis(誓平步青云)4 小时前
《Linux内核视角:自定义协议与TCP的协同通信之道》
网络·网络协议·tcp/ip
广东大榕树信息科技有限公司4 小时前
如何通过动环监控系统提升机房安全与管理效率?
运维·网络·物联网·国产动环监控系统·动环监控系统
QT 小鲜肉4 小时前
【Linux命令大全】001.文件管理之chgrp命令(实操篇)
android·linux·运维·笔记
qq13267029404 小时前
grafana 未授权访问漏洞设置iptables指定IP访问,拒绝其他所有IP
linux·服务器·网络·iptables·防火墙策略
春日见4 小时前
ubuntu以前可以联网,突然无法上网了
linux·服务器·ubuntu·debug
曹牧4 小时前
内部服务错误500
服务器·开发语言
gaize12134 小时前
一台服务器能做什么
服务器·云计算
while(1){yan}4 小时前
HTTP的数据报格式
java·开发语言·网络·网络协议·http·青少年编程·面试