(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 調用信息:每條遠程過程調用信息包括以下無符號整數字段,以獨立識別遠程過程:
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答復信息形式如下: enum?reply_stat?stat?{?MSG_ACCEPTED?=?0, MSG_DENIED???=?1 }; |