UDP丢失数据恢复

UDP丢失数据恢复,udp,real-time,sensors,restore,Udp,Real Time,Sensors,Restore,我正在制作通过UDP接收传感器数据(如陀螺仪)的应用程序,我需要恢复丢失的数据。 怎么做 例如,在太空火箭中如何处理它?您不能要求重新传输,因为当设备在太空中时会花费太长时间 对不起,语法问题 //编辑 我忘了说我以固定频率发送数据包,以便设备知道它何时丢失了某些东西。对于延迟非常高的连接或单向连接,数据通常进行编码,以便不仅可以检测到传输错误,而且可以大部分修复。在最简单的情况下,您只需一次又一次地发送相同的数据,希望在一段时间后,它们能够被对等方成功接收。但还有比这更智能的编码。要了解RAI

我正在制作通过UDP接收传感器数据(如陀螺仪)的应用程序,我需要恢复丢失的数据。 怎么做

例如,在太空火箭中如何处理它?您不能要求重新传输,因为当设备在太空中时会花费太长时间

对不起,语法问题

//编辑


我忘了说我以固定频率发送数据包,以便设备知道它何时丢失了某些东西。对于延迟非常高的连接或单向连接,数据通常进行编码,以便不仅可以检测到传输错误,而且可以大部分修复。在最简单的情况下,您只需一次又一次地发送相同的数据,希望在一段时间后,它们能够被对等方成功接收。但还有比这更智能的编码。要了解RAID-5和类似技术的工作原理,即使磁盘崩溃,数据仍然可以复制。

多年前,我为一款视频通信产品做了类似的工作:对于编号为P0、P1、P2等的每个数据包,您可以选择需要承受的突发丢失时间。让我们以3个数据包为例

您可以像往常一样通过P5发送P0来启动通信,但是P6附带了额外的数据:P0和P3的异或。P6具有P1和P4的异或,等等。如果您丢失了任意三个数据包,则可以重建它们。若Pn、Pn+1和Pn+2丢失,您可以使用Pn+6上的“额外”数据对Pn+3进行异或,以恢复数据包Pn

如果您能够支付内存和带宽以实现可靠性最大化,我建议每个数据包携带多个XOR。例如,Pn可能与Pn-3和Pn-6的异或以及Pn-12和Pn-24的另一个异或一起提供


您还可以使用来自接收端的反馈机制,该机制允许发送端通知发送端更改其恢复特性,发送更多或更少的恢复数据并调整间隔。

当有东西阻塞(例如,某些物理障碍)连接时,发送相同的数据包不是解决方案。因此,当我们丢失整个数据包时,RAID-5也不是一个答案发送相同的数据包并不意味着您必须立即发送它。您也可以稍后再发送。最后,您需要开发的协议在很大程度上取决于您预期的错误类型,即数据损坏可以通过纠错码处理,由于以后以某种方式重复数据而导致的数据丢失等。您期望的错误越多,协议的开销就越大,在重建数据时必须应用更多的缓冲和智能。没有一个神奇的解决方案能够独立于您的连接特性来处理所有这些问题。