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

时间:2011-05-02 21:20:33

标签: udp

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

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

感谢。

3 个答案:

答案 0 :(得分:5)

一句话答案:是的,尽力而为是描述它的方式。

更长的答案......

来自RFC 768 - User Datagram Protocol ...

This protocol  provides  a procedure  for application  programs  to send
messages  to other programs  with a minimum  of protocol mechanism.  The
protocol  is transaction oriented, and delivery and duplicate protection
are **not guaranteed**. (emphasis mine)

答案 1 :(得分:2)

这不是真正的最好的努力,更多的是火和忘记。尽管“尽力而为”一词实际上是恕我直言,但这是不正确的,因为在非电信使用中,它至少意味着超出默认行为的一点努力,而且往往比这更多。

除非服务质量到位,否则网络的任何部分都不会对任何 IP数据包做出任何特殊限制,即便如此,那也是真正的逐跳而不是端到端。

答案 2 :(得分:1)

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

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

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