远程过程调用
远程过程调用 (RPC) 是提供操作系统中使用的高级通信范例的协议。 RPC假定存在低级传输协议( Transmission Control Protocol 如TCP Internet Protocol /IP或 User Datagram Protocol UDP),用于在通信程序之间传输消息数据。 RPC 实现专为支持网络应用程序而设计的逻辑客户机到服务器通信系统。
本章提供了有关编程 RPC 的以下信息:
RPC 协议是基于 eXternal 数据表示 (XDR) 协议构建的,该协议使远程通信中的数据表示标准化。 XDR 会转换所提供的每个 RPC 服务的参数和结果。
RPC 协议使用户能够使用远程过程,就像这些过程是本地过程一样。 远程过程调用是通过 RPC 协议中包含的例程定义的。 每条呼叫消息都与一条应答消息匹配。 RPC 协议是一种消息传递协议,用于实现其他非 RPC 协议,例如批处理和广播远程调用。 RPC 协议还支持回调过程和服务器端的 select 子例程。
客户机 是访问网络上另一个进程或计算机的服务或资源的计算机或进程。 服务器 是提供服务和资源并实现网络服务的计算机。 每个网络 服务 都是远程程序的集合。 远程程序实现远程过程。 这些过程,它们的参数以及结果都记录在特定程序的协议中。
RPC 提供用于相互标识服务器和客户机的认证进程。 RPC 包含每个远程过程调用上的认证参数的插槽,以便调用者可以向服务器标识自身。 客户机包生成并返回认证参数。 RPC 支持各种类型的身份验证,如 UNIX 和数据加密标准 (DES) 系统。
在 RPC 中,每个服务器提供一组远程服务过程的程序。 主机地址,程序号和过程号的组合指定一个远程服务过程。 在 RPC 模型中,客户机进行过程调用以将数据包发送到服务器。 当包到达时,服务器调用分派例程,执行所请求的任何服务,并将应答发送回客户机。 然后,过程调用将返回到客户机。
RPC 接口通常用于在网络中不同工作站上的进程之间进行通信。 但是, RPC 同样适用于同一工作站上不同进程之间的通信。
端口映射器程序将 RPC 程序和版本号映射到特定于传输的端口号。 "端口映射器" 程序使远程程序的动态绑定成为可能。
要使用 RPC 编写网络应用程序,程序员需要网络理论的工作知识。 对于大多数应用程序,了解通常由 rpcgen 命令的协议编译器隐藏的 RPC 机制也很有用。 但是,使用 rpcgen 命令会避免需要了解 RPC 的详细信息。