El modelo cliente-servidor
El modelo cliente-servidor es una arquitectura de red en la que un programa (el cliente) solicita servicios o recursos a otro programa (el servidor), que los proporciona desde un sistema centralizado. Su propósito principal es precisamente ese: permitir que los clientes soliciten y reciban servicios de un sistema centralizado, es decir, que un programa solicite servicios o recursos de otro programa. Constituye una estructura de red en la que los clientes solicitan servicios a un servidor central.
La relación se establece habitualmente a través de una red de área local (LAN) o una red de área amplia (WAN), y la comunicación se apoya en protocolos independientes de la plataforma. Por eso los datos pueden transferirse entre clientes y servidores aunque estén basados en distintos sistemas operativos: la transferencia se realiza mediante protocolos cliente-servidor independientes de la plataforma, lo que aumenta la compatibilidad entre diferentes sistemas operativos.
Cliente (front-end) y servidor (back-end)
En esta arquitectura los términos tienen equivalencias fijas que conviene memorizar:
| Elemento | Sinónimo | Función |
|---|---|---|
| Cliente | front-end | Realiza las peticiones (p. ej., peticiones HTTP) y presenta la interfaz al usuario |
| Servidor | back-end | Atiende peticiones, procesa la lógica y accede a los datos |
Así, el término cliente se refiere al front-end, y front-end es sinónimo de cliente. La realización de peticiones HTTP pertenece al nivel cliente. El servidor suele materializarse mediante un daemon (en inglés daemon, a veces escrito "daemond"): un proceso en segundo plano que espera solicitudes de clientes y las atiende cuando llegan.
Ventajas: centralización y seguridad
Una de las grandes ventajas del modelo es la arquitectura centralizada, que es precisamente el aspecto que facilita la protección de datos y la implementación de políticas de seguridad: al concentrar los recursos en el servidor, resulta más sencillo aplicar controles, copias de seguridad y políticas homogéneas. No obstante, con el cambio en los patrones de tráfico de red, el enfoque actual en la administración de la seguridad tiende hacia un modelo de seguridad descentralizado centrado en controlar el acceso de usuarios individuales (filosofía próxima al zero trust).
Desventajas: sobrecarga y denegación de servicio
La principal desventaja del modelo cliente-servidor está ligada a la cantidad de solicitudes: el servidor puede sobrecargarse si hay demasiadas solicitudes simultáneas. Un alto número de solicitudes simultáneas puede provocar denegación de servicio, y la sobrecarga del servidor tiene como consecuencia congestión en la red y posibilidad de denegación de servicio (DoS). Este es el punto débil frente a arquitecturas más distribuidas.
Patrones de tráfico: norte-sur
El tráfico norte-sur (north-south) es el patrón en el que clientes remotos solicitan contenido web y los servidores de los centros de datos lo proporcionan; es decir, tráfico que entra y sale del centro de datos hacia los usuarios. Se contrapone al tráfico este-oeste (entre servidores dentro del propio centro de datos).
Sistemas distribuidos
Una característica esencial de los sistemas distribuidos es la escalabilidad: la capacidad computacional y de procesamiento puede escalarse hacia arriba según sea necesario cuando se añaden máquinas adicionales. Esto permite crecer horizontalmente sin rediseñar la aplicación.
La familia TCP/IP: TCP frente a IP
El modelo cliente-servidor se apoya en la pila TCP/IP. Los dos protocolos cumplen funciones complementarias:
-
TCP (Transmission Control Protocol) es un protocolo orientado a la conexión. Su función principal consiste en determinar cómo dividir los datos de la aplicación en paquetes y gestionar el control de flujo y la retransmisión de los paquetes descartados o dañados, reordenándolos en destino. Según RFC 9293 (que obsoleta a RFC 793), TCP detecta pérdidas mediante números de secuencia, corrige mediante retransmisión e incorpora control de flujo.
-
IP (Internet Protocol) es un protocolo sin conexión (connectionless, RFC 791). Por ello cada paquete se trata como una unidad de datos independiente, sin relación con las demás: IP no mantiene una conexión continua entre los puntos finales, de modo que cada datagrama se encamina por separado.
La diferencia clave, por tanto, es que TCP es orientado a la conexión, mientras que IP es sin conexión.
Sockets
Un socket es un punto final (endpoint) de comunicación entre dos máquinas, definido por la combinación de dirección IP + número de puerto. Es importante no confundir el concepto: un socket NO es simplemente un número de puerto (esta afirmación es incorrecta); el puerto es solo uno de sus componentes.
En Java 7, para implementar un socket cliente se debe importar la clase java.net.Socket (paquete java.net). Según la documentación oficial de Oracle, esta clase implementa los sockets de cliente y representa el endpoint local, del que se obtienen la dirección IP (getInetAddress()) y el puerto (getPort()).
Middleware
El middleware es un software que se sitúa entre el sistema operativo y las aplicaciones que se ejecutan sobre él, actuando como capa intermedia que facilita la comunicación, la interoperabilidad y los servicios comunes (mensajería, transacciones, acceso a datos). Son ejemplos de middleware los monitores de transacciones, los ORB/CORBA, los servidores de aplicaciones y los sistemas de colas de mensajes. Por el contrario, DOOM (el videojuego) no es un middleware: es una aplicación, no una capa intermedia entre sistema operativo y aplicaciones.
Fuentes
-
Oracle, Java Platform SE 7 API — Class Socket (
java.net.Socket): https://docs.oracle.com/javase/7/docs/api/java/net/Socket.html -
IETF, RFC 9293 — Transmission Control Protocol (TCP): https://www.rfc-editor.org/info/rfc9293/
-
IETF, RFC 791 — Internet Protocol (IP): https://www.rfc-editor.org/info/rfc791