當前位置:首頁 > 通用術語 > 什麼是遠端程序呼叫 (RPC)?概念、運作方式

什麼是遠端程序呼叫 (RPC)?概念、運作方式

2025-08-26通用術語403

遠端程序呼叫 (RPC) 是由 Sun Microsystems 開發並由開放軟體基金會 (OSF) 擴展的訊息傳遞程式設計技術,可讓應用程式執行程式並與網路上遠端電腦上的服務互動。

遠端程序呼叫

遠端程序呼叫 (RPC) 是在 Microsoft Windows Server 平台上啟用用戶端/伺服器處理的偏好方法,Microsoft 的 RPC 功能實作與其他實作相容,例如 IBM AIX、HP-UX 及 Sun Solaris 作業系統的實作。

遠端程序呼叫 (RPC) 與本機程序呼叫 (LPC)

您可以使用 RPC 在位於網路上不同電腦上的分散式應用程式元件之間傳遞訊息。雖然本機程序呼叫 (LPC) 提供一種機制,可讓位於單一電腦上的應用程式的不同部分彼此通訊,但 RPC 牽涉到不同電腦之間的通訊。RPC 實際上會使用各種其他進程間通訊 (IPC) 機制,例如具名管道、郵件插槽、Windows 通訊端和 NetBIOS,在不同電腦上的 RPC 用戶端與 RPC 伺服器元件之間建立連線。

遠端程序呼叫的運作方式

遠端程序呼叫類似於函式呼叫。就像函式呼叫一樣,當進行 RPC 時,呼叫引數會傳遞至遠端程式,而呼叫端會等候從遠端程式傳回回應。上圖顯示了在兩個網路系統之間的 RPC 呼叫期間發生的活動流程。用戶端會進行程序呼叫,將要求傳送至伺服器並等待。執行緒會封鎖處理,直到收到回覆或逾時為止。當要求到達時,伺服器會呼叫執行所要求服務的分派常式,並將回覆傳送至用戶端。RPC 呼叫完成之後,用戶端程式會繼續。RPC 專門支援網路應用程式。

遠端程序由程式號碼、版本號碼及程序號碼唯一識別。程式號碼會識別一組相關的遠端程序,每一個程序都有唯一的程序號碼。程式可以包含一或多個版本。每個版本都包含一組程序,這些程序可從遠端呼叫。版本號碼可讓 RPC 通訊協定的多個版本同時可用。每個版本都包含許多可以遠端呼叫的程序。每個程序都有一個程序編號。

遠端程序呼叫的層數

RPC介面可以看作是分為三層。

最高層:最高層對運行的操作系統、機器和網絡完全透明。最好將此級別視為使用 RPC 的一種方式,而不是作為 RPC 的一部分。編寫 RPC 常式的程序員應該(幾乎)始終通過完全隱藏網絡的簡單 C 前端將此層提供給其他人。

為了說明,在此層次上,程式可以簡單地呼叫 rnusers(),這是一個 C 常式,可傳回遠端機器上的使用者數目。使用者沒有明確意識到使用 RPC – 他們只是呼叫一個過程,就像他們呼叫 malloc() 一樣。

中間層:中間層確實是「RPC 本身」。在這裡,使用者不需要考慮有關套接字、UNIX 系統或其他低階實作機制的詳細資訊。它們只是對其他機器上的常式進行遠端程序呼叫。這裡的賣點是簡單。正是這一層讓 RPC 能夠通過「hello world」測試——簡單的事情應該很簡單。中間層常式用於大部分應用程式。

RPC 呼叫是使用系統常式 registerrpc () 、 callrpc () 及 svc_run () 來進行。其中前兩個是最基本的: registerrpc() 取得唯一的系統範圍程序識別碼,而 callrpc() 實際上執行遠端程序呼叫。在中間層次,對 rnusers () 的呼叫是透過這兩個常式來實作。

不幸的是,中間層由於其不靈活(簡單性)而很少用於嚴肅的程式設計。它不允許逾時規格或傳輸選擇。它不允許 UNIX 進程控制或發生錯誤時的靈活性。它不支援多種類型的通話驗證。程式設計師很少需要所有這些類型的控制,但通常需要其中一兩個。

最低層:最低層確實允許這些細節由程式設計師控制,因此,這通常是必要的。在此層級編寫的程式也是最有效率的,但這很少是真正的問題,因為 RPC 用戶端和伺服器很少產生繁重的網路負載。

雖然本文檔僅討論 C 的接口,但可以從任何語言進行遠程過程調用。雖然本檔討論 RPC 用來在不同電腦上的進程之間通訊,但它同樣適用於同一部電腦上不同進程之間的通訊。

“什麼是遠端程序呼叫 (RPC)?概念、運作方式” 的相關文章

什麼是頻外管理 (OBM)?概念、怎麼運作的

什麼是頻外管理 (OBM)?概念、怎麼運作的

網路百科全書中頻外管理 (OBM) 的定義。什麼是頻外管理 (OBM)?OBM 代表帶外管理,是一種使用輔助串行通信鏈路遠程管理網絡的廣域網 (WAN) 電信組件的方法。這些裝置通常是路由器、交換器或通道服務單元/資料服務單元 (CSU/DSU),用於建立和維護與公司網路的 WAN 連結。可以在帶外...

什麼是G.Lite?概念、怎麼運作的

什麼是G.Lite?概念、怎麼運作的

G.Lite 是非對稱數字用戶線 (ADSL) 的變體,旨在家庭互聯網訪問。繼續閱讀以獲取詳細信息。什麼是 G.Lite?G.Lite 是非對稱數字用戶線 (ADSL) 的變體,旨在家庭互聯網訪問。G.Lite 的下行速率通常高達 1.5 Mbps,上行速率高達 384 Kbps,具體取決於實施。G...

什麼是Deamon ?概念、運作方式

什麼是Deamon ?概念、運作方式

Deamon 是一個與 UNIX 操作系統關聯的程序,它在後台運行並在沒有用戶煽動的情況下執行某些任務。什麼是 Deamon ?與 UNIX 作業系統相關聯的程式,在背景執行,無需使用者指示即可執行某些作業。常駐程式的範例是 telnet 常駐程式,它在背景持續執行,等待來自&n...

什麼是Alpha 平台 (DEC)?概念、運作方式

什麼是Alpha 平台 (DEC)?概念、運作方式

網絡百科全書中阿爾法平台的定義。什麼是 Alpha 平台?處理器基於DEC Alpha RISC架構微處理器的計算機平台。Alpha 是 Microsoft Windows NT 支持的兩個處理器平台之一(另一個是英特爾的 x86 平台)。DEC Alpha 21164 處理器Alpha...

什麼是錨文本 (HTML)?概念、運作方式

什麼是錨文本 (HTML)?概念、運作方式

網路百科全書中錨文本 (HTML) 的定義。什麼是電腦網路中的錨文本?錨文本在超文本標記語言 (HTML) 中是超文本鏈接的源或目標。錨點可以是文字或圖形,並使用標籤形式<A ...>…</A>。錨標記是 HTML 的基礎,使連結文件的超文本概念成為可能。錨文本 (HTML)...

什麼是NetBIOS over TCP/IP 節點類型?概念、運作方式

什麼是NetBIOS over TCP/IP 節點類型?概念、運作方式

網路百科全書中 NetBIOS over TCP/IP 節點類型的定義。什麼是 NetBIOS over TCP/IP 節點類型?NetBIOS over TCP/IP 節點類型是 NetBIOS over TCP/IP (NetBT) 主機的不同配置或節點類型。節點類型決定如何執行 Ne...