El protocolo o entorno cliente-servidor designa un modo de transacción (a menudo a través de una red ) entre varios programas o procesos : uno, conocido como cliente , envía solicitudes; el otro, denominado servidor , espera y responde a las solicitudes de los clientes. El servidor aquí ofrece un servicio al cliente. Por extensión, el cliente a menudo se refiere a la computadora en la que se ejecuta el software del cliente y el servidor, la computadora en la que se ejecuta el software del servidor. Las máquinas servidor suelen tener más capacidad que las computadoras personales en cuanto a potencia de cómputo , entrada-salida y conexiones de red , de modo que pueden responder eficazmente a un gran número de clientes. Los clientes suelen ser ordenadores personales o terminales individuales (teléfono, tableta), pero no siempre. Un servidor puede responder a las solicitudes de varios clientes. A veces, el cliente y el servidor pueden estar en la misma máquina.
Existe una amplia variedad de servidores y clientes en función de las necesidades o servicios a proporcionar: un servidor web publica las páginas web solicitadas por los navegadores web ; un servidor de correo electrónico transmite correos electrónicos a los clientes de correo electrónico ; un servidor de archivos permite compartir archivos en red con las máquinas que lo solicitan; un servidor de base de datos permite a los clientes recuperar datos almacenados en una base de datos , etc.
Por supuesto, el cliente y el servidor deben utilizar el mismo protocolo de comunicación en la capa de transporte del modelo OSI. A menudo hablamos de un servicio para designar la funcionalidad que ofrece un proceso de servidor. Atención, aunque a menudo se confunden, los conceptos de programa o proceso cliente y programa o proceso servidor son, sin embargo, diferentes de los de máquina. De hecho, una sola computadora puede ejecutar tanto un programa servidor como un programa cliente. Esta configuración se usa más con fines de prueba, o es bastante común en el mundo de Linux .
Características de un programa de servidor :
Características de un programa de cliente :
Características de su protocolo de intercambio:
La organización de un entorno cliente-servidor difiere según el tipo de arquitectura de red y el tipo de cliente .
Una arquitectura peer-to-peer ( peer-to-peer o P2P en inglés) es un entorno cliente-servidor en el que es probable que cada programa conectado desempeñe a su vez el papel de cliente y el de servidor. El programa es un cliente cuando solicita y recupera datos, y se convierte en servidor cuando proporciona datos.
Arquitectura de dos nivelesBásicamente, la relación entre un cliente y un servidor es entre dos procesos, dos software o dos máquinas. Se puede hablar de una arquitectura de dos niveles o una arquitectura de dos niveles ( arquitectura de dos niveles en inglés). En este caso, el cliente solicita un recurso al servidor que lo suministra directamente de sus propios recursos, sin solicitar otras máquinas.
Una arquitectura de tres niveles o una arquitectura de tres niveles ( arquitectura de tres niveles en inglés) agrega un nivel para especializar servidores, lo que proporciona una ventaja de flexibilidad, seguridad y rendimiento:
Cabe señalar que el servidor de aplicaciones es aquí un cliente del servidor de datos.
Arquitectura de nivel NUna arquitectura de nivel N o una arquitectura de tercer nivel N ( arquitectura de N niveles en inglés) se agregará a la arquitectura de 3 niveles, pero introdujo la noción de objeto que brinda la capacidad de distribuir servicios en 3 niveles según N capas, lo que lo hace posible. para especializar más finamente a los servidores.
Los clientes de aplicaciones son software que se ejecutan en las máquinas o terminales de los usuarios. Es posible distinguir 3 tipos principales.
Cliente ligeroUn cliente ligero es una aplicación en la que se procesan las solicitudes de los clientes (por lo general, un navegador web, con páginas web que utilizan poco o ningún JavaScript del lado del cliente, terminales de servicios de terminal , Secure Shell , Apple Remote Desktop , Citrix XenApp , TeamViewer , etc.) se realiza íntegramente por el servidor, el cliente está contento de recibir y formatear para mostrar las respuestas calculadas y enviadas por el servidor. Algunas ventajas:
Un cliente pesado es una aplicación (aplicaciones de escritorio, aplicaciones móviles) donde las operaciones de procesamiento se llevan a cabo principalmente en la máquina local conocida como cliente. El servidor se contenta principalmente con responder a las solicitudes de datos del cliente.
Algunas ventajas:
Un cliente enriquecido es una aplicación en la que el procesamiento de las solicitudes del cliente (aplicaciones web que utilizan mucho JavaScript del lado del cliente) lo realiza principalmente el servidor, y el cliente recibe respuestas "semiacabadas" y las finaliza. Es un cliente ligero más avanzado que permite implementar funcionalidades comparables a las de un cliente pesado. Es un compromiso entre clientes delgados y pesados.
Antes de que apareciera el entorno cliente-servidor, las redes informáticas se configuraban alrededor de una computadora central ( mainframe en inglés) a la que se conectaban terminales pasivos (pantalla adherida a un teclado sin unidad central y sin realizar ningún procesamiento). A continuación, todos los usuarios se conectaron a la misma unidad central.