Pular para o conteúdo principal

Questão de Redes de Computadores — Acesso Remoto (VNC, TeamViewer, RPC, etc.) — VUNESP 2023

Redes de ComputadoresAcesso Remoto (VNC, TeamViewer, RPC, etc.)
Código
vu196462
Banca
VUNESP
Órgão
Pref Pindamonhangaba
Ano
2023
Cargo
Ana (Pref Pinda)

No contexto de RPC (Remote Procedure Call), considerando uma chamada remota de procedimento (procedure) via rede de um cliente a um servidor, um dos papeis de objetos do tipo skeleton é:

  1. Atraduzir dados recebidos da chamada remota, convertendo esses dados em uma chamada de procedimento local no servidor.
  2. Babrir uma conexão TCP com o servidor para trafegar os dados da chamada remota.
  3. Cserializar os parâmetros da chamada remota, no cliente, para envio via rede ao servidor.
  4. Dfornecer ao chamador do procedimento remoto, no lado do cliente, uma lista de servidores ativos que disponibilizam esse procedimento, permitindo que o cliente decida qual servidor chamar.
  5. Eoferecer um mecanismo de persistência abstrato para os procedimentos que executam no lado do servidor, salvando informações que precisam ser persistidas em um banco de dados de forma transparente.
Revelar gabarito e comentário

GabaritoA — traduzir dados recebidos da chamada remota, convertendo esses dados em uma chamada de procedimento local no servidor.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

RPC: o papel do skeleton (stub do servidor)

Gabarito: letra A. No contexto de RPC (Remote Procedure Call), o skeleton — também chamado de stub do servidor — é o componente que, no lado do servidor, recebe os dados da chamada remota (já deserializados) e os converte em uma chamada de procedimento local, invocando a função real do servidor. Essa é a função descrita na alternativa A, que corresponde exatamente ao papel do skeleton.

A RPC (Remote Procedure Call) é uma técnica que permite que um programa chame um procedimento que executa em outra máquina como se fosse uma chamada local. O objetivo é ocultar os detalhes de comunicação de rede do programador. Para isso, a arquitetura clássica de RPC (proposta por Birrell e Nelson, em 1984) utiliza dois componentes auxiliares: o stub do cliente e o stub do servidor (também chamado de skeleton).

O stub do cliente fica no espaço de endereçamento do cliente e tem o mesmo nome do procedimento remoto. Quando o programa cliente chama esse stub, ele empacota os parâmetros em uma mensagem — processo chamado de marshaling (ou empacotamento) — e envia essa mensagem pela rede ao servidor. Já o skeleton (stub do servidor) fica no lado do servidor: ele recebe a mensagem, desempacota os parâmetros (faz o unmarshaling) e invoca o procedimento local correspondente, passando os parâmetros já convertidos. A resposta segue o caminho inverso: o skeleton empacota o resultado e o envia de volta ao stub do cliente, que o desempacota e o entrega ao programa chamador.

Vamos acompanhar as etapas de uma chamada RPC, conforme descrito na literatura clássica de redes (Tanenbaum):

  1. O cliente chama o stub do cliente (chamada local, com parâmetros na pilha).

  2. O stub do cliente empacota os parâmetros em uma mensagem (marshaling) e faz uma chamada de sistema para enviá-la.

  3. O sistema operacional envia a mensagem pela rede até o servidor.

  4. O sistema operacional do servidor entrega a mensagem ao skeleton (stub do servidor).

  5. O skeleton desempacota os parâmetros e chama o procedimento servidor real, com os parâmetros já convertidos.

A resposta segue o mesmo caminho no sentido inverso.

A pegadinha desta questão está em confundir o papel do skeleton (lado do servidor) com o do stub do cliente (lado do cliente). O stub do cliente é quem serializa os parâmetros (alternativa C); o skeleton é quem os deserializa e converte em chamada local (alternativa A). A banca explora exatamente essa inversão de papéis.

NÃO CAIA NESSA!

A banca troca os papéis dos stubs: a alternativa C descreve a função do stub do cliente (serializar os parâmetros no cliente), e a alternativa A descreve a função do skeleton (traduzir os dados recebidos em chamada local no servidor). O candidato que memoriza apenas "stub faz marshaling" pode marcar C, mas o enunciado pede especificamente o papel do skeleton — que está no servidor. Lembre-se: cliente serializa, servidor deserializa e chama o procedimento local.

Componente

Lado

Função principal

Stub do cliente

Cliente

Serializar/empacotar parâmetros (marshaling) e enviar pela rede

Skeleton (stub do servidor)

Servidor

Receber a mensagem, desempacotar (unmarshaling) e converter em chamada local

  1. 1Cliente chama stub
  2. 2Stub empacota (marshaling)
  3. 3SO envia pela rede
  4. 4SO entrega ao skeleton
  5. 5Skeleton desempacota
  6. 6Chama procedimento local
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

O skeleton (stub do servidor) é o componente que, no lado do servidor, recebe a mensagem com os parâmetros da chamada remota, desempacota esses dados (faz o unmarshaling) e os converte em uma chamada de procedimento local, invocando a função real do servidor. É exatamente o que a alternativa descreve: "traduzir dados recebidos da chamada remota, convertendo esses dados em uma chamada de procedimento local no servidor".

Alternativa B — ❌ Incorreta

Abrir uma conexão TCP com o servidor é uma função da camada de transporte/rede, não do skeleton. O skeleton atua acima dessa camada: ele recebe a mensagem já entregue pelo sistema operacional (que cuidou do transporte) e a converte em chamada local. A conexão TCP, quando usada, é estabelecida pelo sistema operacional ou pela infraestrutura de comunicação, não pelo skeleton.

Alternativa C — ❌ Incorreta

Serializar os parâmetros da chamada remota no cliente é função do stub do cliente, não do skeleton. O marshaling (empacotamento) é feito no lado do cliente, antes do envio pela rede. O skeleton, no servidor, faz o processo inverso: desempacota (unmarshaling) os dados recebidos.

Alternativa D — ❌ Incorreta

Fornecer uma lista de servidores ativos é uma função de serviços de diretório ou de balanceamento de carga, não do skeleton. O skeleton é específico de um procedimento remoto: ele representa aquele procedimento no servidor e não tem qualquer papel em descoberta de servidores ou seleção de destino.

Alternativa E — ❌ Incorreta

Oferecer mecanismo de persistência abstrata é uma função de camadas de acesso a dados ou de middleware de persistência (como ORMs), não do skeleton. O skeleton apenas faz a ponte entre a mensagem recebida e a chamada local do procedimento; a persistência, se houver, é responsabilidade do próprio procedimento servidor ou de outras camadas da aplicação.

Gabarito: letra A

Link permanente: /questoes/vu196462