`
wangwei3
  • 浏览: 121528 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RPC

 
阅读更多
来自百度百科  http://baike.baidu.com/view/32726.htm

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

基本简介


   
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。   目前,有多种 RPC 模式和执行。最初由 Sun 公司提出。IETF ONC 宪章重新修订了 Sun 版本,使得 ONC RPC 协议成为 IETF 标准协议。现在使用最普遍的模式和执行是开放式软件基础的分布式计算环境(DCE)。

协议结构
  远程过程调用(RPC)信息协议由两个不同结构组成:调用信息和答复信息。信息流程如下所示:   
RPC:远程过程调用流程   
RPC 调用信息:每条远程过程调用信息包括以下无符号整数字段,以独立识别远程过程:   程序号(Program number)   
  程序版本号(Program version number)   
  过程号(Procedure number)  
 RPC 调用信息主体形式如下:   
   
  struct call_body {
        unsigned int rpcvers;
        unsigned int prog;
        unsigned int vers;
        unsigned int proc;
        opaque_auth cred;
        opaque_auth verf;
        1 parameter
        2 parameter . . . 
      };   


  RPC 答复信息:RPC 协议的答复信息的改变取决于网络服务器对调用信息是接收还是拒  绝。答复信息请求包括区别以下情形的各种信息:  
 RPC 成功执行调用信息。
  RPC 的远程实现不是协议第二版,返回 RPC 支持的最低和最高版本号。
  在远程系统中,远程程序不可用。
  远程程序不支持被请求的版本号。返回远程程序所支持的最低和最高版本号。
  请求的过程号不存在。通常是呼叫方协议或程序差错。
  RPC答复信息形式如下:
  
enum reply_stat stat   {
     MSG_ACCEPTED = 0,   MSG_DENIED = 1 
    };


工作原理
  运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:
  1.调用客户端句柄;执行传送参数
  2.调用本地系统内核发送网络消息
  3.消息传送到远程主机
  4.服务器句柄得到消息并取得参数
  5.执行远程过程
  6.执行的过程将结果返回服务器句柄
  7.服务器句柄返回结果,调用远程系统内核
  8.消息传回本地主机
  9.客户句柄由内核接收消息
  10.客户接收句柄返回的数据


RPC OVER HTTP
  Microsoft RPC-over-HTTP 部署(RPC over HTTP)允许RPC 客户端安全和有效地通过Internet 连接到RPC 服务器程序并执行远程过程调用。这是在一个名称为RPC-over-HTTP 代理,或简称为RPC 代理的中间件的帮助下完成的。

  RPC 代理运行在IIS 计算机上。它接受来自Internet 的RPC 请求,在这些请求上执行认证,检验和访问检查,如果请求通过所有的测试,RPC 代理将请求转发给执行真正处理的RPC 服务器。通过RPC over HTTP,RPC 客户端不和服务器直接通信,它们使用RPC 代理作为中间件。
分享到:
评论

相关推荐

    oncrpc.rar_RPC. VC++_oncrpc windows_windows RPC_ycnian的博客

    RPC(Remote Procedure Call)是一种分布式计算技术,允许一个程序在一台计算机上执行远程操作,就像它在本地执行一样。在Windows环境下,RPC是系统服务的重要组成部分,广泛用于进程间通信和系统组件之间的交互。本...

    ONCRPC.rar_ONCRPC_code rpc_onc_onc rpc

    这个"ONCRPC.rar_ONCRPC_code rpc_onc_onc rpc"文件包含的是关于ONC RPC协议的实现代码,主要针对的是JAVA平台,旨在实现不同编程语言之间的RPC调用。 在RPC(Remote Procedure Call)机制中,客户端可以透明地调用...

    jsonrpc-frontend:前端应用程序发送 json-rpc 请求进行测试

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,常用于客户端-服务器通信,特别是在Web应用中。它利用JSON作为数据交换格式,因为JSON易于阅读、编写,并且对机器...

    jsonrpc-c-master 基于 json rpc 1.0 纯C开发的服务端代码和示例

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。基于JSON-RPC 1.0的C语言实现,如"jsonrpc-c-master...

    XXL-RPC_XXL-RPC解析_

    XXL-RPC是一款高性能、轻量级的Java分布式服务框架,它主要解决了微服务架构中的服务间通信问题。本文将深入解析XXL-RPC的实现原理,并通过源码分析来帮助理解其核心功能。 首先,XXL-RPC的核心组件包括服务提供者...

    LabVIEW XML-RPC

    LabVIEW XML-RPC 是一种基于XML的远程过程调用(RPC)技术,它允许LabVIEW应用程序与其他支持XML-RPC协议的系统进行通信。这个技术在跨平台交互和分布式系统开发中发挥着重要作用,使得LabVIEW可以与不同编程语言...

    rpc远程调用库C语言实现

    RPC(Remote Procedure Call)是一种进程间通信技术,允许在一台计算机上的程序调用另一台计算机上的程序,使得分布式系统能够像调用本地函数一样调用远程服务。在本主题中,我们将深入探讨如何使用C语言实现RPC,并...

    android-json-rpc

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,常用于客户端-服务器通信。在Android开发中,有时我们需要与远程服务器进行数据交互,这时JSON-RPC客户端库就显得尤...

    Java RPC调用示例

    Java RPC(Remote Procedure Call)调用是分布式系统中常见的通信方式,它允许一个程序在不关心远程系统具体实现的情况下调用另一个网络上的程序。在这个Java RPC调用示例中,我们将探讨RPC的基本概念、实现机制以及...

    onc rpc for windows

    **ONC RPC for Windows** RPC(Remote Procedure Call)是一种分布式计算技术,允许程序在不同的网络节点上进行通信,就像调用本地函数一样调用远程计算机上的函数。ONC(Open Network Computing)RPC是Sun ...

    手写rpc rpc简单源码 rpc源码学习 rpc过程了解 rpc通信原理

    RPC(Remote Procedure Call)远程过程调用是一种计算机通信协议,允许程序在一台计算机上执行另一台计算机上的程序,而无需了解底层网络协议的细节。它为开发者提供了一种透明调用远程服务的方式,使得分布式系统...

    影像RPC和GCP校正

    在IT行业中,"影像RPC和GCP校正"是一个重要的图像处理领域,主要涉及遥感图像的几何校正。遥感图像(Remote Sensing Image,简称RSI)由于拍摄角度、大气条件、传感器特性等因素,往往存在几何畸变,需要进行校正以...

    遥感影像rpc校正资料集

    遥感影像RPC(Rational Polynomial Coefficients,有理多项式系数)校正是遥感图像处理中的一个重要环节,主要用于纠正由于传感器成像过程中的几何畸变,提高影像的空间定位精度。RPC模型是一种数学模型,它描述了...

    javax.xml.rpc

    "javax.xml.rpc"是Java平台中的一个关键组件,主要用于实现基于XML的远程过程调用(XML-RPC)服务。这个框架允许Java应用程序通过HTTP协议来调用远程服务器上的方法,从而实现分布式计算。在Java EE环境中,它常与...

    基于严格成像模型的遥感影像RPC参数求解.pdf

    基于严格成像模型的遥感影像RPC参数求解 本文主要讨论基于严格成像模型的遥感影像RPC参数求解问题。RPC参数是遥感影像几何校正的关键参数,通过严格成像模型可以推导出RPC参数。文中首先介绍了基于严格成像模型的...

    Netty4.1实战-手写RPC框架.pdf

    RPC是一种远程调用的通信协议,例如dubbo、thrift等,我们在互联网高并发应用开发时候都会使用到类似的服务。本专题主要通过三个章节实现一个rpc通信的基础功能,来学习RPC服务中间件是如何开发和使用。章节内以源码...

    实现一个简单的RPC框架

    RPC(Remote Procedure Call)是一种进程间通信的技术,它允许程序在不同的网络节点上进行通信,就像调用本地函数一样调用远程系统上的函数或方法。本篇将详细讲解如何使用socket、反射和序列化等技术来实现一个简单...

    解决 RPC服务 属性按钮全部都是灰色

    RPC 服务属性按钮全部都是灰色的解决方案 解决 RPC 服务属性按钮全部都是灰色的问题是很严重的问题,但可以解决。本文将详细介绍 RPC 服务属性按钮全部都是灰色的原因和解决方案,包括手动启动“远程过程调用”服务...

    rpc.rstatd-4.0.1.tar.gz

    linux使用,使用教程 linux下安装rpc.rstatd 1.rpc服务需rsh的支持,一般情况下rsh已安装。rpm -qa rsh查看。 2.右键另存为http://heanet.dl.sourceforge.net/sourceforge/rstatd/rpc.rstatd-4.0.1.tar.gz下载rpc....

    jsonrpc-1.0.jar

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,主要用来在客户端和服务器之间进行数据交换。它的设计思想是简单、直接,以JSON(JavaScript Object Notation)作为...

Global site tag (gtag.js) - Google Analytics