计算机网络自顶向下方法24——运输层 可靠数据传输 超时间隔加倍 快速重传 是回退n步还是选择重传

可靠数据传输的进阶机制:超时间隔加倍与快速重传

我们之前讨论的回退N步和选择重传是基础模型,而TCP的实现是一种混合体,它汲取了多种思想的精华,以应对复杂的真实网络环境。

一、一些"有趣"的情况与基础协议的困境

1. 情况一:轻微的临时延迟 vs 严重的包丢失

  • 场景:一个数据包的ACK稍微来晚了一点,可能是因为网络中存在短暂的排队。

  • GBN/SR的困境 :如果超时间隔是固定的,这次轻微的延迟就会触发不必要的重传。在GBN中,这甚至会引发一连串不必要重传,浪费带宽。

2. 情况二:单个数据包丢失

  • 场景:在一个很长的数据流中,只有一个数据包丢失了,其后的数据包都顺利到达。

  • GBN的困境 :由于GBN接收方会丢弃所有失序的包,发送方需要回退并重传丢失包之后的所有包。一个丢包,代价巨大。

  • SR的困境:SR虽然只重传丢失的包,但它需要等待该包的超时计时器到期,这可能需要等待一个完整的超时间隔,恢复速度慢。

二、TCP的解决方案之一:超时间隔加倍

这是TCP拥塞控制的重要组成部分,但它在处理上述"情况一"时非常有效。

  • 机制 :每当TCP重传一个报文段后,它并不是使用原来的超时间隔,而是将下一次的超时间隔设置为前一次的两倍。

  • 如何解决问题一?

    • 如果是因为轻微的网络波动导致超时,在重传后,网络很可能已经恢复。重传的包会很快被确认,TCP随后会将超时间隔降回正常值。

    • 如果是因为真正的网络拥塞导致连续丢包,这种指数级退避策略能迅速降低发送方的重传速率,给网络足够的时间来缓解拥塞,这是一种"利他"行为。

  • 本质 :这是一种谨慎的、自适应的策略。它承认自己无法准确判断丢包原因,于是采取一种对网络更友好的方式。

三、TCP的解决方案之二:快速重传

这是TCP为了处理"情况二"(单个包丢失)而设计的高效机制,它极大地减少了等待超时的时间。

  • 机制 :如果接收方收到了一个失序的数据包 (例如,期望Seq=1000,却收到了Seq=1500),根据TCP标准,它应该立即重复发送最后一个按序包的ACK(即再次发送Ack=1000)。

  • 触发条件 :当发送方连续收到3个重复的ACK 时,它就有很强的理由认为这个被期望的报文段(Seq=1000)已经丢失了,而不是仅仅延迟了(因为如果只是延迟,不会引发后续多个包的确认)。

  • 行动 :于是,发送方无需等待该报文段的超时计时器到期,就立即重传那个被认为丢失的报文段。

四、是回退N步还是选择重传?

这是一个非常好的问题。答案是:TCP是一种混合体,但它的行为在此时更偏向于"选择性重传"。

  • 它像GBN的地方:

    • TCP使用累积确认,确认号表示该序号之前的所有字节都已收到。这是GBN的思想。

    • 接收方可以接受失序的报文段并缓存它们,这是对纯GBN的改进,偏向SR。

  • 它像SR的地方(尤其是在快速重传中):

    • 快速重传机制只重传那个被推断为丢失的单个报文段,而不是所有后续报文段。这正是SR的核心思想。

    • 在快速重传之后,TCP通常会进入一个名为 "快速恢复" 的阶段,而不是像GBN那样完全回退。

结论:

TCP的可靠数据传输协议不是一个教科书式的GBN或SR。它巧妙地结合了:

  1. GBN的累积确认:实现简单,节省ACK开销。

  2. SR的缓存与选择性重传思想:通过快速重传/恢复机制,高效地处理单个丢包,避免了GBN的性能悬崖。

这种混合设计使得TCP在保持相对简单的同时,在效率上达到了一个非常高的水平,完美地平衡了复杂性、效率和可靠性。

相关推荐
裕晟资质规划6 小时前
三类资质变更报告时限差在哪?军工 15 日、集成印制 10 日
大数据·服务器·网络
轻舟技术A6 小时前
Provider 不属于 Agent 核心:rpi 的分层理由与收益
服务器·网络
骑着蜗牛撵大象3277 小时前
链路层不只是 MAC:以太网帧、ARP 与 802.1Q VLAN 的逐跳拆解
计算机网络·macos·ar·vlan·mac地址·链路层
Escalating_xu7 小时前
【Linux 网络编程】TCP Socket 编程(上):从 listen、accept 到完整回显通信
linux·网络·tcp/ip
NetX行者7 小时前
Python 工程化入门:从脚本到规范的 Python 项目结构
网络·python
Yang96117 小时前
从相位噪声到实时带宽:HD-063B支撑的频谱实验项目
网络
happyprince7 小时前
01-整体观-DeepSeek-V4.1-Flash全貌解读
网络
是真的小外套7 小时前
2023年软考中级信息安全工程师|选择题考点+5道案例分析真题解析(含答案)
java·服务器·网络
一条泥憨鱼9 小时前
【计算机网络】| 从 MAC 到 NAT 的跨网段通信全链路
服务器·网络·学习·计算机网络·macos
Moyu_Friday9 小时前
网络安全基础-计算机网络应用与协议
网络协议·计算机网络