Apuntes redes

No vayas a access.log, donde habitan los monstruos.

Redes y Servidores: La Infraestructura de la Web

La web depende de una compleja infraestructura de redes y servidores que trabajan en conjunto para entregar contenido a los usuarios en todo el mundo.
En esta sección veremos cómo los protocolos de red, como IP, DNS, TCP, UDP y HTTP, forman la base de la comunicación en internet, y cómo tecnologías como Apache, PHP y MySQL aprovechan estos protocolos para construir y servir sitios web.

Comenzaremos con una introducción a la arquitectura en capas de internet, que establece el contexto para entender el funcionamiento de los servidores web.

La Multicapa de Protocolos: Cómo Funciona Internet

Internet es un flujo constante de datos que viaja a través de una red global de dispositivos interconectados. Este flujo transita sobre una arquitectura en capas (capa de red, capa de transporte, capa de aplicación), donde múltiples protocolos trabajan juntos, cada uno cumpliendo un papel específico, pero operando de manera independiente, "ignorando" los detalles de los demás. Entre estos protocolos se encuentran IP, DNS, TCP, UDP y HTTP, que colaboran para permitir desde la identificación de dispositivos hasta la entrega de páginas web en tu navegador.

Protocolo IP: La Dirección de la Red

El Protocolo de Internet (IP) regula el sistema de direcciones de internet. Cada dispositivo conectado -un servidor, un ordenador o un smartphone- recibe una dirección IP única, similar a una dirección postal. Operando en la capa de red, IP se encarga de enrutar los paquetes de datos desde su origen hasta su destino, asegurándose de que lleguen al dispositivo correcto, sin importar su ubicación en el mundo.

DNS: El Traductor de Nombres

En lugar de memorizar direcciones IP como "192.168.1.1", podemos utilizar nombres de dominio como "www.ejemplo.com".
El Sistema de Nombres de Dominio (DNS) actúa como una guía telefónica de internet, traduciendo estos nombres legibles en direcciones IP. Cuando escribes una URL en tu navegador, DNS busca la dirección IP correspondiente, permitiendo que tu solicitud llegue al servidor adecuado. Este proceso es rápido, transparente y esencial para conectar clientes y servidores.

TCP y UDP: La Comunicación en la Capa de Transporte

En la capa de transporte, dos protocolos principales facilitan la comunicación entre dispositivos: TCP y UDP. El Protocolo de Control de Transmisión (TCP) establece una conexión confiable, dividiendo los datos en paquetes, enviándolos y verificando que lleguen completos, en orden y sin errores. Es ideal para aplicaciones como la navegación web, donde la integridad de los datos es crucial. Por otro lado, el Protocolo de Datagrama de Usuario (UDP) es más ligero y rápido, pero no confiable, ya que envía datagramas sin verificar si llegan correctamente, en orden, o si se pierden en el camino. UDP se usa en aplicaciones como streaming, juegos en línea o ciertas consultas DNS. Ambos operan sobre IP, ofreciendo opciones complementarias para la transmisión de datos.

TCP/IP: Transporte Confiable sobre la Red

El protocolo TCP se encarga de establecer una conexión origen/destino, en colaboración con el protocolo IP (por eso normalmente se habla de protocolo TCP/IP). El Protocolo de Internet (IP) maneja el enrutamiento de datos, y el Protocolo de Control de Transmisión (TCP) asegura su entrega confiable. Estos protocolos trabajan en conjunto con otros, como DNS (descrito anteriormente) y UDP (que discutiremos más adelante), para permitir la comunicación entre dispositivos en redes globales.

Protocolo IP: Enrutamiento de Paquetes

El Protocolo de Internet (IP), que opera en la capa de red, se encarga de enrutar datos entre dispositivos, incluso si no están conectados directamente. IP divide los datos en paquetes (o datagramas en IPv4), cada uno con las direcciones IP de origen y destino (por ejemplo, 192.168.1.1 o una dirección IPv6). Estos paquetes son guiados por enrutadores, que usan tablas de enrutamiento para encontrar la ruta más eficiente a través de redes interconectadas, como se explicó en la sección de IP y DNS.

