遠程過程調用協定

遠程過程調用協定

RPC(Remote Procedure Call)—遠程過程調用,它是一種通過網路從遠程電腦程式上請求服務,而不需要了解底層網路技術的協定。RPC協定假定某些傳輸協定的存在,如TCP或UDP,為通信程式之間攜帶信息數據。在OSI網路通信模型中,RPC跨越了傳輸層和套用層。RPC使得開發包括網路分散式多程式在內的應用程式更加容易。

RPC採用客戶機/伺服器模式。請求程式就是一個客戶機,而服務提供程式就是一個伺服器。首先,客戶機調用進程傳送一個有進程參數的調用信息到服務進程,然後等待應答信息。在伺服器端,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,伺服器獲得進程參數,計算結果,傳送答覆信息,然後等待下一個調用信息,最後,客戶端調用進程接收答覆信息,獲得進程結果,然後調用執行繼續進行。

有多種 RPC模式和執行。最初由 Sun 公司提出。IETF ONC 憲章重新修訂了 Sun 版本,使得 ONC RPC 協定成為 IETF 標準協定。現在使用最普遍的模式和執行是開放式軟體基礎的分散式計算環境(DCE)。

基本信息

工作原理

運行時,一次客戶機對伺服器的RPC調用,其內部操作大致有如下十步:

1.調用客戶端句柄;執行傳送參數

2.調用本地系統核心傳送網路訊息

3.訊息傳送到遠程主機

4.伺服器句柄得到訊息並取得參數

遠程過程調用協定 遠程過程調用協定

5.執行遠程過程

6.執行的過程將結果返回伺服器句柄

7.伺服器句柄返回結果,調用遠程系統核心

8.訊息傳回本地主機

9.客戶句柄由核心接收訊息

10.客戶接收句柄返回的數據

RPC OVER HTTP

Microsoft RPC-over-HTTP 部署(RPC over HTTP)允許RPC客戶端安全和有效地通過Internet 連線到RPC 伺服器程式並執行遠程過程調用。這是在一個名稱為RPC-over-HTTP 代理,或簡稱為RPC 代理的中間件的幫助下完成的。

RPC 代理運行在IIS計算機上。它接受來自Internet 的RPC 請求,在這些請求上執行認證,檢驗和訪問檢查,如果請求通過所有的測試,RPC 代理將請求轉發給執行真正處理的RPC 伺服器。通過RPC over HTTP,RPC客戶端不和伺服器直接通信,它們使用RPC 代理作為中間件。

協定結構

遠程過程調用(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 }

相關詞條

熱門詞條

聯絡我們