RFC双语计划:rfc1057中文版(中英文对照)............RFC:远程过程调用协议说明第二版
http://kummerwu.web.officelive.com/Documents/rfc1057-0.html
更多RFC中文版,中英文对照版,请查阅http://kummerwu.web.officelive.com/Documents/index.html
这儿目前收录来OSPF,BGP,RIP,MPLS(VPN)、HTTP,Telnet,RSVP,PPP,POP3,RTP,NAT,FTP等最新RFC中文版和中英文对照版。而且内容还在不断更新中......
------------------------------------------------------------------------
RFC:远程过程调用协议说明第二版
备忘录状态
该备忘录表书了Sun为系统和其它系统用应用的标准,和我们期望因特网应用的一个考虑.现在该备忘录还不是一个因特网标准.该备忘录的发布不受限制.
1.简介
文档详细说明了用在Sun远程过程调用(RPC)包的信息协议第二版.这个信息协议用外部数据表示(XDR)语言来说明.该文档假设读者对XDR熟悉.它不尽力证明远程过程调用系统或描述它们的应用.由Birrell和Nelson[1]写的文档推荐成为远程过程调用概念的最好背景知识.
2.术语学
文档讨论了客户,调用,服务器,应答,服务,程序,过程和版本.每一个远程调用有两方:积极的客户方发送调用请求到服务器,服务器发回应答信息.一个网络服务是一个或多个远程程序的集合.一个远程程序执行一个或多个远程过程;过程,参数和结果都在特殊程序协议说明(看附录A的例子)里记录.为了和改变的协议兼容,一个服务器可能支持多个版本的远程程序.
例如,一个网络文件服务由两部分组成.一个程序可能处理高层应用(如文件系统访问控制和锁控.另外有些处理低层如文件输入输出和象读和写过程.网络文件服务的客户将调用代表该客户与对应服务的两类程序相关的过程.
术语客户和服务器只是适用于特殊的传输;
一个特定硬件实体(主机)或软件实体(过程或程序)能够在不同时间执行两种角色.例如,提供远程执行服务的程序可能也是一个网络文件服务的客户端.另外,它可能把软件根据服务器和客户端功能分成分开的库或程序.
3. RPC模式
Sun RPC协议基于远程过程调用模式,它类似于本地过程调用模型.在本地调用方式中,调用者把参数放在公众指定地点(如注册窗口),然后发送控制到过程,最后重新获得控制.接着,从指定地点取出过程结果,调用者继续执行.
远程过程调用相类似.控制线程在两个过程中逻辑转换:调用过程和服务过程.调用过程首先发送一个调用信息到服务过程然后等待应答信息.调用信息包括过程参数,应答信息包括过程结果.一旦接收到应答信息,就取得过程结果,然后调用执行继续进行.
在服务器端,过程保持睡眠状态到调用信息的到达.当一个调用信息到达,服务器获得过程参数,计算结果,发送应答信息,然后等待下一个调用信息.
在这种模型中,任何时间里两个过程只有一个激活.但是,该模型只是作为一个例子.Sun RPC协议对并行模型执行没有限制,但是其它的有可能不一样.例如,一个应用程序可能选择RPC调用为异步的,因此客户端只有等到服务器端的应答才做有效工作.另外一个可能是使服务器端生成一个新的任务来处理进来的调用,因此最初的服务器可以处理其他请求.
1.错误处理:在远程过程调用中,网络或远程服务器的失败必须处理.
远程调用和本地过程调用有几个重要区别:
2.全局变量和副作用:因为服务器没法访问客户地址空间,隐藏的参数不能用全局变量传递或返回副作用.
3.表现:远程过程操作比本地过程调用慢一到几个数量级.
4.鉴定:因为远程过程可以在不安全的网络中传输,必须采用鉴定.
结论是即使有工具自动为给定服务产生客户或服务器库,仍然必须仔细设计协议.
4. 传送和语义
RPC协议能够执行在几种不同传输协议上.RPC协议除了信息的规定和解释外,不关心信息是如何从一个过程到另外一个过程,另外,应用想通过文档中没有指定的接口来获得传输层的信息(可能是控制层).例如,传输协议可能对RPC信息的尺寸大小进行限制,或可能是基于流的无大小限制的如TCP.客户或服务器通过在附录A中的机制,必须在传输协议达成一致.
RPC不会执行任何可靠性和应用应该注意在RPC下层的传输协议类型是很重要的.如知道运行在可靠传输协议如TCP上面,大部分工作TCP已经替做了.
另外,如果它运行在不可靠传输如UDP[7]上,它必须执行自己的时间检测,重传,和复制检测,因为RPC层没有提供这些服务.
因为传输独立,所以RPC协议没有捆绑特殊的语义到远程过程或它们的执行要求上.可以从下层传输协议中推得语义(但是得明确指定).例如,考虑RPC运行在不可靠传输如UDP上.如果一个应用再时间终止后重传RPC调用信息而没有收到应答,那么它不能从过程执行的时间数量推出任何信息.如果它没有收到应答,它能够推出这个过程至少执行了一次.
服务器尽可能记住前面同意客户端请求而不必重新批准,
为了保证首次执行语义.服务器可以利用通过传输装载每一个RPC信息ID来完成这项任务.这个传输的主要应用是通过客户RPC层使应答和调用相符.但是,当重传调用时,一个客户应用可能选择重用原来的传输ID.为了获得一次执行语义,在执行了一个调用后,服务器选择记住这个ID而不执行有相同ID的调用。除了检测是否相等外,服务器不允许用任何其它方式检查这个ID。
另外,如果用可靠传输如TCP,应用可以从应答信息推算出每个过程恰好执行一次,但是如果它没有收到应答信息,则不能假设远程过程没有执行.注意即使使用一个基于连接的协议如TCP,应用仍然需要超时和处理服务器崩溃的重新连接操作。
对于传输除了数据报或面向连接协议还有其它很多可能。例如,请求-应答协议如VMTP[2]可能是RPC的自然传输。现在Sun RPC数据报用TCP和UDP两种传输协议,还有现在还在实验中的其它协议如ISP IP4 和IP0。
5. 绑定和集合独立
绑定一个特定哭户到特定服务器和传输参数动作不是RPC协议说明的一部分。这个重要的和必要功能是为更高层软件预留。(软件用RPC自身;看附录A)
执行者把RPC协议想成网络的跳跃子程序指令(“JSR”);装货人(绑定者)使JSR有用,绑定软件使RFC游泳,用RPC来实现这个任务。
6. 鉴定
在每个调用和应答信息中,RPC协议为客户端提供必须的向服务端验证域,和反之亦然。安全和访问控制机制能够在该信息鉴定上建立。支持多个不同的鉴定协议。在RPC报头上的鉴定域表明用哪一个协议。关于特殊鉴定协议的更多信息看第9部分:“鉴定协议”。
7. RPC协议要求
RPC协议必须提供下面条件:
(1)调用过程的唯一描述
(2)为请求信息提供一致应答信息
(3)为服务提供鉴定调用者和反之亦然。
除了这些要求,因为滚动错误,执行错误,用户错误和网络管理等,所以检测这些特性也应该支持。
(1).RPC协议不匹配.
(2).远程过程协议版本不一致.
(3).协议错误(如过程参数的错误配置).
(4).远程鉴定失败原因.
(5).其它所要过程没有调用的任何原因.
7.1 RPC程序和过程
RPC调用信息有3个无符号正数域--远程程序号,远程程序版本号和远程过程浩-它们唯一的指明了调用的过程.程序数量由某个中央认证机构管理(象SUN).一旦执行者有一个程序号,它们就可以执行远程程序;第一个执行程序一般具有版本号1.因为大部分新协议的发展,调用协议的版本号指明了调用者正在使用哪个版本的协议.版本号使相同服务处理分辨新旧协议成为可能.
过程号标志调用过程.这些数字在特定程序的协议规范中记录.例如,文件服务协议说明可能表明它的过程号5表示"读"和过程号12表示写.
正如远程程序协议可能改变好几个版本,实际的RPC信息协议也可能改变.因此,调用信息也有它自己的RPC版本号,对于在这描述的RPC的值总是为2.
请求的应答信息有足够信息来分辨下面的错误情况:
(1)RPC的远程执行不分辨协议版本.
2 返回支持RPC的最低和最高版本号.
(2)远程程序在远程系统中无效.
(3)远程程序不支持请求版本号.支持最程序的最低和最高版本号返回.
(4)请求过程号不存在.(这个一般是客户端协议或程序错误).
(5)远程过程参数对服务器端来说是不认参数.(再有,这个经常由于客户端和服务器端协议的不一致性引起.
7.2 鉴定
提供调用者到服务器的鉴定和反之亦然,这是RPC协议的一部分。调用信息有两个鉴定域,信任域和校验域。应答信息有一个鉴定域,应答校验域。RPC协议规范按下面定义所有3个不透明类型(用外部表示语言(XDR)[9])
/* 和其它类型定义 */
也就是说,任何"opaque_auth"结构是一个"auth_flavor"枚举类型加上RPC协议执行的不透明类型。
鉴定域里的数据解释和语义是个人设定,独立于鉴定协议规范。(第9部分定义了不同鉴定协议)。
如果鉴定参数被拒绝,应答信息包含拒绝原因信息。
7.3 程序号委派
程序号根据下列表给成16进制20000000(十进制536870912):
0 - 1fffffff Sun定义
20000000 - 3fffffff 用户定义
40000000
------------------------------------------------------------------------
。。。。。。。。
完整内容参见 http://kummerwu.web.officelive.com/Documents/rfc1057-0.html
更多RFC中文版,中英文对照版,请查阅http://kummerwu.web.officelive.com/Documents/index.html
这儿目前收录来OSPF,BGP,RIP,MPLS(VPN)、HTTP,Telnet,RSVP,PPP,POP3,RTP,NAT,FTP等最新RFC中文版和中英文对照版。而且内容还在不断更新中......