Comunicación Cliente-Servidor

 

Comunicación Cliente-Servidor

Concepto Básico

La comunicación cliente-servidor es un modelo de arquitectura donde:

  • Cliente: Dispositivo o aplicación que solicita servicios o recursos

  • Servidor: Sistema que provee los servicios o recursos solicitados

  • La comunicación sigue el principio petición-respuesta

Analogía Simple

Imagina un restaurante:

  • Cliente = Comensal (hace el pedido)

  • Servidor = Mesero/Chef (recibe el pedido, lo prepara y lo entrega)

Proceso Paso a Paso

1. El cliente inicia la conexión

  • Abre un canal de comunicación (normalmente mediante sockets)

  • Se conecta a la dirección IP y puerto del servidor

text
Cliente: "Hola servidor, quiero conectarme"

2. El cliente envía una petición (request)

  • Especifica qué recurso o servicio necesita

  • Usa protocolos como HTTP, FTP, SMTP, etc.

text
Cliente: "GET /index.html HTTP/1.1"

3. El servidor procesa la petición

  • Interpreta la solicitud

  • Busca o genera el recurso solicitado

  • Prepara la respuesta adecuada

4. El servidor envía la respuesta (response)

  • Devuelve el recurso solicitado o un mensaje de error

text
Servidor: "HTTP/1.1 200 OK
           Contenido: <html>...</html>"

5. Se cierra la conexión (en modelos sin estado)

Protocolos Comunes

ProtocoloUso PrincipalPuerto
HTTP/HTTPSPáginas web80/443
FTPTransferencia de archivos21
SMTPCorreo electrónico (envío)25
POP3/IMAPCorreo electrónico (recepcion)110/143
DNSResolución de nombres53
SSHConexión segura remota22

Ejemplo Práctico - Navegación Web

  1. Usuario escribe "www.google.com" en el navegador

  2. Cliente (navegador) consulta al DNS para obtener la IP

  3. Cliente establece conexión TCP con el servidor en puerto 443 (HTTPS)

  4. Cliente envía: GET / HTTP/2

  5. Servidor de Google procesa la petición

  6. Servidor responde con código HTML, CSS, JavaScript

  7. Navegador renderiza la página

Características Clave

Arquitecturas comunes:

  • Monolítica: Un solo servidor maneja todo

  • Multi-capas: Presentación, lógica y datos separados

  • Microservicios: Servicios independientes y especializados

Ventajas:

  • Centralización: Fácil administración y backup

  • Seguridad: Control centralizado de accesos

  • Escalabilidad: Se pueden añadir más servidores

Desventajas:

  • Punto único de fallo: Si el servidor cae, todos los clientes se afectan

  • Cuellos de botella: Muchas peticiones simultáneas pueden saturar el servidor

Ejemplo de Código Simple

Cliente (Python):

python
import socket

cliente = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
cliente.connect(("localhost", 8080))
cliente.send(b"Hola servidor")
respuesta = cliente.recv(1024)
print("Respuesta:", respuesta.decode())
cliente.close()

Servidor (Python):

python
import socket

servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
servidor.bind(("localhost", 8080))
servidor.listen(1)

print("Esperando conexiones...")
cliente, direccion = servidor.accept()
print(f"Conexión desde: {direccion}")

mensaje = cliente.recv(1024)
print("Mensaje recibido:", mensaje.decode())
cliente.send(b"Hola cliente")
cliente.close()

Esta arquitectura es fundamental en prácticamente todos los sistemas informáticos modernos, desde navegación web hasta aplicaciones móviles y servicios en la nube.

Comentarios

Entradas populares de este blog

¿Qué es el Modelo OSI?

bit -El codigo ASCII

38. Tema 1: Protocolos de comunicación.