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

标签 c tcp udp rpc

我正在阅读有关 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。

关于c - 为什么在进行远程过程调用时 UDP 优于 TCP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53931365/

相关文章:

node.js - UDP 多播失败 - NodeJS/Windows 10

c - 为什么C中的箭头(->)运算符存在?

c - 为什么 strtok 返回错误的 token 数量?

c - 从字符数组中提取一组字符/字符串

java - 使用java sockets时是否保证数据有效性?

c++ - std::future 在 Boost UDP 套接字异步接收操作中不起作用

编译器不会在函数参数不匹配时发出错误/警告

apache - 如何与反向代理建立 TCP 连接

wcf - 同一台计算机 WCF 消息交换 => TCP?

iphone - iPhone 上的本地与远程套接字连接