Modelo cliente-servidor


El modelo cliente-servidor es una estructura de aplicación distribuida que divide tareas o cargas de trabajo entre los proveedores de un recurso o servicio, denominados servidores , y los solicitantes del servicio, denominados clientes . [1] A menudo, los clientes y los servidores se comunican a través de una red informática en hardware independiente, pero tanto el cliente como el servidor pueden residir en el mismo sistema. Un anfitrión del servidor ejecuta uno o más programas de servidor, que comparten sus recursos con los clientes. Un cliente normalmente no comparte ninguno de sus recursos, pero solicita contenido o servicio de un servidor. Los clientes, por lo tanto, inician sesiones de comunicación con los servidores, que esperan las solicitudes entrantes. Ejemplos de aplicaciones informáticas que utilizan el modelo cliente-servidor son el correo electrónico , la impresión en red y la World Wide Web .

La característica "cliente-servidor" describe la relación de los programas que cooperan en una aplicación. El componente de servidor proporciona una función o servicio a uno o varios clientes, que inician solicitudes de dichos servicios. Los servidores se clasifican según los servicios que prestan. Por ejemplo, un servidor web sirve páginas web y un servidor de archivos sirve archivos de computadora . Un recurso compartido puede ser cualquier software y componentes electrónicos de la computadora del servidor, desde programas y datos hasta procesadores y dispositivos de almacenamiento . La compartición de recursos de un servidor constituye un servicio .

Si una computadora es un cliente, un servidor o ambos, está determinado por la naturaleza de la aplicación que requiere las funciones de servicio. Por ejemplo, una sola computadora puede ejecutar un servidor web y un software de servidor de archivos al mismo tiempo para brindar diferentes datos a los clientes que realizan diferentes tipos de solicitudes. El software del cliente también puede comunicarse con el software del servidor dentro de la misma computadora. [2] La comunicación entre servidores, como la sincronización de datos, a veces se denomina comunicación entre servidores o de servidor a servidor .

En general, un servicio es una abstracción de los recursos informáticos y un cliente no tiene que preocuparse por el rendimiento del servidor al cumplir con la solicitud y entregar la respuesta. El cliente solo tiene que entender la respuesta basada en el conocido protocolo de aplicación, es decir, el contenido y el formato de los datos para el servicio solicitado.

Los clientes y servidores intercambian mensajes en un patrón de mensajería de solicitud-respuesta . El cliente envía una solicitud y el servidor devuelve una respuesta. Este intercambio de mensajes es un ejemplo de comunicación entre procesos . Para comunicarse, las computadoras deben tener un lenguaje común y deben seguir reglas para que tanto el cliente como el servidor sepan qué esperar. El lenguaje y las reglas de comunicación se definen en un protocolo de comunicaciones . Todos los protocolos operan en la capa de aplicación . El protocolo de la capa de aplicación define los patrones básicos del diálogo. Para formalizar aún más el intercambio de datos, el servidor puede implementar una interfaz de programación de aplicaciones (API). [3]La API es una capa de abstracción para acceder a un servicio. Al restringir la comunicación a un formato de contenido específico , facilita el análisis . Al abstraer el acceso, facilita el intercambio de datos entre plataformas. [4]

Un servidor puede recibir solicitudes de muchos clientes distintos en un período corto. Una computadora solo puede realizar una cantidad limitada de tareas en cualquier momento y depende de un sistema de programación para priorizar las solicitudes entrantes de los clientes para acomodarlas. Para evitar abusos y maximizar la disponibilidad , el software del servidor puede limitar la disponibilidad para los clientes. Los ataques de denegación de servicio están diseñados para explotar la obligación de un servidor de procesar solicitudes al sobrecargarlo con tasas de solicitud excesivas. Se debe aplicar el cifrado si se va a comunicar información confidencial entre el cliente y el servidor.


Un diagrama de red informática de clientes que se comunican con un servidor a través de Internet