Articulo de referencia

Modelo cliente-servidor

Diagrama de red informática de clientes que se comunican con un servidor a través de Internet. El modelo cliente-servidor es un patrón de mensajería en una estructura de aplicac...

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

El modelo cliente-servidor es un patrón de mensajería en una estructura de aplicación distribuida que divide las tareas o cargas de trabajo entre los proveedores de un recurso o servicio, llamados servidores , y los solicitantes de servicio, llamados clientes . [ 1 ] A menudo, los clientes y los servidores se comunican a través de una red informática en hardware separado, pero ambos pueden estar en el mismo dispositivo. Un servidor ejecuta uno o más programas de servidor, que comparten sus recursos con los clientes. Un cliente generalmente no comparte sus recursos informáticos, pero solicita contenido o servicio a un servidor y puede compartir su propio contenido como parte de la solicitud. Por lo tanto, los clientes 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.

Rol de cliente y servidor

El componente servidor proporciona una función o servicio a uno o varios clientes, quienes solicitan dichos servicios. Los servidores se clasifican según los servicios que ofrecen. Por ejemplo, un servidor web sirve páginas web y un servidor de archivos sirve archivos informáticos . Un recurso compartido puede ser cualquier componente electrónico o de software del servidor, desde programas y datos hasta procesadores y dispositivos de almacenamiento . El uso compartido de los recursos de un servidor constituye un servicio .

Que un ordenador sea cliente, servidor o ambos, viene determinado por la naturaleza de la aplicación que requiere las funciones del servicio. Por ejemplo, un solo ordenador puede ejecutar simultáneamente un servidor web y un servidor de archivos para servir datos diferentes a clientes que realizan distintos tipos de solicitudes. El software cliente también puede comunicarse con el software servidor dentro del mismo ordenador. [ 2 ] La comunicación entre servidores, como la sincronización de datos, se denomina a veces comunicación entre servidores o de servidor a servidor .

Comunicación entre cliente y servidor

En general, un servicio es una abstracción de los recursos informáticos y el cliente no tiene que preocuparse por el rendimiento del servidor al procesar la solicitud y entregar la respuesta. El cliente solo necesita comprender la respuesta según el protocolo de aplicación correspondiente , es decir, el contenido y el formato de los datos del servicio solicitado.

Los clientes y servidores intercambian mensajes siguiendo un patrón 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, los ordenadores deben tener un lenguaje común y 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 comunicación . 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 sintáctico . Al abstraer el acceso, facilita el intercambio de datos entre plataformas. [ 4 ]

Un servidor puede recibir solicitudes de muchos clientes distintos en un corto período de tiempo. Un ordenador solo puede realizar un número limitado de tareas a la vez y depende de un sistema de planificación para priorizar las solicitudes entrantes de los clientes y así poder atenderlas. 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 del servidor de procesar solicitudes sobrecargándolo con un volumen excesivo de solicitudes. Se debe aplicar cifrado si se va a comunicar información confidencial entre el cliente y el servidor.

Ejemplo

Cuando un cliente bancario accede a los servicios de banca en línea mediante un navegador web (el cliente), este inicia una solicitud al servidor web del banco. Las credenciales de inicio de sesión del cliente se comparan con una base de datos , y el servidor web accede a dicha base de datos como si fuera un cliente. Un servidor de aplicaciones interpreta los datos recibidos aplicando la lógica de negocio del banco y proporciona el resultado al servidor web. Finalmente, el servidor web devuelve el resultado al navegador web del cliente para su visualización.

En cada paso de esta secuencia de intercambio de mensajes entre cliente y servidor, un ordenador procesa una solicitud y devuelve datos. Este es el patrón de mensajería de solicitud-respuesta. Cuando se satisfacen todas las solicitudes, la secuencia finaliza.

Este ejemplo ilustra un patrón de diseño aplicable al modelo cliente-servidor: la separación de responsabilidades .

Lado del servidor

El término "lado del servidor" se refiere a los programas y operaciones que se ejecutan en el servidor . Esto contrasta con los programas y operaciones del lado del cliente, que se ejecutan en el cliente .

Conceptos generales

El "software del lado del servidor" se refiere a una aplicación informática , como un servidor web , que se ejecuta en hardware de servidor remoto , accesible desde la computadora local , el teléfono inteligente u otro dispositivo del usuario . [ 5 ] Las operaciones pueden realizarse en el lado del servidor porque requieren acceso a información o funcionalidad que no está disponible en el cliente , o porque realizar dichas operaciones en el lado del cliente sería lento, poco confiable o inseguro .

