我想知道UDP是否被认为是“尽力而为”的服务?
我问的原因是因为无法保证任何数据包都会到达目的地。因此,UDP可以被归类为“尽力而为”,还是有另一个被认为是“正确”描述方式的术语?
感谢。
答案 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