遠程過程調用協議(Remote Procedure Call Protocol,RPC)

 基本簡介

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

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

協議結構

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

工作原理

運行時,一次客戶機對服務器的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 代理作爲中間件。

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章