O que é RPC e por que é tão importante?

12

Desde o início, ouvi dizer que você nunca desabilita o serviço de Chamada de Procedimento Remoto no Windows. Fazer isso leva a coisas horríveis que costumavam ser difíceis de superar (acredito que não seja mais fácil de fazer, mas agora é muito mais fácil de corrigir). No entanto, não tenho ideia do que faz ou porque é tão importante basicamente todo o sistema operacional.

É possível resumir a finalidade do serviço RPC e por que tantos outros serviços / aplicativos / operações dependem dele para executar?

    
por redknightalex 06.07.2013 / 00:21

3 respostas

16

Os designers do Windows decidiram fazer com que muitas coisas conversassem entre si por meio do RPC - para que pudessem conversar localmente ou por meio de uma rede.

Isso inclui coisas como o Active Directory, a maioria dos consoles do MMC, a funcionalidade de alguns applets do painel de controle, como o Gerenciador de Dispositivos, muitas das coisas em Ferramentas Administrativas e, possivelmente, componentes internos do Windows.

Eu acredito que mesmo quando você está acessando um console MMC, como compmgmt.msc para ver as coisas sobre a máquina local, é basicamente RPC para o host local (eu posso estar errado).

Pense no RPC como algo um nível acima do TCP / IP que é usado como uma estrutura de comunicação de rede de baixo nível (e insegura) por muitos componentes do Windows. Por que não usar o TCP / IP diretamente? No momento em que o Windows NT foi projetado (versão inicial lançada em 1993), você tinha outros protocolos de rede além do TCP / IP em uso comum, como Netware (SPX / IPX), NetBIOS, AppleTalk (acho que o Windows suportou isso no passado , pode estar errado ...) e tal. Portanto, esta é uma forma de agnóstico de rede para que os componentes do Windows possam conversar com outros componentes na máquina local ou na máquina remota.

    
por 06.07.2013 / 00:31
5

A verdade é: o RPC é amplamente usado na máquina LOCAL , mas para uso HOST-to-HOST , é usado principalmente pela Microsoft internamente, raramente usado por terceiros .

Uso principal de RPC LOCAL :

  • Componente RPC bruto, como Registro, Netlogon, Firewall, Controle de Serviço, SQL Server ... Você pode ver alguns deles na lista na seção "HOST-to-HOST".

  • muitos componentes DCOM (baseados em RPC, como um wrapper C de C ++), incluem componentes COM +.

Você pode executar o dcomcnfg para ver quantos componentes do DCOM na sua máquina:

OExcel,oInternetExplorer,oVisualStudio...podemserautomatizadosporquesãocomponentesdoDCOM:

MesmoacaixadediálogoPropriedadesdoarquivodoExplorertambéméumcomponentedoDCOM,engraçado?SevocêremovertodasasACLsde"Edit Limits" das permissões de inicialização do DCOMCNFG, você não poderá fazer quase nada, não apenas o gerenciamento funciona !, até mesmo mostrar a propriedade do arquivo no Explorer!

UsoprincipalRPCHOST-to-HOST:

  • MaterialdoGerenciamentoRemoto,comoquando"Gerenciamento do Computador", "Editor do Registro", você pode permitir que ele se conecte a uma máquina remota! O que acontece é o protocolo RPC sobre SMB (porta TCP 445, conhecido como compartilhamento de arquivos).

Você pode usar a ferramenta rpcdump ou ifids para despejar todos os internfaces RPC na máquina remota, veja os resultados a seguir, você pode ver muitas interfaces de gerenciamento de sistema (Eles também podem ser usados localmente, é claro):

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

Por que o RPC é importante? Só porque todo sistema maduro precisa de um mecanismo de comunicação entre processos, um conjunto de ferramentas para gerar stub / proxy, um padrão para empacotar / descompactar objetos. Todo sistema tem coisas semelhantes. Você deve conhecer o Android, seu Binder é muito semelhante ao design do DCOM.

Na verdade, o RPC HOST-to-HOST não é amplamente difundido, principalmente porque são complicados e opacos, não são amigáveis à Internet, pois as portas 445 ou 135 geralmente estão bloqueadas e a experiência de autenticação é ruim. As pessoas preferem escolher um servidor HTTPS para invocar um componente remoto, é mais simples e controlável.

    
por 15.12.2015 / 04:21
2

Fonte do Remote Procedure Call (RPC)

: link

Remote Procedure Call (RPC) is a protocol that one program can use to request a service from a program located in another computer in a network without having to understand network details. (A procedure call is also sometimes known as a function call or a subroutine call.) RPC uses the client/server model. The requesting program is a client and the service-providing program is the server. Like a regular or local procedure call, an RPC is a synchronous operation requiring the requesting program to be suspended until the results of the remote procedure are returned. However, the use of lightweight processes or threads that share the same address space allows multiple RPCs to be performed concurrently.

When program statements that use RPC are compiled into an executable program, a stub is included in the compiled code that acts as the representative of the remote procedure code. When the program is run and the procedure call is issued, the stub receives the request and forwards it to a client runtime program in the local computer. The client runtime program has the knowledge of how to address the remote computer and server application and sends the message across the network that requests the remote procedure. Similarly, the server includes a runtime program and stub that interface with the remote procedure itself. Results are returned the same way.

There are several RPC models and implementations. A popular model and implementation is the Open Software Foundation's Distributed Computing Environment (DCE). The Institute of Electrical and Electronics Engineers defines RPC in its ISO Remote Procedure Call Specification, ISO/IEC CD 11578 N6561, ISO/IEC, November 1991.

RPC spans the Transport layer and the Application layer in the Open Systems Interconnection (OSI) model of network communication. RPC makes it easier to develop an application that includes multiple programs distributed in a network.

Alternative methods for client/server communication include message queueing and IBM's Advanced Program-to-Program Communication (APPC).


Mais informações da Microsoft: link

Purpose
Microsoft Remote Procedure Call (RPC) defines a powerful technology for creating distributed client/server programs. The RPC run-time stubs and libraries manage most of the processes relating to network protocols and communication. This enables you to focus on the details of the application rather than the details of the network.
Where applicable
RPC can be used in all client/server applications based on Windows operating systems. It can also be used to create client and server programs for heterogeneous network environments that include such operating systems as Unix and Apple.

    
por 06.07.2013 / 00:24