為客戶/服務器應用的非常普通的機制由 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 不要求任何配置工作。
(http://www.fanqiang.com)
進入【UNIX論壇】
|