DCN - Modelo Cliente Servidor
Dois processos de aplicativos remotos podem se comunicar principalmente de duas formas diferentes:
Peer-to-peer: Ambos os processos remotos estão executando no mesmo nível e trocam dados usando algum recurso compartilhado.
Client-Server: Um processo remoto atua como Cliente e solicita algum recurso de outro processo de aplicativo que atua como Servidor.
No modelo cliente-servidor, qualquer processo pode atuar como Servidor ou Cliente. Não é o tipo de máquina, tamanho da máquina ou seu poder de computação que a torna um servidor; é a capacidade de atender a solicitação que torna uma máquina um servidor.
Um sistema pode atuar como Servidor e Cliente simultaneamente. Ou seja, um processo está atuando como Servidor e outro como cliente. Isso também pode acontecer que os processos do cliente e do servidor residam na mesma máquina.
Comunicação
Dois processos no modelo cliente-servidor podem interagir de várias maneiras:
Sockets
Chamadas de procedimento remoto (RPC)
tomadas
Nesse paradigma, o processo que atua como Servidor abre um soquete usando uma porta bem conhecida (ou conhecida pelo cliente) e espera até que chegue algum pedido do cliente. O segundo processo atuando como um cliente também abre um soquete, mas em vez de esperar por uma solicitação de entrada, o cliente processa as 'solicitações primeiro'.
Quando a solicitação é alcançada para o servidor, ela é atendida. Pode ser um compartilhamento de informações ou solicitação de recursos.
Chamada de procedimento remoto
Este é um mecanismo onde um processo interage com outro por meio de chamadas de procedimento. Um processo (cliente) chama o procedimento localizado no host remoto. O processo no host remoto é chamado de Servidor. Ambos os processos são stubs alocados. Essa comunicação acontece da seguinte forma:
O processo do cliente chama o stub do cliente. Ele passa todos os parâmetros relativos ao programa local para ele.
Todos os parâmetros são então empacotados (empacotados) e uma chamada de sistema é feita para enviá-los para o outro lado da rede.
O kernel envia os dados pela rede e a outra extremidade os recebe.
O host remoto passa dados para o stub do servidor, onde são desempacotados.
Os parâmetros são passados para o procedimento e o procedimento é executado.
O resultado é enviado de volta ao cliente da mesma maneira.