【问题标题】:How can a Data Transfer Protocol using NAKs only be reliable?仅使用 NAK 的数据传输协议如何可靠?
【发布时间】:2013-07-28 05:49:22
【问题描述】:

我一直在研究一本关于计算机网络的书(这不是家庭作业题)

其中一个问题比较了基于 ACK 和 NAK 的数据传输协议,重点是对于基于 NAK 的协议,当接收到第 (x + 1) 个数据包时,可以检测到数据包 x 的数据包丢失.

但是,我的问题是,如果接收方发送的 NAK 在到达发送方之前丢失会怎样?发件人不会意识到错误,也不会重新传输。此外,如果数据包是序列中的最后一个呢? (没有后续要测试的数据包)

我看不出纯 NAK 协议如何可靠(以正确的顺序传送每个数据包)

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于计算机科学,而不是计算机编程。

标签: networking tcp network-protocols


【解决方案1】:

我怀疑书中描述的理论背景假设了无限的数据包流,并忽略了通道完全禁用等情况。在实践中,还有其他结构被定义为 ACK/NAK 协议的一部分,或者由更高或更低层协议来处理。例如,物理层会提供诸如“通道中断”之类的指示,并且上面的协议可能会发送/接收“流结束”数据包,并使用计时器检测最后一个数据包的 NAK 丢失的情况。这些只是假设的例子,但是现实生活中的协议所做的事情的类型。

我看不出纯 NAK 协议如何可靠(提供每个 数据包顺序正确)

我确定这本书暗示有某种机制可以按顺序识别数据包。否则,接收方将无法指示它正在 NAK'ing 哪个数据包,即大多数协议在每个数据包/ack/nak 中使用一个序列号。

【讨论】:

    【解决方案2】:

    仅 NAK 协议可以通过让接收方在发送 NAK 时启动计时器并在计时器超时时重新传输 NAK 来实现可靠性,然后重新传输丢失的数据包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 2016-05-26
      • 2011-07-01
      • 2012-12-13
      相关资源
      最近更新 更多