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

时间:2018-12-26 11:20:03

标签: c tcp udp rpc

我正在阅读有关RPC的信息。博客, https://www.cse.iitk.ac.in/users/dheeraj/cs425/lec26.html建议在进行远程过程调用时使用UDP而非TCP,为什么UDPTCP更受青睐?

1 个答案:

答案 0 :(得分:5)

在进行远程过程调用时,通常不首选

UDP而不是TCP。实际上,大多数RPC技术的实现(例如CORBA,XML-RPC,SOAP,Java RMI等)都使用TCP而不是UDP作为基础传输。此处首选TCP,因为与UDP相反,它已经在乎可靠性(处理数据包丢失,重复,重新排序),并且还可以轻松透明地处理任意大小的消息。

您引用的博客提到了与NFS一起使用的经典Sun-RPC,它主要用于本地网络,这与在更复杂的网络环境中经常使用的当前RPC技术相反。在这种环境中,并且此时(很久以前),UDP没有TCP的开销较小,而且从网络问题中恢复的速度比TCP小,因为没有初始握手,不需要进行重新传输,重新排序...完全控制RPC层,并且可以调整到特定的用例。因此,尽管在这种环境下将UDP首选用于特定的RPC是有道理的,但是不能说UDP应该被首选用于任何类型的RPC。