Modelo cliente-servidor (arquitectura cliente-servidor)
El cliente-servidor es una relación en la que un programa (el cliente) solicita un servicio o recurso a otro programa (el servidor). A principios del siglo pasado, la etiqueta cliente-servidor se utilizaba para distinguir la informática distribuida por los ordenadores personales (PC) del modelo informático monolítico y centralizado que utilizaban los mainframes.
Hoy en día, las transacciones informáticas en las que el servidor satisface una petición realizada por un cliente son muy comunes y el modelo cliente-servidor se ha convertido en una de las ideas centrales de la computación en red. En este contexto, el cliente establece una conexión con el servidor a través de una red de área local (LAN) o una red de área amplia (WAN), como Internet. Una vez que el servidor ha satisfecho la petición del cliente, la conexión se termina. Dado que varios programas cliente comparten los servicios del mismo programa servidor, puede activarse un servidor especial llamado demonio sólo para esperar las peticiones de los clientes.
En los primeros días de Internet, la mayor parte del tráfico de red se producía entre los clientes remotos que solicitaban contenidos web y los servidores de los centros de datos que los proporcionaban. Este patrón de tráfico se conoce como tráfico norte-sur. Hoy en día, con la madurez de la virtualización y la computación en la nube, es más probable que el tráfico de red sea de servidor a servidor, un patrón conocido como tráfico este-oeste. Esto, a su vez, ha cambiado el enfoque de los administradores de un modelo de seguridad centralizado diseñado para proteger el perímetro de la red a un modelo de seguridad descentralizado que se centra más en el control del acceso de los usuarios individuales a los servicios y los datos, y en la auditoría de su comportamiento para garantizar el cumplimiento de las políticas y las normativas.
Ventajas y desventajas del modelo cliente-servidor
Una ventaja importante del modelo cliente-servidor es que su arquitectura centralizada ayuda a que sea más fácil proteger los datos con controles de acceso que se aplican mediante políticas de seguridad. Además, no importa si los clientes y el servidor están construidos en el mismo sistema operativo porque los datos se transfieren a través de protocolos cliente-servidor que son agnósticos de la plataforma.
Una desventaja importante del modelo cliente-servidor es que si demasiados clientes solicitan simultáneamente datos del servidor, éste puede sobrecargarse. Además de provocar la congestión de la red, un número excesivo de solicitudes puede provocar una denegación de servicio.
Protocolos cliente-servidor
Los clientes suelen comunicarse con los servidores utilizando el conjunto de protocolos TCP/IP. TCP es un protocolo orientado a la conexión, lo que significa que una conexión se establece y se mantiene hasta que los programas de aplicación en cada extremo han terminado de intercambiar mensajes. Determina cómo dividir los datos de la aplicación en paquetes que las redes puedan entregar, envía paquetes a la capa de red y los acepta, gestiona el control de flujo y se encarga de la retransmisión de paquetes perdidos o confusos, así como del acuse de recibo de todos los paquetes que llegan. En el modelo de comunicación de la Interconexión de Sistemas Abiertos (OSI), TCP cubre partes de la capa 4, la capa de transporte, y partes de la capa 5, la capa de sesión.
En cambio, IP es un protocolo sin conexión, lo que significa que no hay una conexión continua entre los puntos finales que se están comunicando. Cada paquete que viaja a través de Internet se trata como una unidad de datos independiente sin ninguna relación con ninguna otra unidad de datos. (La razón por la que los paquetes se colocan en el orden correcto es gracias a TCP). En el modelo de comunicación de Interconexión de Sistemas Abiertos (OSI), IP está en la capa 3, la capa de red.
Otros modelos de relación de programas
Otros modelos de relación de programas incluyen maestro/esclavo y peer-to-peer (P2P). En el modelo P2P, cada nodo de la red puede funcionar como servidor y como cliente. En el modelo maestro/esclavo, un dispositivo o proceso (conocido como maestro) controla uno o más dispositivos o procesos (conocidos como esclavos). Una vez establecida la relación maestro/esclavo, la dirección del control es siempre unidireccional, del maestro al esclavo.