网络管理员指南 -9.各种网络应用程序-4>远程呼叫程序

/ns/wz/net/data/20020808033523.htm

网络管理员指南 -9.各种网络应用程序-4>远程呼叫程序


本文出自:http://www.linpus.com.tw 作者: Andrew Anderson


为客户/服务器应用的非常普通的机制由 RPC 提供,远程呼叫包。 RPC由Sun Micrsystems 开发,
并且是工具和图书馆功能的集合。在 RPC 顶部被创建了的重要的应用程序是 NFS ,网络文件系统,
和 NIS ,网络信息系统,两者将在以后的章节中被介绍。

一个 RPC 服务器由程序的集合组成,顾客可以通过发送一个 RPC 请求给服务器呼叫程序,与过程
参数一起。服务器将代表顾客的利益调用显示的过程,传递返回值回来,如果有任何东西。为了机器
独立,在顾客和服务器之间被交换了的所有的数据由发送者被变换到一个所谓的外部数据表示格式
( XDR ),并且由接收装置变换回到机器本地的表示。

有时,到一个 RPC 应用程序的改进在过程呼叫接口中介绍不兼容的变化。当然,简单地改变服务者将
破坏所有的应用程序,该程序仍然期望原来的行为。因此, RPC 程序把版本数字分给他们,通常启
动 with-1 ,并且用 RPC 接口的每个新版本的这个记数器将被碰撞。经常,一个服务器可以同时提
供若干版本;然后顾客在他们的请求中指出版本数字,他们想要使用的那个服务器的执行。

在 RPC 服务器和顾客之间的网络通讯是有点古怪的。一个 RPC 服务器提供一个或一个以上的程序
的集合;每个集合正在被称为一个程序,并且特别地被一个程序数字认明。到程序数字的映射服务名
字的一张表通常是放在了 /etc/rpc 中,一个在下图--中被复制的摘录。

图:一个样品 /etc/rpc 文件。

在 TCP/IP 网络中, RPC 的作者面对映射程序数字到通用的网络服务的问题。他们选择了让每个服
务者提供为每个程序和每个版本的TCP和UDP。通常,当发送数据时, RPC 应用程序将使用 UDP ,
并且当数据被转移到不适合进入一个单个的 UDP 数据包时,仅仅倒下去到 TCP 。

当然,顾客程序必须有一个方法发现哪个程序数字映射到此端口。为这使用一个配置文件是很顽固的;
因为 RPC 应用程序不使用保留的端口,不保证一个端口原来意味着不被其他过程使用的我们的数据
库应用被使用。因此, RPC 应用程序拣出他们能得到的任何端口,并且与所谓的 portmapper 魔鬼
登记它。后者作为一个服务器经纪人为所有的 RPC 服务器在它的机器上运行:一个顾客希望使用给出
的程序数字联系一个服务器,将首先在服务器的主机上查询 portmapper,主机返回TCP并且UDP端口
数字服务能到达主机。

这个方法有特别的缺点,它介绍失败的一个单个的点,非常象 inetd 魔鬼为标准的伯克利服务做的那
样。然而,这个文题甚至有点更糟,因为当 portmapper 死去时,所有的 RPC 端口信息被失去;这通常
意味着你必须手动地重启所有的 RPC 服务者,或重新启动全部机器。

portmapper 被称为 rpc.portmap 并且位于/usr/sbin.上。除非保证它是从形式 rc.inet2开始的 ,
portmapper 不要求任何配置工作。