Remote Procedure Call


Remote Procedure Call

Remote Procedure Call (RPC, sinngemäß „Aufruf einer fernen Prozedur“) ist eine Technik zur Realisierung von Interprozesskommunikation. Sie ermöglicht den Aufruf von Funktionen in anderen Adressräumen. Im Normalfall werden die aufgerufenen Funktionen auf einem anderen Computer als das aufrufende Programm ausgeführt. Es existieren viele Implementierungen dieser Technik, in der Regel sind sie untereinander nicht kompatibel.

Inhaltsverzeichnis

Geschichte und Verbreitung

Der Grundgedanke von RPC wurde erstmals 1976 von James E. White im RFC 707 publiziert[1]. Eine der ersten Implementierungen ist Xerox Courier, das ein Teil des Xerox Network Systems (XNS) ist und auch in Novells Netware benutzt wird[2][3]. Der genaue Aufbau von RPC ist in RFC 1057 und RFC 5531 beschrieben.

Die am weitesten verbreitete Variante ist das ONC RPC (Open Network Computing Remote Procedure Call), das vielfach auch als Sun RPC bezeichnet wird. ONC RPC wurde ursprünglich durch Sun Microsystems für das Network File System (NFS) entwickelt. Für diese RPC-Variante findet sich unter anderem auch eine Implementierung in Linux.

Die Implementierung Distributed Computing Environment Remote Procedure Call (DCE RPC) ist ebenfalls weit verbreitet. Microsoft leitete Microsoft RPC (MSRPC) von der DCE RPC 1.1 Referenzimplementation ab. Auf dieser Grundlage wurde später DCOM implementiert. Die Erfahrungen aus DCOM flossen in .NET Remoting ein.

Ablauf

RPC ist eine Möglichkeit, ein Client-Server-Modell zu implementieren. Die Kommunikation beginnt, indem der Client eine Anfrage an einen bekannten Server schickt und auf die Antwort wartet. In der Anfrage gibt der Client an, welche Funktion mit welchen Parametern ausgeführt werden soll. Der Server bearbeitet die Anfrage und schickt die Antwort an den Client zurück. Nach Empfang der Nachricht kann der Client seine Verarbeitung fortführen.

Beim Einsatz von RPC können durch Kommunikationsfehler unterschiedliche Fehlerkonstellationen auftreten, die beachtet und bearbeitet werden müssen.

Fehlersemantik

RPC setzt im allgemeinen auf UDP auf. Daher ist es eine verbindungslose Kommunikation. Dies hat zum Vorteil, dass kein Traffic-Overhead durch Ack-Pakete entsteht. Jedoch ist die UDP-Paketgröße nicht ausreichend für große Antworten. Daher muss hier von 2 Arten von RPC-Protokollen ausgegangen werden: Request-Reply und Request-Reply-ACK. Dies ist zu beachten, da jedes dieser 2 Protokolle andere Fehlerquellen hat und somit eine andere Fehlerbehandlung nötig ist. Im Falle eines Fehlers können implementierungsabhängig keine Ergebnisse, genau ein Ergebnis oder viele Ergebnisse empfangen werden. Hierzu können die folgenden "Fehlersemantiken" auf der Seite des Clients ausgewählt werden: maybe, at-least-once, exactly-once und at-most-once.

Falls Fehler auftreten, kann dann je nach spezifizierter Fehlersemantik das Folgende passieren:

(Falls keine Fehler auftreten, garantieren alle Semantiken die einmalige Ausführung der Prozedur.)

Typ Ein Request wird im Fehlerfall ... Filterung empfangener Duplikate
maybe ... nicht noch einmal verschickt. keine Behandlung
at-least-once ... noch einmal verschickt. nein Die entfernte Prozedur wird bei einem empfangenen Duplikat wiederholt ausgeführt (nur empfehlenswert für idempotente Operationen).
at-most-once ... noch einmal verschickt. ja Duplikate werden gefiltert, entweder komplette Ausführung des Auftrags, oder Fehlermeldung.
exactly-once ... noch einmal verschickt. ja Duplikate werden ebenfalls gefiltert. Weiterhin wird auch bei Ausfall des Systems die Ausführung des Auftrags über den Wiederanlauf hinaus gewährleistet. In einigen Büchern wird jedoch angegeben, dass exactly-once bei verteilten Systemen nicht möglich ist.

Generell gilt jedoch: Es kann keinerlei Garantie gegeben werden. Denn falls z. B. ein Netzwerk-Knoten dauerhaft ausfällt, ist in jedem Fall auch keine einzige Ausführung möglich.

Funktionsweise

Um eine fremde Prozedur aufzurufen, muss eine Nachricht vom Client-Prozess zum Server-Prozess versendet werden. In dieser müssen der Name der Prozedur (oder eine ID) und die zugehörigen Parameterwerte enthalten sein. Die Nachricht sollte letztlich bei einem Server-Prozess ankommen, der genau diese Prozedur implementiert (hierzu erforderlich beim Server: register (Bekanntmachung, Sicherstellen des öffentlichen Zugangs); hierzu erforderlich beim Client: lookup und binding).

Die Suche nach einem entsprechenden Server kann durch Broadcast (in einem lokalen Netz) realisiert werden oder durch Inanspruchnahme eines Verzeichnisdienstes. (Der Verzeichnisdienst hält ein global verfügbares Objekt, genauer ein Verzeichnis von Servern und den von ihnen implementierten Prozeduren bereit.)

