TCP(传输控制协议)是一种面向连接、可靠的传输层协议,它通过以下核心机制保障数据的可靠交付 TCP传输控制协议是一种面向连接、可靠的传输层协议它通过以下核心机制保障数据的可靠交付序号Sequence Number与确认号Acknowledgment Number为每个字节编号接收方通过ACK确认已正确收到的数据实现有序交付和流量控制基础超时重传Retransmission on Timeout发送方启动定时器若未在规定时间内收到ACK则重发对应报文段校验和Checksum检测传输过程中数据是否发生比特错误覆盖首部和数据滑动窗口机制实现流量控制与拥塞控制动态调整发送速率三次握手建立连接、四次挥手终止连接确保通信双方状态同步。而UDP用户数据报协议是无连接、轻量级的协议其特点包括无连接、无握手开销不提供重传、不保证顺序、不保证送达仅提供端口寻址和简单校验和可选且不强制校验数据适用于实时性要求高、能容忍少量丢包的场景如视频流、DNS查询、VoIP。二者的选择取决于应用需求可靠性优先选TCP低延迟/低开销优先选UDP上层可自行增强如QUIC基于UDP实现可靠传输。TCP 的快速重传Fast Retransmit机制是一种基于重复ACKDuplicate ACK的触发式重传策略用于在超时前尽早发现并重传丢失的数据段从而显著降低重传延迟提升传输效率。✅ 快速重传的触发条件当发送方连续收到3个或更多RFC 5681 规定为 ≥3相同确认号ACK的重复ACK时即认为该ACK所确认序号之后的下一个报文段已丢失例如已发 Seq100、200、300、400接收方收到100、300、400但没收到200 → 会重复发送 ACK200此时立即重传序号为该ACK值对应的数据段即Seq200而无需等待重传定时器RTO超时。 补充说明接收方在收到失序报文时必须立即发送对最新按序到达数据之前的期望序号的ACK即“重复ACK”这是快速重传得以工作的前提快速重传常与快速恢复Fast Recovery配合使用重传后不直接退回到慢启动而是将拥塞窗口设为cwnd ssthresh 3×MSS每收到一个重复ACK加1个MSS并在收到新ACK确认新数据后退出恢复状态。⚖️ 快速重传 vs 超时重传Timeout Retransmission对比特性快速重传Fast Retransmit超时重传Timeout Retransmission触发条件收到 ≥3 个重复ACK针对同一序号重传定时器RTO超时未收到对应ACK响应速度毫秒级响应通常在RTT内完成至少需等待 RTO通常 ≥ 1×RTT可能达数倍RTT适用场景适用于单个报文段丢失非突发丢包适用于严重网络恶化如多包丢失、路径中断、RTO估算偏差大拥塞反应常伴随快速恢复避免激进降窗cwnd 不归零触发慢启动ssthresh ← max(cwnd/2, 2×MSS)cwnd ← 1×MSS可靠性保障是补充机制不能替代超时重传如连续丢多个包时可能失效是最终兜底机制确保任何丢包终被重传 实际中二者共存快速重传处理常见轻度丢包超时重传兜底应对极端情况。现代TCP实现如Linux CUBIC、BBR均默认启用快速重传/恢复。