Fernprozeduraufruf

Remote Procedure Call (RPC) ist ein Protokoll, das das allgemeine Kommunikationskonzept des Betriebssystems bereitstellt. RPC setzt die Existenz eines Low-Level-Transportprotokolls wie Transmission Control Protocol / Internet Protocol (TCP/IP) oder User Datagram Protocol (UDP) voraus, um die Nachrichtendaten zwischen kommunizierenden Programmen zu übertragen. RPC implementiert ein logisches Client-zu-Server-Kommunikationssystem, das speziell für die Unterstützung von Netzanwendungen entwickelt wurde.

Dieses Kapitel enthält die folgenden Informationen zur RPC-Programmierung:

Das RPC-Protokoll basiert auf dem XDR-Protokoll ( eXternal Data Representation), das die Darstellung von Daten in der fernen Kommunikation standardisiert. XDR konvertiert die Parameter und Ergebnisse jedes bereitgestellten RPC-Service.

Das RPC-Protokoll ermöglicht Benutzern, mit fernen Prozeduren so zu arbeiten, als wären die Prozeduren lokal. Die Fernprozeduraufrufe werden über Routinen im RPC-Protokoll definiert. Jede Aufrufnachricht wird mit einer Antwortnachricht abgeglichen. Das RPC-Protokoll ist ein Protokoll zur Nachrichtenübergabe, das andere Nicht-RPC-Protokolle implementiert, wie z. B. Stapelverarbeitung und Broadcasting ferner Aufrufe. Das RPC-Protokoll unterstützt auch Callback-Prozeduren und die Subroutine select auf der Serverseite.

Ein Client ist ein Computer oder Prozess, der auf die Services oder Ressourcen eines anderen Prozesses oder Computers im Netz zugreift. Ein Server ist ein Computer, der Services und Ressourcen bereitstellt und Netzservices implementiert. Jeder Netzservice ist eine Sammlung ferner Programme. Ein fernes Programm implementiert ferne Prozeduren. Die Prozeduren, ihre Parameter und die Ergebnisse sind im Protokoll des jeweiligen Programms dokumentiert.

RPC stellt einen Authentifizierungsprozess bereit, der den Server und den Client untereinander identifiziert. RPC enthält einen Slot für die Authentifizierungsparameter bei jedem Prozedurfernaufruf, sodass sich der Aufrufende beim Server identifizieren kann. Das Clientpaket generiert Authentifizierungsparameter und gibt sie zurück. RPC unterstützt verschiedene Arten der Authentifizierung, wie z. B. die UNIX- und DES-Systeme (Data Encryption Standard).

In RPC stellt jeder Server ein Programm bereit, das aus einer Gruppe von fernen Serviceprozeduren besteht. Die Kombination aus Hostadresse, Programmnummer und Prozedurnummer gibt eine ferne Serviceprozedur an. Im RPC-Modell führt der Client einen Prozeduraufruf aus, um ein Datenpaket an den Server zu senden. Wenn das Paket ankommt, ruft der Server eine Zuteilungsroutine auf, führt den angeforderten Service aus und sendet eine Antwort an den Client zurück. Der Prozeduraufruf kehrt dann zum Client zurück.

Die RPC-Schnittstelle wird im Allgemeinen für die Kommunikation zwischen Prozessen auf verschiedenen Workstations in einem Netzwerk verwendet. RPC funktioniert jedoch genauso gut für die Kommunikation zwischen verschiedenen Prozessen auf derselben Workstation.

Das Programm Port Mapper ordnet RPC-Programm-und Versionsnummern einer transportspezifischen Portnummer zu. Das Programm Port Mapper ermöglicht die dynamische Bindung ferner Programme.

Um Netzwerkanwendungen mit RPC zu schreiben, benötigen Programmierer ein Arbeitswissen der Netztheorie. Für die meisten Anwendungen ist auch ein Verständnis der RPC-Mechanismen hilfreich, die normalerweise vom Protokollcompiler des Befehls rpcgen verdeckt werden. Die Verwendung des Befehls rpcgen umgeht jedoch die Notwendigkeit, die Details von RPC zu verstehen.