Los programas cliente y servidor pueden ser de uso común, como servidores web y navegadores web gratuitos o comerciales , que se comunican entre sí mediante protocolos estandarizados . O bien, los programadores pueden escribir su propio servidor, cliente y protocolo de comunicación , que solo pueden utilizarse entre sí.

Las operaciones del lado del servidor incluyen tanto las que se realizan en respuesta a las solicitudes del cliente como las operaciones no orientadas al cliente, como las tareas de mantenimiento. [ 6 ] [ 7 ]

Seguridad informática

En el contexto de la seguridad informática , las vulnerabilidades o ataques del lado del servidor se refieren a aquellos que ocurren en un sistema informático servidor, en lugar de en el lado del cliente o en la zona intermedia entre ambos . Por ejemplo, un atacante podría explotar una vulnerabilidad de inyección SQL en una aplicación web para modificar maliciosamente o acceder sin autorización a los datos de la base de datos del servidor . Alternativamente, un atacante podría infiltrarse en un sistema servidor utilizando vulnerabilidades en el sistema operativo subyacente y, posteriormente, acceder a la base de datos y otros archivos de la misma manera que los administradores autorizados del servidor. [ 8 ] [ 9 ] [ 10 ]

Ejemplos

En el caso de proyectos de computación distribuida como SETI@home y Great Internet Mersenne Prime Search , si bien la mayor parte de las operaciones se realizan en el lado del cliente, los servidores se encargan de coordinar a los clientes, enviarles datos para analizar, recibir y almacenar resultados, proporcionar funcionalidades de generación de informes a los administradores del proyecto, etc. En el caso de una aplicación de usuario dependiente de Internet como Google Earth , si bien la consulta y visualización de datos de mapas se realiza en el lado del cliente, el servidor se encarga del almacenamiento permanente de los datos de mapas, de resolver las consultas de los usuarios y convertirlas en datos de mapas para devolverlos al cliente, etc.

Las aplicaciones y los servicios web pueden implementarse en casi cualquier lenguaje, siempre que puedan devolver datos a los navegadores web basados ​​en estándares (posiblemente a través de programas intermediarios) en formatos que estos puedan utilizar.

Lado del cliente

El lado del cliente se refiere a las operaciones que realiza el cliente en una red informática .

Conceptos generales

Por lo general, un cliente es una aplicación informática , como un navegador web , que se ejecuta en el ordenador , smartphone u otro dispositivo del usuario y se conecta a un servidor cuando es necesario. Las operaciones pueden realizarse en el lado del cliente porque requieren acceso a información o funcionalidades disponibles en el cliente pero no en el servidor, porque el usuario necesita observar las operaciones o introducir datos, o porque el servidor carece de la capacidad de procesamiento necesaria para realizar las operaciones de forma oportuna para todos los clientes a los que presta servicio. Además, si las operaciones pueden realizarse desde el cliente, sin enviar datos a través de la red, pueden tardar menos tiempo, consumir menos ancho de banda y presentar un menor riesgo de seguridad .

Cuando el servidor proporciona datos de forma habitual, por ejemplo, mediante protocolos estándar como HTTP o FTP , los usuarios pueden elegir entre varios programas cliente (por ejemplo, la mayoría de los navegadores web modernos pueden solicitar y recibir datos mediante HTTP y FTP). En el caso de aplicaciones más especializadas, los programadores pueden desarrollar su propio servidor, cliente y protocolo de comunicación , que solo pueden utilizarse entre sí.

Los programas que se ejecutan en el ordenador local del usuario sin enviar ni recibir datos a través de una red no se consideran clientes, por lo que las operaciones de dichos programas no se denominarían operaciones del lado del cliente.

Seguridad informática

En el contexto de la seguridad informática , las vulnerabilidades o ataques del lado del cliente se refieren a aquellos que ocurren en el sistema informático del cliente/usuario, en lugar de en el servidor o en la zona intermedia entre ambos . Por ejemplo, si un servidor contiene un archivo o mensaje cifrado que solo puede descifrarse mediante una clave almacenada en el sistema informático del usuario, un ataque del lado del cliente sería normalmente la única oportunidad para que un atacante acceda al contenido descifrado. Por ejemplo, el atacante podría instalar malware en el sistema del cliente, lo que le permitiría ver la pantalla del usuario, registrar sus pulsaciones de teclas y robar copias de sus claves de cifrado, etc. Alternativamente, un atacante podría aprovechar las vulnerabilidades de secuencias de comandos entre sitios (XSS) para ejecutar código malicioso en el sistema del cliente sin necesidad de instalar ningún malware residente permanente. [ 8 ] [ 9 ] [ 10 ]

Ejemplos

Los proyectos de computación distribuida, como SETI@home y Great Internet Mersenne Prime Search, así como las aplicaciones que dependen de Internet, como Google Earth , se basan principalmente en operaciones del lado del cliente. Estos inician una conexión con el servidor (ya sea en respuesta a una consulta del usuario, como en Google Earth, o de forma automatizada, como en SETI@home) y solicitan datos. El servidor selecciona un conjunto de datos (una operación del lado del servidor ) y lo envía de vuelta al cliente. El cliente analiza los datos (una operación del lado del cliente) y, una vez finalizado el análisis, los muestra al usuario (como en Google Earth) o transmite los resultados de los cálculos al servidor (como en SETI@home).

Historia temprana

Una forma temprana de arquitectura cliente-servidor es la entrada remota de trabajos , que data al menos de OS/360 (anunciado en 1964), donde la solicitud era ejecutar un trabajo y la respuesta era el resultado.

Al formular el modelo cliente-servidor en las décadas de 1960 y 1970, los científicos informáticos que construían ARPANET (en el Instituto de Investigación de Stanford ) utilizaron los términos host-servidor (o host servidor ) y host-usuario (o host usuario ), y estos aparecen en los primeros documentos RFC 5 [ 11 ] y RFC 4. [ 12 ] Este uso continuó en Xerox PARC a mediados de la década de 1970.

Un contexto en el que los investigadores utilizaron estos términos fue en el diseño de un lenguaje de programación de redes informáticas llamado Lenguaje de Decodificación-Codificación (DEL). [ 11 ] El propósito de este lenguaje era aceptar comandos de una computadora (el host de usuario), que devolvería informes de estado al usuario mientras codificaba los comandos en paquetes de red. Otra computadora con capacidad DEL, el host servidor, recibía los paquetes, los decodificaba y devolvía datos formateados al host de usuario. Un programa DEL en el host de usuario recibía los resultados para presentarlos al usuario. Esta es una transacción cliente-servidor. El desarrollo de DEL estaba comenzando en 1969, el año en que el Departamento de Defensa de los Estados Unidos estableció ARPANET (predecesor de Internet ).

Host del cliente y host del servidor

Los términos "cliente-host" y "servidor-host" tienen significados sutilmente diferentes a los de "cliente" y "servidor" . Un host es cualquier ordenador conectado a una red. Mientras que los términos " servidor " y " cliente " pueden referirse tanto a un ordenador como a un programa informático, "servidor-host" y "cliente-host" siempre se refieren a ordenadores. El host es un ordenador versátil y multifuncional; los clientes y servidores son simplemente programas que se ejecutan en un host. En el modelo cliente-servidor, es más probable que un servidor se dedique exclusivamente a la tarea de prestar servicios.

Un uso temprano de la palabra « cliente» aparece en «Separating Data from Function in a Distributed File System», un artículo de 1978 de los científicos informáticos de Xerox PARC, Howard Sturgis, James Mitchell y Jay Israel. Los autores se esmeran en definir el término para los lectores y explican que lo utilizan para distinguir entre el usuario y el nodo de red del usuario (el cliente). [ 13 ] Para 1992, la palabra «servidor» ya se había incorporado al lenguaje común. [ 14 ] [ 15 ]

Computación centralizada

El modelo cliente-servidor no exige que los servidores tengan más recursos que los clientes. Más bien, permite que cualquier computadora de propósito general extienda sus capacidades utilizando los recursos compartidos de otros hosts. La computación centralizada , sin embargo, asigna específicamente una gran cantidad de recursos a un número reducido de computadoras. Cuanto más se descarga la computación de los clientes a las computadoras centrales, más simples pueden ser los clientes. [ 16 ] Depende en gran medida de los recursos de red (servidores e infraestructura) para la computación y el almacenamiento. Un nodo sin disco carga incluso su sistema operativo desde la red, y una terminal de computadora no tiene sistema operativo; es solo una interfaz de entrada/salida al servidor. Por el contrario, un cliente enriquecido , como una computadora personal , tiene muchos recursos y no depende de un servidor para funciones esenciales.

A medida que los microordenadores disminuyeron de precio y aumentaron de potencia desde la década de 1980 hasta finales de la de 1990, muchas organizaciones transfirieron la computación de servidores centralizados, como mainframes y minicomputadoras , a clientes enriquecidos. [ 17 ] Esto permitió un mayor dominio individualizado sobre los recursos informáticos, pero complicó la gestión de la tecnología de la información . [ 16 ] [ 18 ] [ 19 ] Durante la década de 2000, las aplicaciones web maduraron lo suficiente como para rivalizar con el software de aplicación desarrollado para una microarquitectura específica . Esta maduración, el almacenamiento masivo más asequible y el advenimiento de la arquitectura orientada a servicios fueron algunos de los factores que dieron origen a la tendencia de la computación en la nube de la década de 2010. [ 20 ]

Comparación con la arquitectura peer-to-peer

Además del modelo cliente-servidor, las aplicaciones de computación distribuida suelen utilizar la arquitectura de aplicaciones peer-to-peer (P2P).

En el modelo cliente-servidor, el servidor suele diseñarse para funcionar como un sistema centralizado que atiende a muchos clientes. La potencia de cálculo, la memoria y los requisitos de almacenamiento del servidor deben ajustarse adecuadamente a la carga de trabajo prevista. Los sistemas de equilibrio de carga y conmutación por error se utilizan con frecuencia para escalar el servidor más allá de una única máquina física. [ 21 ] [ 22 ]

El balanceo de carga se define como la distribución metódica y eficiente del tráfico de red o de aplicaciones entre varios servidores en un clúster. Cada balanceador de carga se ubica entre los dispositivos cliente y los servidores backend, recibiendo y distribuyendo las solicitudes entrantes a cualquier servidor disponible capaz de procesarlas.

En una red peer-to-peer , dos o más computadoras ( pares ) agrupan sus recursos y se comunican en un sistema descentralizado . Los pares son nodos coequal o equipotentes en una red no jerárquica. A diferencia de los clientes en una red cliente-servidor o cliente-cola-cliente , los pares se comunican directamente entre sí. [ 23 ] En las redes peer-to-peer, un algoritmo en el protocolo de comunicaciones peer-to-peer equilibra la carga , e incluso los pares con recursos modestos pueden ayudar a compartirla. [ 24 ] Si un nodo deja de estar disponible, sus recursos compartidos permanecen disponibles siempre que otros pares los ofrezcan. Idealmente, un par no necesita alcanzar una alta disponibilidad porque otros pares redundantes compensan cualquier tiempo de inactividad de los recursos ; a medida que la disponibilidad y la capacidad de carga de los pares cambian, el protocolo redirige las solicitudes.

Tanto el modelo cliente-servidor como el maestro-esclavo se consideran subcategorías de sistemas distribuidos peer-to-peer. [ 25 ]

Véase también

Notas

  1. "Arquitectura de aplicaciones distribuidas" (PDF) . Sun Microsystems. Archivado del original (PDF) el 6 de abril de 2011. Consultado el 16 de junio de 2009 .
  2. El sistema X Window es un ejemplo.
  3. Benatallah, B.; Casati, F.; Toumani, F. (2004). "Modelado de conversaciones de servicios web: una piedra angular para la automatización del comercio electrónico". IEEE Internet Computing . 8 : 46–54 . doi : 10.1109/MIC.2004.1260703 . S2CID 8121624 . 
  4. ^ Dustdar, S.; Schreiner, W. (2005). "Una encuesta sobre la composición de los servicios web" (PDF) . Revista internacional de servicios web y grid . 1 : 1. CiteSeerX 10.1.1.139.4827 . doi : 10.1504/IJWGS.2005.007545 . 
  5. "¿Qué significan lado del cliente y lado del servidor? Lado del cliente vs. lado del servidor" . Cloudflare . Consultado el 17 de abril de 2025 .
  6. "Introducción al lado del servidor - Aprende desarrollo web | MDN" . developer.mozilla.org . 5 de noviembre de 2023. Consultado el 13 de noviembre de 2023 .
  7. "Programación de sitios web del lado del servidor - Aprende desarrollo web | MDN" . developer.mozilla.org . 30 de junio de 2023. Consultado el 13 de noviembre de 2023 .
  8. 1 2 Lehtinen, Rick; Russell, Deborah; Gangemi, GT (2006). Fundamentos de seguridad informática (2.ª ed.). O'Reilly Media . ISBN  9780596006693. Consultado el 07-07-2017 .
  9. 1 2 JS (15-10-2015). "Semana 4: ¿Existe alguna diferencia entre el lado del cliente y el lado del servidor?" . n3tweb.wordpress.com . Recuperado el 07-07-2017 .
  10. 1 2 Espinosa, Christian (23-04-2016). "Decodificando el hackeo" (PDF) . alpinesecurity.com . Recuperado el 07-07-2017 .
  11. 1 2 Rulifson, Jeff (junio de 1969). DEL . IETF . doi : 10.17487/RFC0005 . RFC 5 . Consultado el 30 de noviembre de 2013 .
  12. Shapiro, Elmer B. (marzo de 1969). Horario de la red . IETF . doi : 10.17487/RFC0004 . RFC 4. Consultado el 30 de noviembre de 2013 .
  13. Sturgis, Howard E.; Mitchell, James George; Israel, Jay E. (1978). "Separando datos de funciones en un sistema de archivos distribuido" . Xerox PARC .
  14. Harper, Douglas. "server" . Diccionario etimológico en línea . Consultado el 30 de noviembre de 2013 .
  15. "Separación de datos y funciones en un sistema de archivos distribuido" . GetInfo . Biblioteca Nacional Alemana de Ciencia y Tecnología . Archivado del original el 2 de diciembre de 2013. Consultado el 29 de noviembre de 2013 .
  16. 1 2 Nieh, Jason; Yang, S. Jae; Novik, Naomi (2000). "Una comparación de arquitecturas de computación de cliente ligero" . Academic Commons . doi : 10.7916/D8Z329VF . Recuperado el 28 de noviembre de 2018 .
  17. d'Amore, MJ; Oberst, DJ (1983). «Microcomputadoras y mainframes». Actas de la 11.ª conferencia anual ACM SIGUCCS sobre servicios al usuario - SIGUCCS '83 . p. 7. doi : 10.1145/800041.801417 . ISBN  978-0897911160. S2CID 14248076 . 
  18. Tolia, Niraj; Andersen, David G.; Satyanarayanan, M. (marzo de 2006). "Cuantificación de la experiencia interactiva del usuario en clientes ligeros" (PDF) . Computer . 39 (3). IEEE Computer Society : 46–52 . doi : 10.1109/mc.2006.101 . S2CID 8399655 . 
  19. Otey, Michael (22 de marzo de 2011). "¿Es la nube realmente solo el regreso de la computación en mainframes?" . SQL Server Pro . Penton Media . Archivado del original el 3 de diciembre de 2013 . Recuperado el 1 de diciembre de 2013 .
  20. Barros, AP; Dumas, M. (2006). "El auge de los ecosistemas de servicios web". IT Professional . 8 (5): 31. doi : 10.1109/MITP.2006.123 . S2CID 206469224 . 
  21. Cardellini, V.; Colajanni, M.; Yu, PS (1999). "Equilibrio de carga dinámico en sistemas de servidores web". IEEE Internet Computing . 3 (3). Instituto de Ingenieros Eléctricos y Electrónicos (IEEE): 28– 39. doi : 10.1109/4236.769420 . ISSN 1089-7801 . 
  22. "¿Qué es el balanceo de carga? Cómo funcionan los balanceadores de carga" . NGINX . 1 de junio de 2014. Consultado el 21 de enero de 2020 .
  23. Alharbi, A.; Aljaedi, A. (2004). "Problemas y análisis de seguridad en redes peer-to-peer: revisión". IJCSNS International Journal of Computer Science and Network Security . doi : 10.1007/978-3-540-45172-3_6 .
  24. Rao, A.; Lakshminarayanan, K.; Surana, S.; Manning Karp, R. (2020). "Equilibrio de carga en sistemas P2P estructurados". IJCSNS International Journal of Computer Science and Network Security . 20 : 74–88 .
  25. Varma, Vasudeva (2009). "1: Introducción a la arquitectura de software" . Arquitectura de software: Un enfoque basado en casos . Delhi: Pearson Education India. pág. 29. ISBN  9788131707494. Recuperado el 04-07-2017 . Sistemas distribuidos peer-to-peer [...] Este es un estilo genérico cuyos estilos populares son los estilos cliente-servidor y maestro-esclavo.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Client–server_model&oldid=1362519904#Server-side "