En este trabajo estudiaremos dos mecanismos alternativos que tienen como objetivo común la utilización de los servicios de transporte, esta vez, por parte de usuarios que están acostumbrados a un entorno de procesamiento de datos, es decir, a procesos, funciones, etc.
Aprovecharemos también para presentar un paradigma que recibe habitualmente el nombre de cliente-servidor. A partir de él analizaremos un conjunto de funciones de biblioteca que permiten un acceso directo a los servicios de transporte, en un caso, y un acceso totalmente transparente, en el segundo caso. El trabajo está basado en dos productos estándares de facto conocidos bajo las denominaciones TCP/IP y NFS, este último desarrollado por la compañía SUN MicroSystems Inc.
El modelo cliente-servidor
En general asumimos tácitamente que los dos procesos que se comunican sobre una conexión de transporte son simétricos. En la práctica, esta suposición frecuentemente no se cumple. Un ejemplo común es una red de computadoras personales sin disco o estaciones de trabajo, llamadas clientes (clients), que se comunican mediante una red con un servidor de archivos (file server), el que cuenta con un disco donde se almacenan todos los datos de usuario. En este sistema, los clientes acceden a sus datos enviando solicitudes (requests) al servidor, que lleva a cabo el trabajo y envía de regreso las respuestas (replies). La comunicación toma entonces la forma de un par solicitudrespuesta, siempre iniciada por los clientes y nunca por un servidor. Este modelo se conoce con el nombre de modelo cliente-servidor (client-server) y resulta de suma utilidad en el desarrollo de aplicaciones.
Se puede definir a la arquitectura cliente/servidor como:
Un modelo para el desarrollo de sistemas de información en el que las transacciones se dividen en procesos independientes que cooperan entre sí para intercambiar información, servicios o recursos. Se denomina cliente al proceso que inicia el diálogo o solicita los recursos y servidor al proceso que responde a las solicitudes.
En definitiva se trata de un modelo asimétrico de interacción entre procesos que refleja la naturaleza de muchos patrones de comunicación en los que un servidor es un proceso que está en condiciones de ofrecer un servicio alcanzable a través de la red y un cliente es un proceso que necesita un servicio, pide por él y espera una respuesta. Los servidores y clientes corren asincrónicamente y únicamente sincronizan cuando se comunican.
En particular, podemos clasificar a los procesos servidores según la forma en que se atienden los pedidos provenientes de clientes; tenemos un servidor interactivo cuando procesa las solicitudes de servicio en forma secuencial mientras que tenemos un servidor concurrente cuando se genera un nuevo proceso para atender a los clientes y el original queda nuevamente a la espera de nuevas solicitudes de servicio.
Entre las principales características de la arquitectura cliente/servidor se pueden destacar las siguientes:
- El servidor presenta a todos sus clientes una interfaz única y bien definida.
- El cliente no necesita conocer la lógica del servidor, sólo su interfaz externa.
- El cliente no depende de la ubicación física del servidor, ni del tipo de equipo físico en el que se encuentra, ni de su sistema operativo.
- Los cambios en el servidor implican pocos o ningún cambio en el cliente.