RPC协议简介

一、概述  
      1.英文原义:Remote Procedure Call Protocol 
  2.中文释义:(RFC-1831)远程调用协议 。 
  3.注解:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 
  4.说明:RPC协议假定某些 传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI 网络通信模型中,RPC跨越了 传输层和 应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 
  5.模式
      RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用过程接收答复信息,获得进程结果,然后调用执行继续进行。 
  RPC模式:分布式计算环境(DCE)。目前,有多种RPC模式和执行。最初由Sun公司提出。IETF ONC宪章重新修订了Sun版本,使得ONC RPC协议成为IETF标准协议。现在使用最普遍的模式和执行是开放式软件基础的分布式计算环境(DCE)。

二、协议结构 
    远程过程调用(RPC)信息协议由两个不同结构组成:调用信息和答复信息。 
  1.RPC 调用信息:
      每条远程过程调用信息包括以下 无符号整数字段,以独立识别远程过程: 
  (1)程序号(Program number) 
  (2)程序版本号(Program version number) 
  (3)过程号(Procedure number) 
  RPC 调用信息主体形式如下: 
  struct call_body { 
     unsignedint rpcvers;    /*RPC的版本*/
         unsignedint rprog;     /*远程程序的程序号*/
         unsignedint rprogvers;  /*远程程序的版本号*/
         unsignedint rproc;     /*远程过程的过程号*/
         opaque_authcred;      /*鉴别信息*/
         opaque_authverf;      /*鉴别的确证*/
         /*ARGS*/                    /*过程的参数*/
    1 parameter 
    2 parameter . . . 
  }; 
      2.RPC 答复信息
      RPC 协议的答复信息的改变取决于 网络服务器对调用信息是接收还是拒绝。答复信息请求包括区别以下情形的各种信息: 
  RPC 成功执行调用信息。. 
  RPC 的远程实现不是协议第二版,返回 RPC 支持的最低和最高版本号。 
  在远程系统中,远程程序不可用。 
  远程程序不支持被请求的版本号。返回远程程序所支持的最低和最高版本号。 
  请求的过程号不存在。通常是呼叫方协议或程序差错。 
  RPC答复信息形式如下:  
  enum reply_stat stat { 
  MSG_ACCEPTED = 0,  
  MSG_DENIED = 1  
  };

转载自:http://blog.chinaunix.net/uid-7374279-id-4611801.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql分页查询报错,及解决

mysql分页查询报错: 前提: 1.每页1000条数据 2.查到57页的时候,就报错了 以下是错误信息: org.springframework.jdbc.UncategorizedSQLException: ### Error querying database. Cause: java.sql.SQLException: ...省略中间... received message larger than max (1844105…

RPC协议与Web Service

一、引入 我们每天都在使用浏览器来上网冲浪, 在查找自己需要的资源, HTTP协议自然是我们使用的最多的 一种, 我们尽情地享受着这种信息高速路的快感,却没有试图去了解我们是如何获得这些资源的? 它是一种什么样的设计理念? 我们也偶尔会使用 Gtalk来和自己的同事或者朋友来聊…

如何设置电脑开机自动提示(防止忘打卡等)

如何设置电脑开机自动提示: 第一种方法: 第一步:CtrlR 输入mmc命令打开 文件-添加/删除管理单元-组策略对象编辑器-添加-确定-确定(都是默认的)。 第二步:退出小框,会看见有个”本地计算机 策略”,打开-计算机配置-windows设置-安全设置-本地策略-安全选项 双击”交互式登…

RestFull架构

1 什么是REST REST全称是Representational State Transfer,中文意思是表述性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是 HTTP 规范的主要编写者之一。 他在论文中提到:“我这篇文章的写作目的,就是想在符合架构原…

SpringMVC默认访问路径配置

SpringMVC默认访问路径配置 需求:只访问域名,不加任何action路径,想访问默认的一个action. 比如www.jd.com,就跳到京东首页,会加载出辣么多东西来 关于这个的方法,网上有千千万种,在这里只是记录一种常用的, 亲测这个可以用,而且我们的项目一直都是这个套路. 第一步,web.x…

controller中执行main方法报错NoClassDefFoundError: javax/servlet/http/HttpServletResponse

controller中执行main方法报了这个错:NoClassDefFoundError: javax/servlet/http/HttpServletResponse,如下图: NoClassDefFoundError: javax/servlet/http/HttpServletResponse NoClassDefFoundError: javax/servlet/http/HttpServletRequest同理 原因是本地没有引入servlet…

