Chamada de Procedimento Remoto
Chamada de Procedimento Remoto (RPC) é um protocolo que fornece o paradigma de comunicações de alto nível utilizado no sistema operacional. O RPC pressupõe a existência de um protocolo de transporte de baixo nível, como Transmission Control Protocol / Internet Protocol (TCP/IP) ou User Datagram Protocol (UDP), para transportar os dados da mensagem entre os programas em comunicação. RPC implementa um sistema lógico de comunicações cliente-para-servidor projetado especificamente para o suporte de aplicativos de rede.
Este capítulo fornece as seguintes informações sobre a programação RPC:
O protocolo RPC é construído sobre o protocolo eXternal Data Representation (XDR), que padroniza a representação de dados em comunicações remotas. O XDR converte os parâmetros e resultados de cada serviço de RPC fornecido.
O protocolo RPC possibilita que os usuários trabalhem com procedimentos remotos como se os procedimentos fossem locais. As chamadas de procedimento remoto são definidas por meio de rotinas contidas no protocolo RPC. Cada mensagem de chamada é correspondida com uma mensagem de resposta. O protocolo RPC é um protocolo de passagem de mensagens que implementa outros protocolos não-RPC como o batching e a radiodifusão chamadas remotas. O protocolo RPC também suporta procedimentos de callback e a subroutine select no lado do servidor.
Um cliente é um computador ou processo que acessa os serviços ou recursos de outro processo ou computador na rede. Um server é um computador que fornece serviços e recursos, e que implementa serviços de rede. Cada rede serviço é uma coleção de programas remotos. Um programa remoto implementa procedimentos remotos. Os procedimentos, seus parâmetros e os resultados estão todos documentados no protocolo específico do programa.
RPC fornece um processo de autenticação que identifica o servidor e cliente um para o outro. RPC inclui um slot para os parâmetros de autenticação em cada chamada de procedimento remoto para que o ouvinte possa identificar-se ao servidor. O pacote do cliente gera e retorna parâmetros de autenticação. O RPC oferece suporte a vários tipos de autenticação, como os sistemas UNIX e Data Encryption Standard (DES).
Em RPC, cada servidor fornece um programa que é um conjunto de procedimentos de serviço remoto. A combinação de um endereço de host, número do programa e número de procedimento especifica um procedimento de serviço remoto. No modelo RPC, o cliente faz uma chamada de procedimento para enviar um pacote de dados para o servidor. Quando o pacote chega, o servidor chama uma rotina de despacho, executa qualquer que seja o serviço solicitado, e envia uma resposta de volta para o cliente. A chamada de procedimento então retorna para o cliente.
A interface RPC é geralmente usada para se comunicar entre processos em diferentes estações de trabalho em uma rede. No entanto, a RPC funciona tão bem para a comunicação entre diferentes processos na mesma estação de trabalho.
O programa Porta Mapper mapeia o programa RPC e os números de versão para um número de porta específico de transporte. O programa Porta Mapper torna possível a ligação dinâmica de programas remotos.
Para escrever aplicativos de rede usando RPC, os programadores precisam de um conhecimento de trabalho da teoria da rede. Para a maioria dos aplicativos, um entendimento dos mecanismos de RPC geralmente ocultos pelo compilador de protocolo do comando rpcgen também é útil. No entanto, o uso do comando rpcgen contorna a necessidade de compreensão dos detalhes de RPC.