IP es un servicio no confiable (best effort), lo que significa que no garantiza que los paquetes lleguen, lleguen en orden, o lleguen sin errores. Un paquete puede perderse, duplicarse, o llegar dañado. La confiabilidad se delega a protocolos de la capa de transporte, como TCP o, en menor medida, aplicaciones que usan UDP.

Protocolo TCP: Transporte Confiable

El Protocolo de Control de Transmisión (TCP), que opera en la capa de transporte, asegura que los datos lleguen completos y en orden. TCP divide los datos en segmentos, los identifica, y los envía sobre IP. En el origen, establece una conexión con el destino, garantizando que ambas partes estén listas para comunicarse. En el destino, TCP reensambla los segmentos en el orden correcto, solicita el reenvío de segmentos perdidos o dañados, y verifica la integridad de los datos mediante sumas de verificación.

La combinación de IP y TCP es altamente flexible. IP permite que los paquetes tomen rutas alternativas si una red falla, mientras que TCP asegura que los datos se reconstruyan correctamente, independientemente del orden o la ruta de llegada. Por ejemplo, si un paquete se pierde, TCP solicita solo ese segmento, no todos los datos, lo que hace el sistema eficiente. Esta confiabilidad es esencial para aplicaciones como la navegación web (HTTP) y la transferencia de archivos (FTP), que discutiremos en las secciones siguientes.

HTTP: El Diálogo Cliente-Servidor

En la capa de aplicación, el Protocolo de Transferencia de Hipertexto (HTTP) define cómo los clientes (como navegadores) y los servidores (que alojan sitios web) intercambian recursos, como páginas web, imágenes o videos. Cuando haces clic en un enlace, tu navegador envía una solicitud HTTP al servidor, que responde con los datos solicitados, como el código HTML de una página. HTTP establece las reglas de este diálogo, asegurando que ambos lados se entiendan. Aunque HTTP suele usar TCP, tecnologías modernas como HTTP/3 aprovechan UDP para mejorar la velocidad.

Esquema simplificado

  1. Cliente (Navegador):

    • HTTP genera solicitud (ej. GET /index.html).
    • TCP divide datos en segmentos, establece conexión, asegura orden y confiabilidad.
    • IP encapsula segmentos en paquetes, añade direcciones IP (origen y destino).
    • Paquetes enviados a la red.
  2. Red:

    • Enrutadores guían paquetes usando direcciones IP, posiblemente por rutas diferentes.
  3. Servidor:

    • IP recibe paquetes, extrae segmentos.
    • TCP reordena segmentos, verifica integridad, reensambla datos.
    • HTTP recibe solicitud, responde con página web.

La Independencia de las Capas: Cooperación sin Conocimiento Mutuo

Lo característico de internet es la independencia de sus capas. HTTP no necesita saber cómo TCP o UDP gestionan los paquetes, ni cómo IP los enruta, ni cómo DNS resuelve nombres. Cada protocolo se enfoca en su tarea, confiando en que los demás harán su parte. Esta abstracción de capas hace que el sistema sea modular, escalable y capaz de evolucionar, permitiendo innovaciones como HTTP/3 sobre UDP sin alterar las bases de la red.

Apache, PHP y MySQL: Implementando la Web

Con esta base de protocolos en mente, podemos estudiar cómo los servidores web, como Apache, aprovechan HTTP para servir contenido. Apache es un software de servidor que interpreta solicitudes HTTP y entrega respuestas, a menudo generadas dinámicamente con lenguajes como PHP y datos almacenados en bases de datos como MySQL. En las siguientes subsecciones, analizaremos cómo estas tecnologías trabajan juntas para crear sitios web, apoyándose en la arquitectura de red descrita.

TOP