UDP 是否被认为是“尽力而为”的服务?

问题描述 投票:0回答:3

我想知道 UDP 是否被认为是“尽力而为”的服务?

我问的原因是因为根本无法保证任何数据包都会到达目的地。因此,UDP 是否可以归类为“尽力而为”,或者是否有另一个术语被认为是“正确”的描述方式?

谢谢。

udp
3个回答
5
投票

Best-effort是描述UDP的一种方式;另一个词是“不可靠”......

考虑维基百科条目...比较维基百科中“可靠”和“可靠性”这两个词的用法(下)...

TCP 在通过 IP 网络通信的主机上运行的应用程序之间提供可靠、有序和错误检查的八位字节(字节)流传输。

UDP的可靠性问题在维基百科文章中也有讨论

UDP 使用简单的无连接通信模型,协议机制最少。 UDP 提供用于数据完整性的校验和,以及用于寻址数据报源和目标处的不同功能的端口号。它没有握手对话,因此将用户的程序暴露给底层网络的任何不可靠性;不保证交付、订购或重复保护。

  • 来自 RFC 768 - 用户数据报协议...

    本协议提供应用程序发送的程序 使用最少的协议机制向其他程序发送消息。这 协议是面向事务的,并且传递和重复保护 不保证。 (强调我的)


2
投票

这不是真正的最大努力,更多的是即刻即弃。尽管术语“尽力而为”实际上是恕我直言,但它是不正确的,因为在非电信用途中,它至少意味着超出默认行为的一点点努力,而且通常比这更多。

网络的任何部分都不会为任何 IP数据包提供任何特殊津贴,除非有服务质量到位,即使那样,这实际上是逐跳而不是端到端。


1
投票

UDP 通常比 TCP 更快,因为它不需要进行 TCP 必须处理的一致性开销检查。这意味着 UDP 最常用于需要正确传输每个最后一个数据包的程序中。这并不意味着 UDP 是一种“尽力而为”的服务,它更像是“你现在需要信息,而不关心它是否全部存在”

这在许多 TCP 不太理想的情况下很有用。例如,DNS 和 DHCP 使用 UDP,因为它每一种方式只有一个数据包。这样速度更快,当用户想要上网时,速度很重要。它也用于流媒体情况,其中一个数据包丢失或乱序不会影响流的流动。就像电视一样,如果丢了一个数据包,没有人会注意到,这没什么大不了的。

无论如何,我无法像维基百科那样回答这个问题。所以这是维基百科上 UDP 的链接,http://en.wikipedia.org/wiki/User_Datagram_Protocol

© www.soinside.com 2019 - 2024. All rights reserved.