为什么在进行远程过程调用时 UDP 优于 TCP?

Why is UDP preferred over TCP, in making remote procedure call?

我在读 RPC。博客, https://www.cse.iitk.ac.in/users/dheeraj/cs425/lec26.html, 推荐使用 UDP 而不是 TCP, 在进行远程过程调用时,为什么 UDPTCP 更受欢迎?

在进行远程过程调用时,UDP 通常不优于 TCP。事实上,大多数 RPC 技术的实现,如 CORBA、XML-RPC、SOAP、Java RMI……使用 TCP 而不是 UDP 作为底层传输。 TCP 在这里是首选,因为与 UDP 不同,它已经关心可靠性(处理数据包丢失、重复、重新排序)并且还可以轻松透明地处理任意大小的消息。

您引用的博客指的是与 NFS 一起使用的经典 Sun-RPC,它主要用于本地网络 - 与通常用于更复杂网络环境的当前 RPC 技术相反。在这种环境下,此时(很久以前)UDP 提供了比 TCP 更小的开销和更快的网络问题恢复,因为没有初始握手和必要的重传,重新排序......完全控制 RPC 层和可以针对特定的用例进行调整。因此,虽然在这种环境中为特定的 RPC 优先使用 UDP 是有道理的,但不能说 UDP 应该优先用于任何类型的 RPC。