【问题标题】:Reliable data transfer on a lossy channel在有损信道上进行可靠的数据传输
【发布时间】:2010-11-11 10:48:40
【问题描述】:

假设您在 2 个对等方之间已经有一个不可靠的有损信道。您可以建议哪些方法来可靠地传输数据并且不会降低性能?此外,底层协议不是 TCP(这已经是可靠的)。 (我使用有损通道来概括问题。)

( AFAIK,存在一些方法,例如 RDT (rfc-908),Go Back-N。)

【问题讨论】:

  • 即使在您的编辑声明您没有使用 TCP 之后 - 尝试在该有损通道上模仿 TCP 的行为,您将获得可靠的数据传输。
  • Poni,我正在研究其他应用层协议。

标签: data-transfer reliability


【解决方案1】:

http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Reliable_transmission

因为有人已经解决了这个问题,并且有一个或十个库 (TCP/IP) 可以用所有存在的语言来解决这个问题。

这是一个哲学问题吗?

【讨论】:

  • +1 简单但非常正确的答案。仅此而已。我建议 whoi 通读规范并理解为什么 TCP 标头中的每个位实际上都存在。您会很快得到答复。
  • 嗯,是的,确实可以读取整个 TCP 堆栈,并且可以重新发现该方法。但是,正如我所说,还有其他方法,而不是实现 TCP。我问的是应用程序级别,而不是协议。
  • 很公平。我建议在 IEEE 等通常的地方寻找关于该主题的科学论文。 WLAN技术应该很丰富。
  • 在他的情况下,整个 TCP 堆栈可能是矫枉过正。
【解决方案2】:

没有性能损失通常意味着减少对反向通道的依赖,从接收方向发送方发送 ACK。这通常意味着使用数据报和使用某种形式的前向纠错 (FEC) 的自定义协议。请注意,FEC 是一种滑动比例,通常会显着降低性能,因为根据定义,您会抢先发送额外的冗余数据,这样接收方就不必要求它了。

http://en.wikipedia.org/wiki/Forward_error_correction http://udt.sourceforge.net/

【讨论】:

    【解决方案3】:

    正如 Steve-o 所说,FEC 和 Kdansky 建议的 Retransmission 是很好的起点。重传的主要瓶颈是往返时间,这会导致接收丢失数据包的延迟。然而,FEC 是一个完全不同的主题,适用于数据包级别。正如 Steve-o 再次所说,瓶颈变成了您通过生成冗余流引起的带宽开销。虽然看起来很简单,但不同的 FEC 方案,如 Parity FEC、Reed-Solomon、Turbo 码、Raptor Q 等……根据它们的参数,对延迟、带宽开销等有不同的影响。 (主要取决于您用于生成冗余流的编码率)

    【讨论】:

      猜你喜欢
      • 2013-08-26
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 2019-07-30
      • 2014-07-05
      相关资源
      最近更新 更多