TCP重传机制:超时重传与SACK选择性确认

引言 在前面的文章中,我们学习了TCP的拥塞控制机制(慢启动、拥塞避免等)。今天我们来学习TCP如何应对数据丢失:重传机制(Retransmission)。 为什么需要重传? 网络是不可靠的:数据包可能丢失、损坏、重复、乱序 TCP要提供可靠传输:保证数据正确、完整、有序地到达 重传是可靠性的核心保障 今天我们来理解: ✅ 超时重传(RTO)的计算方法 ✅ 快速重传的触发条件 ✅ SACK选择性确认机制 ✅ 如何用Wireshark分析重传问题 第一性原理:如何检测数据丢失? 两种丢失检测方式 1. 超时检测(Timeout-based) 原理:发送方设置一个定时器,如果超时还没收到ACK,认为数据丢失 发送方 接收方 | seq=100(发送) | |---------------------------------->| | 启动定时器(RTO=1秒) | | | | 等待ACK... | | | (数据包丢失) | 1秒后,超时! | | seq=100(重传) | |---------------------------------->| | ACK=101 | |<----------------------------------| 优点:可以检测到所有丢包 缺点:超时时间较长,影响性能 2. 重复ACK检测(Duplicate ACK) 原理:接收方收到乱序数据时,发送重复ACK,发送方收到3个重复ACK后立即重传 发送方 接收方 | seq=100(到达) | |---------------------------------->| | ACK=101 | |<----------------------------------| | | | seq=101(丢失!) | |----X | | | | seq=102(到达) | |---------------------------------->| | ACK=101(重复ACK #1) | |<----------------------------------| | | | seq=103(到达) | |---------------------------------->| | ACK=101(重复ACK #2) | |<----------------------------------| | | | seq=104(到达) | |---------------------------------->| | ACK=101(重复ACK #3) | |<----------------------------------| | | | 收到3个重复ACK,立即重传! | | seq=101(快速重传) | |---------------------------------->| | ACK=105(确认101-104都收到了) | |<----------------------------------| 优点:快速检测,不需要等待超时 缺点:需要后续数据包到达才能触发 ...

2025-11-20 · maneng

如约数科科技工作室

浙ICP备2025203501号

👀 本站总访问量 ...| 👤 访客数 ...| 📅 今日访问 ...