什么是 RPC 实现?
当一台计算机上的程序想要请求另一台计算机(在不同的网络中)上运行的另一个程序时,程序可能使用的协议称为远程过程调用。
使用此协议,程序无需了解网络详细信息。
RPC 的应用
RPC 的一些应用如下:
Windows 中的活动目录服务使用此协议。
大多数 MMC 终端也使用此协议。
许多 DCOM 组件都基于 RPC。
一些实用程序,如“Windows 计算机管理”、“注册表编辑器”等,允许我们联系远程系统。这些也使用 RPC 协议。
RPC 实现
让我们考虑下面 RPC 的示意图:
解释
步骤 1 - RPC 包含一个称为存根过程的客户端程序,该程序连接到其自己的地址空间。参数以通常的方式传递。客户端没有发现或注意到此调用有任何异常之处,因为它是一个本地调用。
步骤 2 - 现在客户端存根收集参数并将它们打包到一条消息中。此操作称为参数编组。消息构建完成后,将其传递给传输层进行传输。
步骤 3 - 在无连接的 LAN 系统中,传输实体会在消息中附加一个报头并将其发送到网络上。在 WAN 中,实际传输会稍微复杂一些。
步骤 4 - 当消息到达服务器端时,传输实体会将其传递给服务器存根,然后服务器存根会解组参数。
步骤 5 - 然后服务器存根将调用服务器过程,并以标准方式传递参数。服务器过程无法判断它是否被远程激活,因为它的直接调用者是一个本地过程,该过程遵循所有标准规则。只有存根知道正在发生一些特殊的事情。
步骤 6 - 完成其工作后,服务器过程将以与任何其他过程完成时相同的方式返回。然后它将结果返回给调用方。
步骤 7 - 服务器存根将结果编组到一条消息中,并将其传递到传输接口,可能通过进行系统调用,如步骤 2 中所示。
步骤 8 - 之后,回复返回到客户端计算机。
步骤 9 - 回复后,它将传递给客户端存根。最后,客户端存根返回到其调用者,即客户端过程。
步骤 10 - 服务器返回的任何值都将提供给客户端。