智算多多



在TCP可靠传输的六大机制中,超时重传(Timeout Retransmission) 是最基础、最核心、最必不可少的一环。
几乎所有网络面试都会问: TCP超时重传机制是为了解决什么问题?
这道题看似简单,却能直接看出你是否真正理解TCP的设计本质。本文将用流程图+通俗讲解+原理拆解+异常场景,给你一篇最完整、最适合发布CSDN的技术博客。
IP网络是不可靠的:
数据包发出去,可能消失在网络中,永远到不了对端。 TCP必须解决:丢包怎么办?
答案就是:超时重传。
TCP超时重传机制,就是为了解决【数据包在网络中丢失】的问题,确保发送出去的数据最终一定能被对方收到,从而实现可靠传输。
展开来说,它解决3类具体丢包问题:
发送方发出数据
启动超时计时器 RTO
在RTO时间内收到ACK?
是 → 正常传输,发送下一批数据
否 → 判定为网络丢包 → 执行超时重传:重新发送数据 → 重启计时器
场景:发送方发了数据,但数据在网络中丢失。 后果:接收方收不到数据,不会回复ACK。 超时重传作用:检测到无响应,重新发数据。
数据丢失 → 发送方 → 网络黑洞 → 接收方:收不到任何包 → 发送方:收不到ACK → 超时触发 → 重传数据 → 成功到达
场景:数据到达了,但ACK丢了。 后果:发送方不知道对方已收到。 超时重传作用:重发数据,接收方用序列号去重,不重复处理。
发送方发数据 → 接收方收到 → 网络黑洞 → 发送方未收到ACK → 超时重传 → 接收方:重复包,直接丢弃
场景:报文没丢,但走得太慢,超过等待时间。 后果:发送方误认为丢包。 超时重传作用:先重传保证速度,延迟包到达后直接丢弃。
TCP不会固定等1秒、2秒,而是动态计算超时时间:
规则:
目的:不要太早重传导致拥堵,也不要太晚重传导致卡顿。
关系: 快重传是优化,超时重传是保底机制。 没有超时重传,TCP就没有可靠性。
解决数据包在网络中丢失、确认包丢失、报文过度延迟的问题,确保数据一定能可靠到达对端,是TCP实现可靠传输的核心保障。
超时重传就像: 你发微信没人回,等一会儿再发一遍,确保对方一定收到。
在Wireshark抓包中,TCP重传包会标记:
[TCP Retransmission]
这是排查网络丢包最常用的特征。
TCP超时重传机制示意图