DCN - Modelo cliente-servidor

Dos procesos de aplicación remota pueden comunicarse principalmente de dos formas diferentes:

  • Peer-to-peer: Ambos procesos remotos se ejecutan al mismo nivel e intercambian datos utilizando algún recurso compartido.

  • Client-Server: Un proceso remoto actúa como Cliente y solicita algún recurso de otro proceso de aplicación que actúa como Servidor.

En el modelo cliente-servidor, cualquier proceso puede actuar como servidor o cliente. No es el tipo de máquina, el tamaño de la máquina o su potencia de cálculo lo que lo convierte en servidor; es la capacidad de atender solicitudes lo que convierte a una máquina en servidor.

Un sistema puede actuar como servidor y cliente simultáneamente. Es decir, un proceso actúa como servidor y otro como cliente. Esto también puede suceder que los procesos de cliente y servidor residan en la misma máquina.

Comunicación

Dos procesos en el modelo cliente-servidor pueden interactuar de varias formas:

  • Sockets

  • Llamadas a procedimiento remoto (RPC)

Enchufes

En este paradigma, el proceso que actúa como servidor abre un socket utilizando un puerto conocido (o conocido por el cliente) y espera hasta que llegue alguna solicitud del cliente. El segundo proceso que actúa como Cliente también abre un socket, pero en lugar de esperar una solicitud entrante, el cliente procesa 'solicitudes primero'.

Cuando se llega a la solicitud al servidor, se atiende. Puede ser un intercambio de información o una solicitud de recursos.

Llamada a procedimiento remoto

Este es un mecanismo en el que un proceso interactúa con otro mediante llamadas a procedimientos. Un proceso (cliente) llama al procedimiento que se encuentra en un host remoto. Se dice que el proceso en el host remoto es Server. Ambos procesos son stubs asignados. Esta comunicación ocurre de la siguiente manera:

  • El proceso del cliente llama al stub del cliente. Pasa todos los parámetros pertenecientes al programa local.

  • A continuación, todos los parámetros se empaquetan (ordenan) y se realiza una llamada al sistema para enviarlos al otro lado de la red.

  • Kernel envía los datos a través de la red y el otro extremo los recibe.

  • El host remoto pasa los datos al stub del servidor donde no se ordenan.

  • Los parámetros se pasan al procedimiento y luego se ejecuta el procedimiento.

  • El resultado se envía de vuelta al cliente de la misma manera.