2009-03-23 2 views
2

Das ist, was ich davon verstehe:Wenn Sie rpcgen verwenden, wie findet der Anrufer den Angerufenen?

Die .x-Datei definiert die Schnittstelle und die Parameter, die von dem Server und Client gemeinsam sind. Wenn Sie es mit rpcgen kompilieren, generiert es die .h, _xdr.c, _clnt.c und _svc.c. Der _clnt.c wäre der Stub und der _svc.c ist der Skelleton, richtig?

Ich verstehe, dass sie die Kommunikation zwischen den 2 Zwischenstufen, aber wie? In dem Beispiel, das ich gesehen habe, haben Sie auch die IP-Adresse des Rechners angegeben, mit dem Sie eine Verbindung herstellen wollen (im Beispiel war es derselbe, 127.0.0.1), aber Sie geben den Port nicht an. Hat es einen reservierten Port?

Antwort

4

Die Prozedur hat zwei Schritte. Es gibt einen Port-Mapper, der auf dem Port 111 läuft und ein RPC-Dienst registriert sich durch diesen Dienst und wird von diesem entdeckt, kann jedoch selbst auf einem beliebigen Port laufen.

Weitere Informationen finden Sie unter RFC 1833 - Binding Protocols for ONC RPC Version 2.

1

Auf einem RPC-Servercomputer wird ein Prozess ausgeführt, der als Endpunkt-Mapper bezeichnet wird (dies gilt speziell für ONC RPC, andere RPC-Mechanismen sind jedoch ähnlich). Dieser Prozess läuft auf einem bekannten Port, so dass sich jeder damit verbinden kann (Sicherheit und Existenz erlaubt natürlich).

wird ein RPC-Server starten und sich mit der Endpunkt-Zuordnung registrieren, seinen Code zu geben (zB MULT) und die Portnummer und die Endpunkt-Zuordnung speichert pflichtschuldigst, dass die Informationen für den späteren Gebrauch:

+---------+        +--------+ 
| Mapper, | <- Register MULT, port Y -- | Server | 
| known |        | for | 
| port X |        | MULT | 
+---------+        +--------+ 

Wenn ein Client anschließend über die IP-Adresse eine Verbindung zum Endpoint Mapper herstellt, erhält er den gewünschten Code (MULT), und der Endpunkt-Mapper stellt das endgültige Ziel bereit - jetzt kennt der Client sowohl die IP-Adresse als auch den Port für den MULT-Dienst :

+--------+      +---------+ 
| Client | -- Request MULT -> | Mapper, | 
|  | <- Return port Y -- | known | 
|  |      | port X | 
+--------+      +---------+ 

An diesem Punkt kann der Endpunktzuordnungsdienst aus dem Weg gehen und den Client eine Sitzung direkt mit dem MULT-Dienst selbst öffnen lassen.

+--------+      +--------+ 
| Client | -- Connect to MULT -> | Server | 
|  | <-  Do stuff -> | for | 
|  |      | MULT | 
+--------+      +--------+ 
Verwandte Themen