Cos'è l'RPC e perché è così importante?


15

Dall'inizio, ho sentito che non hai mai, mai disabilitato il servizio di chiamata di procedura remota in Windows. Ciò porta a cose orribili che prima erano difficili da rovesciare (credo che non sia più facile da fare, ma ora è molto più facile da risolvere). Tuttavia, non ho idea di cosa faccia o perché sia ​​così importante sostanzialmente l'intero sistema operativo.

È possibile riassumere lo scopo del servizio RPC e perché tanti altri servizi / applicazioni / operazioni dipendono da esso per essere eseguiti?

Risposte:


24

I progettisti di Windows hanno deciso di far dialogare tra loro molte cose tramite RPC, in modo da poter parlare a livello locale o in rete.

Ciò include cose come Active Directory, la maggior parte delle console MMC, la funzionalità di alcune applet del pannello di controllo come Gestione dispositivi, molte cose negli Strumenti di amministrazione e, eventualmente, componenti interni di Windows.

Credo che anche quando si accede a una console MMC, come compmgmt.mscper vedere cose sulla macchina locale, è fondamentalmente RPC su localhost (potrei sbagliarmi però).

Pensa a RPC come a un livello superiore a TCP / IP che viene utilizzato come un framework di comunicazioni di rete di basso livello (e non sicuro) da molti componenti di Windows. Perché non utilizzare direttamente TCP / IP? Al momento della progettazione di Windows NT (versione iniziale rilasciata nel 1993), c'erano altri protocolli di rete oltre a TCP / IP di uso comune, come Netware (SPX / IPX), NetBIOS, AppleTalk (penso che Windows lo abbia supportato in passato , potrebbe essere sbagliato ...) e simili. Quindi questo è un modo indipendente dalla rete per consentire ai componenti di Windows di comunicare con altri componenti sul computer locale o sul computer remoto.


2
Sul serio? Nessun voto? Questa è una grande risposta +1
Dave,

6

La verità è che RPC è ampiamente utilizzato nella macchina LOCAL , ma per l' utilizzo HOST-to-HOST , viene utilizzato principalmente da Microsoft internamente, raramente utilizzato da terze parti .


Uso principale RPC LOCALE :

  • Componente RPC non elaborato, ad esempio Registro, Netlogon, Firewall, Controllo servizi, SQL Server ... È possibile visualizzarne alcuni nell'elenco nella sezione "HOST-to-HOST".

  • molti componenti DCOM (basati su RPC, come un wrapper C ++ di C), includono componenti COM +.

Puoi eseguire dcomcnfg per vedere quanti componenti DCOM sul tuo computer:

Excel, Internet Explorer, Visual Studio ... possono essere automatizzati perché sono componenti DCOM:

inserisci qui la descrizione dell'immagine

Anche la finestra di dialogo Proprietà file di Explorer è anche un componente DCOM, divertente? Se rimuovi tutti gli ACL da "Modifica limiti" delle autorizzazioni di avvio di DCOMCNFG, non potrai fare quasi nulla, non solo la gestione funzionerà!

inserisci qui la descrizione dell'immagine


Utilizzo principale RPC HOST-to-HOST :

  • Elementi di gestione remota come quando "Gestione computer", "Editor del Registro di sistema", è possibile lasciarlo connettersi a una macchina remota! Quello che succede sottolinea è il protocollo RPC su SMB (porta TCP 445, nota come File Sharing).

    inserisci qui la descrizione dell'immagine

Puoi usare rpcdump o lo strumento ifids per scaricare tutte le interfacce RPC sul computer remoto, vedere i seguenti risultati, puoi vedere molte interfacce di gestione del sistema (possono anche essere usate localmente ovviamente):

[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.

Perché è importante RPC? Solo perché ogni sistema maturo necessita di un meccanismo di comunicazione tra processi, un set di strumenti per generare stub / proxy, uno standard per comprimere / decomprimere oggetto. Ogni sistema ha cose simili. Devi conoscere Android, il suo Binder è molto simile al design di DCOM.

In effetti, l'RPC HOST-to-HOST non è molto diffuso, principalmente perché sono complicati e opachi, non amichevoli con Internet a causa delle 445 o 135 porte spesso bloccate e l'esperienza di autenticazione è negativa. Le persone preferiscono scegliere un server HTTPS per invocare un componente remoto, è più semplice e controllabile.


2

Chiamata di procedura remota (RPC)

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

Remote Procedure Call (RPC) è un protocollo che un programma può utilizzare per richiedere un servizio da un programma situato in un altro computer in una rete senza dover comprendere i dettagli della rete. (Una chiamata di procedura è talvolta nota anche come chiamata di funzione o chiamata di subroutine.) RPC utilizza il modello client / server. Il programma richiedente è un client e il programma che fornisce servizi è il server. Come una normale chiamata di procedura locale o locale, un RPC è un'operazione sincrona che richiede la sospensione del programma richiedente fino a quando non vengono restituiti i risultati della procedura remota. Tuttavia, l'uso di processi o thread leggeri che condividono lo stesso spazio di indirizzi consente l'esecuzione simultanea di più RPC.

Quando le istruzioni di programma che utilizzano RPC vengono compilate in un programma eseguibile, nel codice compilato viene incluso uno stub che funge da rappresentante del codice di procedura remota. Quando il programma viene eseguito e viene emessa la chiamata di procedura, lo stub riceve la richiesta e la inoltra a un programma di runtime client nel computer locale. Il programma di runtime client ha le conoscenze su come indirizzare il computer remoto e l'applicazione server e invia il messaggio attraverso la rete che richiede la procedura remota. Allo stesso modo, il server include un programma di runtime e stub che si interfaccia con la procedura remota stessa. I risultati vengono restituiti allo stesso modo.

Esistono diversi modelli e implementazioni RPC. Un modello e un'implementazione popolari sono il Distributed Computing Environment (DCE) della Open Software Foundation. L'Institute of Electrical and Electronics Engineers definisce RPC nelle sue specifiche ISO Remote Procedure Call Specification, ISO / IEC CD 11578 N6561, ISO / IEC, novembre 1991.

RPC comprende il livello Transport e il livello Application nel modello di comunicazione di rete Open Systems Interconnection (OSI). RPC semplifica lo sviluppo di un'applicazione che include più programmi distribuiti in una rete.

Metodi alternativi per la comunicazione client / server includono l'accodamento dei messaggi e l'APPC (Advanced Program-to-Program Communication) di IBM.


Qui di più da Microsoft: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378651(v=vs.85).aspx

Scopo
Microsoft Remote Procedure Call (RPC) definisce una potente tecnologia per la creazione di programmi client / server distribuiti. Gli stub e le librerie di runtime RPC gestiscono la maggior parte dei processi relativi ai protocolli e alla comunicazione di rete. Ciò consente di concentrarsi sui dettagli dell'applicazione anziché sui dettagli della rete.
Laddove applicabile,
RPC può essere utilizzato in tutte le applicazioni client / server basate su sistemi operativi Windows. Può anche essere utilizzato per creare programmi client e server per ambienti di rete eterogenei che includono sistemi operativi come Unix e Apple.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.