RPC(Remote Procedure Call Protocol)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
定义
首先谈一谈过程调用,所谓过程调用,就是控制从A传递给B,返回时过程B将控制进程交给过程A,我们常见的情况是调用者和被调用者都在给定主机系统中的一个进程中,这类调用我们称之为本地过程调用。但在开发过程中我们常常需要一个服务器访问另一台服务器,而本地过程调用时不能满足我们的这种需求,所以便有了远程过程调用。
远程过程调有两个进程,一个是本地客户进程,一个是远程服务器进程,这种情况下,我们需要由客户进程生成一个消息,通过网络系统调用发给远程服务器,传输消息中包含过程调用所需要的参数,远程服务器接收到消息后调用相应的继承,然后将结果通过网络发回客户端,再由客户端返回结果给调用进程。
为了执行一个远程调用过程,我们需要知道:
- 如何找到远程代码?
- 若远程代码需要参数如何传递参数?
- 若远程代码有返回值,如何将返回值正确传递给调用者?
- 网络传输问题如何解决?
为了解决以上问题,人们提出了许多RPC协议。这些协议规定了如何为远程计算机提供地址,如何传递消息,如何启动远程调用,如何处理异常等等。