初探Backbone

Backbone简介 中文API:http://www.css88.com/doc/backbone/ 英文API:http://backbonejs.org/ Backbone是构建javascript应用程序的一个优秀的类库。他简洁、轻量级、功能实在。 backbone采用MVC模式,本身提供了模型、控制器和视图从而我们应用…

订单量的监控

要解决的问题 : 1.在电商项目中,如何准确的知道当前订单量是正常的 2.如何在订单量突变后快速感知 解决思路 : 实现一个关于订单量的监控系统,将历史数据与实时数据做对比,因为每天的订单量,基本都是一个相似的变化范围,比如凌晨4点的单量是一天中最少的,节假日的单量要小于工…

JQuery初探

一、JQuery是什么? JQuery 是一套JavaScript库, 使用它,可以很方便的进行 JavaScript的编程。比如: 获取页面元素, 修改页面元素的CSS样式等等都可以以很简单的语法完成。节省代码行数和减少开发的时间。 物理上来看就…

BigDecimal的异常记录:java.lang.ArithmeticException: Rounding necessary

记一次报错,代码样例: public static void main(String[] args) {BigDecimal bigDecimal new BigDecimal(1234.5);int res bigDecimal.intValueExact();} 报错信息: Exception in thread "main" java.lang.ArithmeticException: Rounding necessaryat java.math.…

JavaScript历史与ECMAScript

一、前言为了发挥 JavaScript 的全部潜力,了解它的本质、历史及局限性是十分重要的。本节为您讲解 JavaScript 和客户端脚本的起源。二、Nombas 和 ScriptEase大概在 1992 年,一家称作 Nombas 的公司开发了一种叫做 C 减减(C-minus-minus&…

基于abtest思想的流量切换(nginx lua redis)

使用前提: 项目重构了,旧项目还在线上运行,新项目准备替换线上的旧项目 最终目标: 要实现实时切换新旧项目,保证如果新项目上线后有问题,可以立刻快速的将流量切回旧项目 方案: 关于abtest的基本原理本文不再多说,本文重点是实践,先看图 如上图所示,用户访问的…

JavaScript内部实现

前言 JavaScript 的核心 ECMAScript 描述了该语言的语法和基本对象; DOM 描述了处理网页内容的方法和接口; BOM 描述了与浏览器进行交互的方法和接口。 ECMAScript、DOM 和 BOM 尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一…

jsonp跨域原理,使用以及同源策略

什么是跨域请求,为什么用跨域 浏览器从一个域名的网页去请求另一个域名的资源时,域名,端口,协议任何一个不同,都算是跨域请求 域名是一个网站的唯一标识,一个域名代表着一个网站以及其对应的服务 服务间调用可以使用基于soa思想的rpc调用,也可以是webs…

LESS语言简介

一、概述 LESS是一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6, Webkit, Firefox),也可以借助Node.js或者Rhino在服务端运行。 LE…

非对称加密算法之RSA算法实现

对称加密,非对称加密,公钥,私钥,RSA这些常常听到的,到底是怎么回事 有个同事问我公钥私钥到底为什么能互相解开,一时语塞,平时都只是知道怎么用,但很少去了解的更细,现在…

流式计算storm核心组件介绍以及入门案例---跟着就能在本地跑起来的storm项目

关于storm的基础,参照我这篇文章:流式计算storm 关于并发和并行,参照我这篇文章:并发和并行 关于storm的并行度解释,参照我这篇文章:storm的并行度解释 关于storm的流分组策略,参照我这篇文章:storm的流分组策略 关于storm的消息可靠机制,参照我这篇文章:storm的消息可靠机制 …

javascript中的this讲解

查看this指向的一句话法则:永远指向其所在函数的所有者如果没有所有者时,指向window。理解this的要点:关键在于将函数与函数名分开看待。同一个函数,在不同的执行方法下,会有不同的效果。如何来进行理解呢,…

HTTP首部---referrer 知识点

Referrer介绍 Referrer网站来路;访问者进入网站任何途径。HTTP Referer是header的一部分,当浏览器向web服务器发出请求的时候,一般会带上Referer,告诉服务器用户从那个页面连接过来的,服务器藉此可以获得一些信息用语处理。 获取…

JavaScript自执行匿名函数

格式:(function(){//代码})();解释:这是相当优雅的代码(如果你首次看见可能会一头雾水:)),包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一…