Was ist RPC und warum ist es so wichtig?

15

Von Anfang an habe ich gehört, dass Sie den Remote Procedure Call-Dienst unter Windows niemals deaktivieren. Dies führt zu schrecklichen Dingen, die sich früher nur schwer umstürzen ließen (ich glaube, dass dies nicht mehr einfach ist, aber jetzt viel einfacher zu beheben). Ich habe jedoch keine Ahnung, was es macht oder warum es so wichtig ist, im Grunde das gesamte Betriebssystem.

Kann man den Zweck des RPC-Dienstes zusammenfassen und warum hängen so viele andere Dienste / Anwendungen / Vorgänge davon ab, dass er ausgeführt wird?

redknightalex
quelle

Antworten:

24

Die Entwickler von Windows haben beschlossen, viele Dinge über RPC miteinander zu kommunizieren - damit sie entweder lokal oder über ein Netzwerk kommunizieren können.

Dies beinhaltet Dinge wie Active Directory, die meisten MMC-Konsolen, die Funktionalität einiger Applets der Systemsteuerung wie Geräte-Manager, viele der Dinge in der Verwaltung und möglicherweise interne Windows-Komponenten.

Ich glaube, auch wenn Sie auf eine MMC-Konsole zugreifen, compmgmt.mscum Dinge über den lokalen Computer zu sehen, ist es im Grunde RPC'ing zu localhost (ich könnte mich jedoch irren).

Stellen Sie sich RPC als etwas vor, das eine Ebene über TCP / IP liegt und von vielen Windows-Komponenten als untergeordnetes (und unsicheres) netzwerkfähiges Kommunikationsframework verwendet wird. Warum nicht direkt TCP / IP verwenden? Zu der Zeit, als Windows NT entwickelt wurde (die erste Version wurde 1993 veröffentlicht), gab es neben TCP / IP noch andere Netzwerkprotokolle, wie beispielsweise Netware (SPX / IPX), NetBIOS und AppleTalk (ich glaube, Windows hat dies früher unterstützt) , könnte falsch sein ...) und so. Auf diese Weise können Windows-Komponenten netzwerkunabhängig mit anderen Komponenten auf dem lokalen Computer oder dem Remotecomputer kommunizieren.

LawrenceC
quelle
2
Ernsthaft? Keine Upvotes? Dies ist eine großartige Antwort +1
Dave
6

Die Wahrheit ist: RPC wird in LOCAL- Computern häufig verwendet , aber für die Verwendung von Host zu Host wird es hauptsächlich von Microsoft intern verwendet, selten von Drittanbietern .


LOKALE RPC-Hauptnutzung:

  • Rohe RPC-Komponente, wie z. B. Registrierung, Netlogon, Firewall, Dienststeuerung, SQL Server ... Sie können einige davon in der Liste im Abschnitt "Host-zu-Host" sehen.

  • Viele DCOM-Komponenten (basierend auf RPC, wie ein C ++ - Wrapper von C) enthalten COM + -Komponenten.

Sie können dcomcnfg ausführen, um festzustellen, wie viele DCOM-Komponenten sich auf Ihrem Computer befinden:

Excel, Internet Explorer, Visual Studio ... können automatisiert werden, da sie DCOM-Komponenten sind:

Bildbeschreibung hier eingeben

Sogar das Dialogfeld "Dateieigenschaften" des Explorers ist ebenfalls eine DCOM-Komponente. Wenn Sie alle ACLs aus "Edit Limits" der Startberechtigungen von DCOMCNFG entfernen, können Sie fast alles tun, nicht nur die Verwaltung, sondern auch die Dateieigenschaft im Explorer anzeigen!

Bildbeschreibung hier eingeben


HOST-to-HOST- RPC-Hauptnutzung:

  • Remote-Management-Sachen wie "Computerverwaltung", "Registrierungseditor", können Sie es mit einem Remote-Computer verbinden lassen! Was unterstrichen geschieht, ist das RPC-über-SMB-Protokoll (TCP-Port 445, bekannt als File Sharing).

    Bildbeschreibung hier eingeben

Sie können das Tool rpcdump oder ifids verwenden, um alle RPC-Schnittstellen auf dem Remotecomputer zu sichern. Die folgenden Ergebnisse zeigen viele Systemverwaltungsschnittstellen an (diese können natürlich auch lokal verwendet werden):

[MS-RSP]: Remote Shutdown Protocol 
[MS-TSCH]: Task Scheduler Service Remoting Protocol 
[MS-TSCH]: Task Scheduler Service Remoting Protocol 
[MS-TSCH]: Task Scheduler Service Remoting Protocol 
[MS-EVEN6]: EventLog Remoting Protocol 
Adh APIs
AppInfo
Base Firewall Engine API
DHCP Client LRPC Endpoint
DHCPv6 Client LRPC Endpoint
DfsDs service
EFSK RPC Interface
Event log TCPIP
Fw APIs
Group Policy RPC Interface
IP Transition Configuration endpoint
IdSegSrv service
Impl friendly name
KeyIso
LicenseManager
NRP server endpoint
NSI server endpoint
NetSetup API
Ngc Pop Key Service
Proxy Manager client server endpoint
Proxy Manager provider server endpoint
Secure Desktop LRPC interface
Security Center
UserMgrCli
WM_WindowManagerRPC\Server
WinHttp Auto-Proxy Service
Witness Client Test Interface
Witness Client Upcall Server
XactSrv service
...

