如何使udp可靠

网络工程 协议理论 UDP 速度
2021-08-02 19:45:00

在一次求职面试中,我遇到了一个问题,即

在我的公司,我们总是使用 udp,因为它非常快。我们也有可靠性。你能怎么回答?在不给 udp 增加如此多的开销的情况下,如何使 udp 可靠?

3个回答

UDP 本身并不可靠。数据确认/重传功能必须发生在更高(即应用程序)级别。TFTP 就是一个很好的例子。

虽然 UDP 不可靠,但许多协议将其用作基础并在应用程序级别增加可靠性。

您将确定您需要哪些功能,以及您将实施哪些功能:

  • 连接处理(跟踪连接)
  • 排序(依赖于帧的顺序)
  • 确认(以确保收到所有帧)
  • 流量控制(节流数据流)

有时你只需要几个特征而不是全部。尽管如果您使用所有功能,请不要自己构建它:TCP 只会在几个额外的标头字节和一些握手数据包中压缩这一切;)

一种方法可以是使用[R eliable UDP(RUDP或RDP)。这个想法是,发送方将所有数据包作为普通 UDP 数据包发送,接收方将所有数据包编入索引。一旦传输完所有数据包,接收器就会发送一个它没有收到的数据包索引列表。这可以使 UDP 可靠。

虽然这种方法可行,但它挑战了UDP 的核心思想,即一些数据丢失是可以接受的。例如,在观看电影时(在传输级别使用 UDP 的流媒体服务上),我们不希望在我们已经看过电影后丢失的数据包回来。

但它可能在其他领域有用。