02/Sep/2025
Introducción a HTTP
HTTP (Hypertext Transfer Protocol) es el protocolo de comunicación fundamental para la transferencia de información en la web. La versión HTTP/1.1 es la más utilizada y es tan versátil que puede implementarse en cualquier dispositivo conectado a internet, desde servidores hasta dispositivos IoT como “tostadoras inteligentes”.
Este protocolo está definido por RFC públicas (Request for Comments), documentos técnicos que establecen los estándares oficiales de internet.
Comunicación Cliente-Servidor
HTTP establece una comunicación entre:
- Cliente: Dispositivo que solicita recursos (navegador web, app móvil)
- Servidor: Equipo que responde a las solicitudes proporcionando recursos
Puertos comunes utilizados:
- Puerto 80: HTTP estándar
- Puerto 443: HTTPS (HTTP seguro)
- Puerto 8080: Alternativo para desarrollo
- Puerto 8443: Alternativo para HTTPS
Versiones de HTTP
- HTTP/1.1: Versión ampliamente adoptada y compatible
- HTTP/2: Mejora significativa en rendimiento
- HTTP/3: Versión más reciente que utiliza QUIC en lugar de TCP
Métodos de Petición HTTP
GET
- Solicita datos de un recurso específico
- Los parámetros se envían en la URL mediante codificación:
/search.php?busqueda=protocolo+1.1&tipo=2
- Limitaciones:
- Longitud máxima de URL (depende del navegador/servidor)
- Codificación UTF-8
- Los datos son visibles en el historial y logs
[!IMPORTANTE] Nunca uses GET para operaciones críticas (como cambiar contraseñas o realizar transacciones) porque:
- Los parámetros quedan expuestos en historiales y logs
- Puede ser manipulado fácilmente
- Es susceptible a ataques CSRF
POST
- Envía datos para ser procesados por el servidor
- Los datos se envían en el cuerpo de la petición, no en la URL
- No tiene límites estrictos de tamaño (los define el servidor)
- Ideal para envío de formularios, archivos y datos sensibles
PUT
- Actualiza o crea un recurso específico
DELETE
- Elimina un recurso específico
Códigos de Estado HTTP
- 100s: Informativos (ej: 100 Continue)
- 200s: Éxito (ej: 200 OK - solicitud exitosa)
- 300s: Redirecciones (ej: 301 Moved Permanently) lo que pedimos se movió.
- 400s: Errores del cliente (ej: 404 Not Found - recurso no existe)
- 500s: Errores del servidor (ej: 500 Internal Server Error - error en el servidor)
Gestión de Errores y Logs
Los servidores web registran actividad en:
- access.log: Registra todas las peticiones recibidas
- error.log: Registra errores y excepciones del servidor
Estos logs incluyen información como fecha, hora, recurso solicitado y código de estado.
Estado y Sesiones
HTTP es un protocolo sin estado - cada petición es independiente y el servidor no “recuerda” peticiones anteriores.
Para mantener sesiones y estado entre peticiones, se utilizan:
- Frameworks que gestionan cookies y sesiones
- Tokens de autenticación
- Almacenamiento local en el cliente
Redirección de Puertos y Seguridad
- Los puertos bajo el 1024 requieren privilegios de administrador
- Es común usar puertos altos (8080, 8443) para desarrollo
- En producción, se utilizan proxies inversos para redirigir:
- Puerto 80 → 8080 (HTTP)
- Puerto 443 → 8443 (HTTPS)
Glosario de Términos
- Cliente-Servidor: Modelo de arquitectura donde el cliente solicita servicios y el servidor los proporciona
- Puerto: Punto de comunicación virtual en un dispositivo de red
- RFC (Request for Comments): Documentos que definen estándares y protocolos de internet
- URI (Uniform Resource Identifier): Identificador único de un recurso (ej: /index.html)
- URL (Uniform Resource Locator): Dirección específica de un recurso en la web
- Redirect (Redirección): Mecanismo para enviar a un cliente a una ubicación diferente
- Framework: Conjunto de herramientas y bibliotecas que facilitan el desarrollo web
- Proxy: Intermediario entre cliente y servidor que puede modificar peticiones/respuestas
- Codificación UTF-8: Estándar de codificación de caracteres que soporta múltiples idiomas
- Logs: Archivos que registran eventos y actividades de un sistema