Received 499 endpoints.

Warum ist RPC wichtig? Nur weil jedes ausgereifte System einen prozessübergreifenden Kommunikationsmechanismus benötigt, ein Toolset zum Generieren von Stub / Proxy, einen Standard zum Packen / Entpacken von Objekten. Jedes System hat ähnliche Dinge. Sie müssen Android kennen, seine Sammelmappe ist dem Design von DCOM sehr ähnlich.

Tatsächlich ist HOST-to-HOST-RPC nicht weit verbreitet, vor allem, weil sie kompliziert und undurchsichtig sind, nicht für das Internet geeignet sind, da häufig 445 oder 135 Ports blockiert werden und die Authentifizierung schlecht ist. Die Leute bevorzugen es, einen HTTPS-Server zum Aufrufen einer Remote-Komponente zu wählen, der einfacher und kontrollierbarer ist.

osexp2003
quelle
2

Remote Procedure Call (RPC)

Quelle: http://searchsoa.techtarget.com/definition/Remote-Procedure-Call

Remote Procedure Call (RPC) ist ein Protokoll, mit dem ein Programm einen Dienst von einem Programm anfordern kann, das sich auf einem anderen Computer in einem Netzwerk befindet, ohne die Netzwerkdetails verstehen zu müssen. (Ein Prozeduraufruf wird manchmal auch als Funktionsaufruf oder Unterprogrammaufruf bezeichnet.) RPC verwendet das Client / Server-Modell. Das anfordernde Programm ist ein Client und das Dienstbereitstellungsprogramm ist der Server. Wie ein regulärer oder lokaler Prozeduraufruf ist ein RPC eine synchrone Operation, bei der das anfordernde Programm angehalten werden muss, bis die Ergebnisse der entfernten Prozedur zurückgegeben werden. Durch die Verwendung von kompakten Prozessen oder Threads, die denselben Adressraum verwenden, können jedoch mehrere RPCs gleichzeitig ausgeführt werden.

Wenn Programmanweisungen, die RPC verwenden, in ein ausführbares Programm kompiliert werden, wird ein Stub in den kompilierten Code eingefügt, der den Code der Remoteprozedur darstellt. Wenn das Programm ausgeführt und der Prozeduraufruf ausgegeben wird, empfängt der Stub die Anforderung und leitet sie an ein Client-Laufzeitprogramm auf dem lokalen Computer weiter. Das Client-Laufzeitprogramm verfügt über das Wissen, wie die Remotecomputer- und Serveranwendung adressiert wird, und sendet die Nachricht über das Netzwerk, das die Remoteverfahren anfordert. In ähnlicher Weise enthält der Server ein Laufzeitprogramm und einen Stub, die mit der Remote-Prozedur selbst verbunden sind. Die Ergebnisse werden auf die gleiche Weise zurückgegeben.

Es gibt verschiedene RPC-Modelle und -Implementierungen. Ein beliebtes Modell und eine beliebte Implementierung ist die Distributed Computing Environment (DCE) der Open Software Foundation. Das Institut für Elektrotechnik und Elektronik definiert RPC in seiner ISO Remote Procedure Call-Spezifikation, ISO / IEC CD 11578 N6561, ISO / IEC, November 1991.

RPC umfasst die Transportschicht und die Anwendungsschicht im OSI-Modell (Open Systems Interconnection) der Netzwerkkommunikation. RPC erleichtert die Entwicklung einer Anwendung, die mehrere in einem Netzwerk verteilte Programme enthält.

Alternative Methoden für die Client / Server-Kommunikation sind Message Queuing und Advanced Program-to-Program Communication (APPC) von IBM.


Hier weitere Informationen von Microsoft: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378651(v=vs.85).aspx

Zweck
Microsoft Remote Procedure Call (RPC) definiert eine leistungsstarke Technologie zum Erstellen verteilter Client / Server-Programme. Die RPC-Laufzeit-Stubs und -Bibliotheken verwalten die meisten Prozesse in Bezug auf Netzwerkprotokolle und Kommunikation. Auf diese Weise können Sie sich auf die Details der Anwendung und nicht auf die Details des Netzwerks konzentrieren.
Gegebenenfalls
kann RPC in allen Client / Server-Anwendungen verwendet werden, die auf Windows-Betriebssystemen basieren. Sie können damit auch Client- und Serverprogramme für heterogene Netzwerkumgebungen mit Betriebssystemen wie Unix und Apple erstellen.

Devid
quelle