Die Suche und die Codierung, aber auch z. B. notwendige Recovery-Maßnahmen (error recoveries) erledigt auf der Seite des Clients der client stub.

Die wichtigste Komponente auf der Serverseite ist der Portmapper-Daemon, der bei ONC RPC auf dem UDP- und TCP-Port 111 lauscht; bei DCE RPC übernimmt diese Funktion der Endpointmapper, welcher auf dem UDP- und TCP-Port 135 lauscht. Portmapper resp. Endpointmapper übernehmen die Koordination der durch den Client gewünschten Funktionsaufrufe. Jedes Programm, das auf dem Server RPC-Dienste zur Verfügung stellen will, muss ihm daher bekannt sein.

Wenn der Rechner, auf dem der Server-Prozess läuft, die Anfrage empfängt, so wird mit Hilfe des Portmappers entweder erst der Prozess erschaffen, der die Prozedur ausführt. Oder alternativ kann ein Prozess auch nur aktiviert werden (in diesem Fall wird eine vordefinierte Anzahl von Prozessen bereitgehalten). Oder aber es wird ein neuer Thread erzeugt.

Fremdzugriffe

Unter Microsoft Windows können sämtliche Einstellungen des Remote Procedure Call nicht verändert oder deaktiviert werden (siehe Windows, Dienste, %SystemRoot%\system32\mmc.exe, %SystemRoot%\system32\services.msc /s).

Über RPC-Aufrufe und verbundene Protokolle sind autonome Übertragungen an und fremde Zugriffe durch Microsoft oder von Regierungsstellen auf den lokalen Computer möglich, sobald eine Netzverbindung hergestellt wird[4][5]. Auch Übertragungen, Überwachung und Ausspähung auch durch Unbefugte mittels Trojanern nutzen diese Protokollschnittstelle oder benachbarte und ähnliche Protokolle, wie beispielsweise SNMP. Es bleibt lediglich das Aufzeichnen der Internet-Verbindungen als Option der Beobachtung der eigenen Netzwerkverbindungen.

Siehe auch

  • CORBA ist eine Möglichkeit zur Realisierung von RPC.
  • Java RMI stellt einen RPC-Mechanismus für Java bereit.
  • Microsoft .NET Remoting bietet die Möglichkeit zur Realisierung von RPC auf der Windows Plattform.
  • RPyC implementiert RPC in Python und bietet die Unterstützung von asynchronen calls.
  • XML-RPC ist ein RPC-Ableger, der auf XML-Dokumenten und http basiert.
  • Webservices können wie RPC genutzt werden.

Einzelnachweise

  1. James E. White; Proceedings of the 1976 National Computer Conference (Hrsg.): RFC 707: A High-Level Framework for Network-Based Resource Sharing. 1976.
  2. Andrew D. Birrell, Bruce Jay Nelson; Xerox Palo Alto Research Center (Hrsg.): Implementing Remote Procedure Calls. ACM Transactions on Computer Systems, Vol.2 No.1, February 1984, Seiten 39-49, 1984 (http://www.cs.yale.edu/homes/arvind/cs422/doc/rpc.pdf).
  3. Günther Bengel: Grundkurs verteilte Systeme. Vieweg und Teubner Verlag, 2005, ISBN 3528257385.
  4. Spyware
  5. BKA Weiterbildung

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Remote procedure call — (RPC) is an Inter process communication technology that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding… …   Wikipedia

  • Remote Procedure Call — Удалённый вызов процедур (или Вызов удалённых процедур) (от англ. Remote Procedure Call (RPC))  класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых… …   Википедия

  • Remote Procedure Call — RPC (Remote Procedure Call) est un protocole permettant de faire des appels de procédures sur un ordinateur distant à l aide d un serveur d applications. Ce protocole est utilisé dans le modèle client serveur et permet de gérer les différents… …   Wikipédia en Français

  • Remote Procedure Call — Remote Procedure Call,   RPC …   Universal-Lexikon

  • Remote procedure call — En informatique et en télécommunication, RPC (Remote Procedure Call) est un protocole réseau permettant de faire des appels de procédures sur un ordinateur distant à l aide d un serveur d applications. Ce protocole est utilisé dans le modèle… …   Wikipédia en Français

  • remote procedure call — noun A technology that allows a computer program to cause a subroutine or procedure to execute in another address space, commonly on another computer on a shared network, without the programmer explicitly coding the details for this remote… …   Wiktionary

  • Remote procedure call — …   Википедия

  • Remote Procedure Call —    Abbreviated RPC. A set of procedures used to implement client/server architecture in distributed programming.    RPC describes how an application initiates a process on another network node and how it retrieves the appropriate result.    RPCs… …   Dictionary of networking

  • DCE Remote Procedure Call — Saltar a navegación, búsqueda DCE Remote Procedure Call o bien DCE RPC es un sistema de llamada a procedimiento remoto del conjunto de software OSF DCE.[1] DCE RPC no debe confundirse con DCE el cual es un conjunto de servicios que incluye DCE… …   Wikipedia Español

  • Open Network Computing Remote Procedure Call — (ONC RPC) is a widely deployed remote procedure call system. ONC was originally developed by Sun Microsystems as part of their Network File System project, and is sometimes referred to as Sun ONC or Sun RPC. ONC is considered lean and mean , but… …   Wikipedia