ゞ沉默是金ゞ

          魚離不開水,但是沒有說不離開哪滴水.
          posts - 98,comments - 104,trackbacks - 0
          由于項目的需要,了解了一下RPC,分享給大家。

           

          RPCRemote Procedure Call Protocol——遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的 存在,如TCPUDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程序在內的 應用程序更加容易。


          基本簡介

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

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

           

              

          協議結構

          遠程過程調用(RPC[1])信 息協議由兩個不同結構組成:調用信息和答復信息。信息流程如下所示:

            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 代理作為中間件。
          posted on 2010-07-26 16:21 ゞ沉默是金ゞ 閱讀(1342) 評論(0)  編輯  收藏 所屬分類: HTTP
          主站蜘蛛池模板: 额敏县| 洞头县| 台南市| 沧州市| 老河口市| 七台河市| 修武县| 石渠县| 黔江区| 太康县| 小金县| 宣恩县| 长兴县| 依兰县| 泾阳县| 南乐县| 广西| 汶川县| 大同市| 布拖县| 绥芬河市| 寻甸| 诸城市| 北碚区| 富川| 石景山区| 绿春县| 阿克苏市| 双辽市| 德清县| 偏关县| 抚顺市| 农安县| 右玉县| 滦南县| 屏东县| 遵义市| 于都县| 汉沽区| 汝南县| 奉化市|