灵魂-放水

为学日益,为道日损。

BlogJava 首页 新随笔 联系 聚合 管理
  296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks
(RPC:Remote Procedure Call protocol)

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

  RPC 采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用过程接收答复信息,获得进程结果,然后调用执行继续进行。

  目前,有多种 RPC 模式和执行。最初由 Sun 公司提出。IETF ONC 宪章重新修订了 Sun 版本,使得 ONC PRC 协议成为 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

  };
-----------------------------------------------------------------------------------------
进程间通信(IPC)是在多任务操作系统或联网的计算机之间运行的程序和进程所用的通
信技术。有两种类型的进程间通信(IPC)。

□本地过程调用(LPC)LPC用在多任务操作系统中,使得同时运行的任务能互相会话。
这些任务共享内存空间使任务同步和互相发送信息。

□远程过程调用(RPC)RPC类似于LPC,只是在网上工作。RPC开始是出现在Sun微系统公
司和HP公司的运行UNIX操作系统的计算机中。

通过IPC和RPC,程序能利用其它程序或计算机处理的进程。客户机/服务器模式计算把
远程过程调用与其它技术如消息传递一道,作为系统间通信的一种机制。客户机执行自
己的任务,但靠服务器提供后端文件服务。RPC为客户机提供向后端服务器申请服务的通
信机制,如图R-4所示。如果你把客户机/服务器应用程序想作是一个分离的程序,服
务器能运行数据访问部分,因为它离数据最近,客户机能运行数据表示和与用户交互的
前端部分。这样,远程过程调用可看作是把分割的程序通过网络重组的部件。LPC有时也
称耦合(Coupling)机制。

用这种方式分割程序,当用户要访问数据时就无需每次拷贝整个数据库或它的大部分程
序到用户系统。其实,服务器只处理请求,甚至只执行一些数据计算,把得出的结果再
发送给用户。因为当数据存放在一个地方时,数据库同步很容易实现,所以多个用户可
同时访问相同的数据。

分布式计算环境是由一个通信系统——网络连接的计算机集群。很容易把这个网络看成
一个计算平台,若是对等方式,其中任何一台计算机都能成为客户机或服务器。一些处
理任务可被分成独立运行程序在不同的网络计算机上并行处理,而独立的程序被交给最
适合这个任务的计算机处理。这种策略可利用计算机空闲资源,提高网络的效益。一个
典型的企业网包括许多运行着不同操作系统的异构计算机系统。

随着企业网的产生,开发商必须编制可在各种计算机和网络通信协议中都能运行的程序
。现在人们正努力使得远程过程调用独立,这意味着开发商就不用考虑底层的网络和网
络上数据传输所用的协议,下面介绍RPC在开放式软件基金(OSF)的分布式计算环境(
DCC)中实现的相关方法。RPC工作于多种分布式计算环境。

SunSoft的开放网络计算(ONC)的远过程调用/外部数据表示(RPC/XDR)协议被广泛
采用。在三百一十万个运行网络文件系统(NFS)的系统中,有二百八十万个使用ONCRP
C库,并在分布式应用中作为客户机或服务器。ONCRPC被IBM的所有操作系统所支持(除
了OS/400)。UNIX系统实验室把RPC/XDR当作是UNIX System V Release 4的一个标准
部分。Novell支持下一代ONC+传输自立远程过程调用(TI-RPC)技术.TI-RPC 使用运
输层接口(TLI)实现传输自立。TLI提供了一种访问面向连接或非连接传输服务的通用
方法(这在“STERAMS环境”中有所叙述)。

Open Software Foundation(OSF)RPC 开放软件基金会(OSF)的RPC

RPC工具提供了一种编程语言和编译器,它们使用可看作是本地过程的可运行于客户机和
服务器上的模块开发分布式应用程序。运行时设施(run-timefacility)使得分布式应
用程序能在多机种异构系统上运行,这样使得底层体系结构和运输协议对于应用程序是
透明的。

程序员用接口定义语言(IDL)建立接口定义(interface definition)。IDL是程序员
用来设计远程运行的过程的工具。IDL编译器把IDL接口定义转换成与客户机和服务器相
连的占位程序(stub)。客户机上的占位程序可加入到服务器的过程,而服务器上的占
位程序也可加入到客户机过程。位于客户机服务器的RPC运行时设施与占位程序合作,来
提供RPC操作。

异构环境中使用RPC的一个问题在于,不同的机器有不同的数据表示,OSFRPC通过具有调
用机器的基本数据表示的特征调用来解决这个问题。当收到调用时,若根据特征知道两
台机器数据表示不同的话,接收器就进行数据转换。

RPC运行时设施提供把客户机请求传送给服务器和在网上发送和接收响应的功能。DCERP
C运行时设施也和网络上其它DCE服务相互作用,这些DCE服务有命名、安全和定时服务。
运行时设施有下列特征:

□可在多种网络上运行。开发者无需为每个网络编写特定的应用程序。

□提供客户机或服务器或网络上的故障恢复。它支持文件系统、数据库和其它传输可变
长数据的服务。

□提供独立于任何一个目录服务的基于名字定位服务器的方法。

□提供安全工具的接口,以防RPC通信遭受破坏。安全服务保证机密信息的保密性和提供
鉴别来保护通信完备性。

□支持网上并发或并行处理的多线程调度,于是一个应用程序就能同时执行多个操作

□提供多供应商提供的系统环境的可移植性和相互操作性

posted on 2006-11-03 19:25 放水老倌 阅读(1282) 评论(0)  编辑  收藏 所属分类: 标准

只有注册用户登录后才能发表评论。


网站导航: