한국   대만   중국   일본 
Cliente-servidor - Wikipedia, la enciclopedia libre Ir al contenido

Cliente-servidor

De Wikipedia, la enciclopedia libre
(Redirigido desde ≪ Arquitectura cliente-servidor ≫)
Un diagrama cliente-servidor via Internet .

La arquitectura cliente-servidor es un modelo de diseno de software en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores , y los demandantes, llamados clientes . Un cliente realiza peticiones a otro programa, el servidor , quien le da respuesta. Esta idea tambien se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es mas ventajosa en un sistema operativo multiusuario distribuido a traves de una red de computadoras . Ejemplos algunos de aplicaciones que usen el modelo cliente/servidor son el Correo electronico , un Servidor de impresion y la World Wide Web .

En esta arquitectura la capacidad de proceso esta repartida entre los clientes y los servidores, aunque son mas importantes las ventajas de tipo organizativo debidas a la centralizacion de la gestion de la informacion y la separacion de responsabilidades, lo que facilita y clarifica el diseno del sistema.

La separacion entre cliente y servidor es una separacion de tipo logico, donde el servidor no se ejecuta necesariamente sobre una sola maquina ni es necesariamente un solo programa. Los tipos especificos de servidores incluyen los servidores web , los servidores de archivo, los servidores del correo, etc. Mientras que sus propositos varian de unos servicios a otros, la arquitectura basica seguira siendo la misma.

Una disposicion muy comun son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando asi el grado de distribucion del sistema.

La red cliente-servidor es una red de comunicaciones en la cual los clientes estan conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposicion de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en el se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso publico y los que son de uso restringido, los archivos que son de solo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se este utilizando en una red mixta.

Caracteristicas [ editar ]

En la arquitectura C/S el remitente de una solicitud es conocido como cliente . Sus caracteristicas son:

  • Es quien inicia solicitudes o peticiones, tiene por tanto un papel activo en la comunicacion (dispositivo maestro o amo ).
  • Espera y recibe las respuestas del servidor.
  • Por lo general, puede conectarse a varios servidores a la vez.
  • Normalmente interactua directamente con los usuarios finales mediante una interfaz grafica de usuario .

Al receptor de la solicitud enviada por el cliente se le conoce como servidor . Sus caracteristicas son:

  • Al iniciarse espera a que lleguen las solicitudes de los clientes, desempena entonces un papel pasivo en la comunicacion (dispositivo esclavo ).
  • Tras la recepcion de una solicitud, la procesa y luego envia la respuesta al cliente.
  • Por lo general, acepta las conexiones de un gran numero de clientes (en ciertos casos el numero maximo de peticiones puede estar limitado).

En la arquitectura C/S las caracteristicas generales son:

  • El Cliente y el Servidor pueden actuar como una sola entidad y tambien pueden actuar como entidades separadas, realizando actividades o tareas independientes.
  • Las funciones de Cliente y Servidor pueden estar en plataformas separadas, o en la misma plataforma.
  • Cada plataforma puede ser escalable independientemente. Los cambios realizados en las plataformas de los Clientes o de los Servidores, ya sean por actualizacion o por reemplazo tecnologico, se realizan de una manera transparente para el usuario final.
  • La interrelacion entre el hardware y el software esta basada en una infraestructura poderosa, de tal forma que el acceso a los recursos de la red no muestra la complejidad de los diferentes tipos de formatos de datos y de los protocolos.
  • Su representacion tipica es un centro de trabajo (PC), en donde el usuario dispone de sus propias aplicaciones de oficina y sus propias bases de datos, sin dependencia directa del sistema central de informacion de la organizacion.

Los servidores pueden ser apatridas o stateful . Un servidor apatrida no guarda ninguna informacion entre las peticiones. Un servidor statefu l puede recordar la informacion entre las peticiones. El alcance de esta informacion puede ser global o sesion-especifico. Un servidor de HTTP para las paginas estaticas HTML es un ejemplo de un servidor apatrida, mientras que Apache Tomcat es un ejemplo de servidor stateful .

La interaccion entre el cliente y el servidor se describe a menudo usando diagramas de secuencia. Los diagramas de secuencia se estandarizan en el UML . Es importante que los clientes no interactuen entre si ni que lo hagan clientes de capas bajas hacia otros de capas mas altas, por eso todo tiene que pasar por el servidor.


Otro tipo de arquitectura de red se conoce como arquitectura de par-a-par porque cada nodo o caso del programa es un “ cliente ” y un “ servidor ” y cada uno tiene responsabilidades equivalentes. Ambas arquitecturas estan en uso amplio.

Comparacion de la arquitectura C/S con otras arquitecturas de red [ editar ]

Comparacion con las redes de pares [ editar ]

Las redes de pares , tambien conocidas como redes par-a-par o peer - to - peer (abreviado con las siglas P2P ) son otro tipo de arquitectura de red.

Comparacion con la arquitectura Cliente-Cola-Cliente [ editar ]

Si bien la clasica arquitectura C/S requiere uno de los puntos terminales de comunicacion para actuar como un servidor , que puede ser algo mas dificil de aplicar, la arquitectura Cliente-Cola-Cliente habilita a todos los nodos para actuar como clientes simples, mientras que el servidor actua como una cola que va capturando las peticiones de los clientes (un proceso que debe pasar sus peticiones a otro, lo hace a traves de una cola, por ejemplo, una consulta a una base de datos, entonces, el segundo proceso conecta con la base de datos, elabora la peticion, la pasa a la base de datos, etc.). Esta arquitectura permite simplificar en gran medida la implementacion de software. La arquitectura P2P originalmente se baso en el concepto "Cliente-Cola-Cliente".

Arquitecturas multi-capas [ editar ]

La arquitectura cliente/servidor generica tiene dos tipos de nodos en la red: clientes y servidores . Consecuentemente, estas arquitecturas genericas se refieren a veces como arquitecturas de dos niveles o dos capas .

Algunas redes disponen de tres tipos de nodos:

  • Clientes que interactuan con los usuarios finales.
  • Servidores de aplicacion que procesan los datos para los clientes.
  • Servidores de la base de datos que almacenan los datos para los servidores de aplicacion.

Esta configuracion se llama una arquitectura de tres-capas.

  • Ventajas de las arquitecturas n-capas:
La ventaja fundamental de una arquitectura n-capas comparado con una arquitectura de dos niveles (o una tres-capas con una de dos niveles) es que separa hacia fuera el proceso, eso ocurre para mejorar el balance de la carga en los diversos servidores; es mas escalable.
  • Desventajas de las arquitecturas de la n-capas:
  • Pone mas carga en la red, debido a una mayor cantidad de trafico de red.
  • Es mucho mas dificil programar y probar el software que en arquitectura de dos niveles porque tienen que comunicarse mas dispositivos para terminar la transaccion de un usuario.

Ventajas [ editar ]

  • Centralizacion del control: los accesos, recursos y la integridad de los datos son controlados por el servidor de forma que un programa cliente defectuoso o no autorizado no pueda danar el sistema. Esta centralizacion tambien facilita la tarea de poner al dia datos u otros recursos (mejor que en las redes P2P ).
  • Escalabilidad : se puede aumentar la capacidad de clientes y servidores por separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier momento, o se pueden anadir nuevos nodos a la red (clientes y/o servidores).
  • Facil mantenimiento: al estar distribuidas las funciones y responsabilidades entre varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor, mientras que sus clientes no se veran afectados por ese cambio (o se afectaran minimamente). Esta independencia de los cambios tambien se conoce como encapsulacion .
  • Existen tecnologias suficientemente desarrolladas, disenadas para el paradigma de C/S que aseguran la seguridad en las transacciones , la amigabilidad de la interfaz , y la facilidad de empleo.
  • En las redes C/S los demas clientes no tienen acceso a las IP's por lo que se dificulta el rastreo y/o hackeo de los usuarios.

