TCP 可靠传输实现原理 - 1.确认和重传

TCP 可靠传输实现原理 - 1.确认和重传

💡 原文中文,约8900字,阅读约需22分钟。
📝

内容提要

TCP 可靠传输的核心机制包括确认与重传、滑动窗口和拥塞控制。确认机制通过序列号和确认号确保数据包按序接收,丢包时发送方可重传。超时重传和快速重传是两种重传策略,选择性确认进一步优化重传效率,仅重传丢失的数据包。

🔎

延伸解读

超时重传与快速重传的权衡

超时重传通过RTO定时器触发,但被动等待导致延迟高,且超时后拥塞窗口锐减,可能加剧网络拥塞。快速重传依赖3个重复ACK触发,无需等待RTO,能更快恢复,但可能因乱序产生不必要的重传。两者互补:快速重传适合大文件传输,而小文件因数据包少,难以凑齐3个重复ACK,只能依赖超时重传。

选择性确认(SACK)的优化与局限

SACK允许接收方告知已收到的非连续数据块,使发送方仅重传丢失的数据段,避免重传整个窗口,尤其适合大范围数据传输中个别丢包的情况。但SACK需要双方支持,且接收方可能Reneging(丢弃已SACK的数据),因此发送方仍需依赖ACK和RTO,不能完全信任SACK。

重复选择性确认(Dup SACK)的作用

Dup SACK通过重复报告已接收的数据块,帮助发送方区分丢包类型:若收到Dup SACK,说明数据包已到达,丢失的是ACK应答包或数据包延迟,而非数据丢失。这避免了不必要的重传,提升了传输效率。但Dup SACK是SACK的扩展,同样需要双方支持。

延迟确认的潜在性能陷阱

延迟确认通过合并ACK与数据减少包数量,但在小数据包通信、实时通信或高并发短连接中,可能引入额外延迟。尤其当发送窗口很小时,延迟确认会导致发送方等待ACK而停顿,传输效率急剧下降。此外,延迟确认会干扰RTT测量,需启用TCP Timestamps来精确监测。

❓

Q&A

TCP的确认机制是如何工作的?

TCP的确认机制通过序列号和确认号确保数据包按序接收,接收方发送确认消息(Ack)给发送方,表明已成功接收到数据包。

什么是超时重传和快速重传?

超时重传是在发送方未收到确认时,经过设定的超时时间后重发数据包;快速重传则是在接收到重复确认时,立即重发丢失的数据包,无需等待超时。

选择性确认如何优化TCP的重传效率?

选择性确认允许接收方告知发送方哪些数据包已成功接收,从而只重传丢失的数据包,避免不必要的重传,提高效率。

滑动窗口在TCP中有什么作用?

滑动窗口用于流量控制,帮助发送方自动调整发送速率,以提高吞吐量并充分利用链路带宽。

TCP的拥塞控制是如何防止丢包的?

TCP的拥塞控制通过监测网络状态,动态调整发送速率,防止网络链路过载,从而减少丢包的发生。

TCP的重传机制有哪些局限性?

TCP的重传机制在面对大范围丢包时,可能无法准确判断哪些数据包需要重传,导致效率降低。

🏷️

标签

➡️

继续阅读