Qt/C++ 发表于 2018-6-23 10:18:00

PRC - 客户服务器 Remote Procedure Call远程过程调用 网络通信协议

PRC - 客户服务器 Remote Procedure Call远程过程调用 网络通信协议
RPC 是 Remote Procedure Call 的缩写,中文译为 "远程过程调用",是通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的一种 "网络通信协议"。
RPC 最初由 Sun 公司提出,IETF ONC 宪章重新修订了 Sun 版本,使得 ONC PRC 协议成为了 IETF 标准协议。目前,存在多种 RPC 模式,现使用最普遍的是开放软件基础的 "分布式计算环境 (DCE)"。
RPC 协议会先假定某些网络传输协议 (如 TCP 或 UDP) 已存在,再为通信程序之间携带信息数据。在 OSI 网络通信模型中,RPC 跨越了传输层和应用层,使开发 "网络分布式" 应用变得更容易。
RPC 采用 "客户端 + 服务器" 模式,请求程序为 "客户端",服务提供程序为 "服务器"。首先,"客户端" 调用进程发送一个带进程参数的信息给服务进程,然后等待 "服务器" 应答信息。"服务器" 进程一般会保持睡眠状态,直到 "客户端" 调用信息到达停止睡眠。当一个调用信息到达 "服务器" 端,"服务器" 会获得进程参数,然后计算、发送答复信息,然后再等待下一个调用信息;最后,"客户端" 调用过程接收答复信息,获得进程结果。


高效智能 所见即所得的 "HTML5 Bootstrap4 网页 IDE" 网站站群 集成开发环境
http://ideweb.digitser.cn/http://forum.digitser.cn/thread-2322-1-1.html
百度网盘
https://pan.baidu.com/s/1i5tKlZB
软件仓库
https://github.com/digitser
https://digitser.sourceforge.io/https://pan.baidu.com/s/1TV70__Be1ta0ney1-tudFQ
工作原理
RPC "客户端" 对 "服务器" 的调用,大致分以下 10 步:0
1、调用 "客户端" 句柄,传送参数

02、调用 "客户端" 本地系统内核,发送网络消息
0
3、消息被传送到远程 "服务器" 主机
0
4、"服务器" 句柄获取消息,及相关参数

0
5、执行 "服务器" 远程过程


06、调用 "服务器" 句柄

07、"服务器" 句柄计算,调用 "服务器" 远程系统内核

08、"服务器" 将消息传回 "客户端" 本地主机
0
9、"客户端" 句柄内核接收消息

10、"客户端" 接收句柄获取数据
PRC 同步-异步调用
同步 RPC 调用就是客户端等待调用执行完成,并返回结果。
异步 RPC 调用就是客户端不等待调用执行完成返回结果,不过依然可通过回调函数等接收到返回结果的通知。若客户端并不关心结果,则还可变成一种单向调用。
这个过程有点类似于 Java 中的 callable 和 runnable 接口,异步执行时,如需要知道执行结果,就可使用 callable 接口,且可通过 Future 类获取到异步执行的结果信息。如不关心执行结果,直接使用 runnable 接口就可以了,因为它不会返回结果,当然,callable 也是可以,不去获取 Future 就行了。
RPC over HTTPMicrosoftRPC over HTTP 允许 RPC "客户端" 安全-有效地通过 Internet 连接到 RPC "服务器" 程序,执行远程过程调用。
Microsoft RPC 代理运行在 IIS 计算机之上,接受来自 Internet 的 RPC 请求,并在这些请求之上执行 "认证-校验-访问"。若请求通过所有测试,RPC 代理将请求转发给真正执行处理的 RPC 服务器。
通过 RPC over HTTP,RPC 客户端不会和服务器直接通信,它们使用 RPC 代理作为中间件。
详细开启方法:开始 --> 控制面板 --> 系统和安全 --> 管理工具 --> 服务 --> Remote Procedure Call (RPC) --> 双击打开 --> 启动
RPC vs HTTP
RPC 主要基于 TCP/IP 协议,而 HTTP 是建立在 TCP 网络传输层协议之上,所以,RPC 更胜一筹。

OSI 七层网络结构模型 (虽然实际应用中基本上都是 5 层,没有表示层和会话层,被合并到了应用层),从上至下:01、应用层定义用于网络中,进行通信和传输数据的接口
02、表示层定义不同系统中数据的传输格式,编码和解码规范等
03、会话层管理用户会话,控制用户间逻辑连接的建立和中断
04、传输层管理网络中"端到端" 的数据传输
05、网络层定义网络设备间如何传输数据
06、链路层将上面网络层的数据封装成数据帧,便于物理层传输
07、物理层传输二进制数据
OSI 网络结构模型的重点是 "应用层" 和 "传输层";因为,HTTP 是应用层协议,而 TCP 是传输层协议。
http://forum.digitser.cn/data/attachment/forum/201605/19/132155fevczeyds5e5y1wy.jpg"长按二维码" 或 "扫一扫" 关注 "德云社区" 微信公众号
版权声明:
本文为独家编译稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。

页: [1]
查看完整版本: PRC - 客户服务器 Remote Procedure Call远程过程调用 网络通信协议