Desventajas [ editar ]

  • La congestion del trafico ha sido siempre un problema en el paradigma de C/S. Cuando una gran cantidad de clientes envia peticiones simultaneas al mismo servidor, este debe gestionarlas y por ello puede verse saturado (a mayor numero de clientes, mas problemas para el servidor). Al contrario, en las redes P2P como cada nodo en la red hace tambien de servidor, cuanto mas nodos hay, mejor es el ancho de banda que se tiene.
  • El paradigma de C/S clasico no tiene la robustez de una red P2P. Cuando un servidor esta caido , las peticiones de los clientes no pueden ser satisfechas. En la mayor parte de redes P2P, los recursos estan generalmente distribuidos en varios nodos de la red. Aunque algunos salgan o abandonen la descarga; otros pueden todavia acabar de descargar consiguiendo datos del resto de los nodos en la red.
  • El software y el hardware de un servidor son generalmente muy determinantes. Un hardware regular de un ordenador personal puede no poder servir a cierta cantidad de clientes. Normalmente se necesita software y hardware especifico, sobre todo en el lado del servidor, para satisfacer el trabajo. Por supuesto, esto aumentara el coste.
  • El cliente no dispone de los recursos que puedan existir en el servidor. Por ejemplo, si es una aplicacion web , no podremos escribir en el disco duro del cliente o imprimir directamente sobre las impresoras sin sacar antes la ventana previa de impresion de los navegadores.
  • En las redes C/S la unica forma de obtener la informacion es a traves de la que proporciona el servidor, con lo cual los clientes no podran compartir informacion entre ellos.

Direccion [ editar ]

Los metodos de direccion en ambientes del servidor de cliente se pueden describir como sigue:

  • Direccion del proceso de la maquina: La direccion se divide como proceso maquina. Por lo tanto indicaria el proceso en la Computadora electronica computadora.
  • Servidor de nombres: Los servidores de nombres tienen un indice de todos los nombres y direcciones de servidores en el dominio relevante.
  • Localizacion de Paquetes: Los mensajes de difusion se envian a todas las computadoras en el sistema distribuido para determinar la direccion de la computadora destino.
  • Comerciante: Un comerciante es un sistema que pone en un indice todos los servicios disponibles en un sistema distribuido. Una computadora que requiere un servicio particular, comprobara con el servicio que negocia para saber si existe la direccion de una computadora que proporcione tal servicio.

Ejemplos [ editar ]

La mayoria de los servicios de Internet son del tipo cliente-servidor. La accion de visitar un sitio web requiere una arquitectura cliente-servidor, ya que el servidor web sirve las paginas web al navegador (al cliente). La computadora y el navegador web del usuario serian considerados un cliente; y las computadoras, las bases de datos , y los usos que componen Wikipedia serian considerados el servidor . Cuando el navegador web del usuario solicita un articulo particular de Wikipedia , el servidor de Wikipedia recopila toda la informacion a mostrar en la base de datos de Wikipedia , la articula en una pagina web , y la envia de nuevo al navegador web del cliente.

Otro ejemplo podria ser el funcionamiento de un juego en linea . Si existen dos servidores de juego, cuando un usuario lo descarga y lo instala en su computadora pasa a ser un cliente. Si tres personas juegan en un solo computador existirian dos servidores, un cliente y tres usuarios. Si cada usuario instala el juego en su propio ordenador existirian dos servidores, tres clientes y tres usuarios.

Cooperacion cliente--servidor [ editar ]

Multiple Server [ editar ]

Para que un proceso se realice de la mejor manera, es preferible utilizar terminales distintos realizando la misma tarea, a centralizar los recursos y que con mas hardware / software se realice la misma tarea. Con la ejecucion de multiples servidores el procesamiento es mas rapido, el tiempo de respuesta es descentralizado y se incrementa la confiabilidad.

Cooperacion de procesos paralelos [ editar ]

El mismo proceso se ejecuta simultaneamente ( sistemas redundantes ).

Cooperacion de base de datos [ editar ]

Si se requiere de cierta informacion ya existente, por que crearla de nuevo, simplemente interactua y aprovecha la informacion ya creada.

Componentes basicos del modelo Cliente-Servidor [ editar ]

En esta aproximacion, y con el objetivo de definir y delimitar el modelo de referencia de una arquitectura Cliente/Servidor, se identifican cinco componentes que permitan articular dicha arquitectura, considerando que toda aplicacion de un sistema de informacion esta caracterizada por lo siguiente:

  • Presentacion/Captacion de la informacion.
  • Procesos.
  • Almacenamiento de la informacion.
  • Puestos de trabajo
  • Comunicaciones.

Vease tambien [ editar ]