Definition
Hypertext Transfer Protocol versión 1.1 - La versión más ampliamente desplegada de HTTP, estandarizada en 1997. Introdujo conexiones persistentes, transferencias en fragmentos, mecanismos adicionales de control de caché y soporte de encabezado host.
Diagrama
sequenceDiagram
participant C as Cliente
participant S as Servidor
Note over C,S: HTTP/1.0 - Nueva conexión por petición
rect rgb(255, 200, 200)
C->>S: TCP Handshake
C->>S: GET /pagina.html
S-->>C: 200 OK + HTML
Note right of S: Conexión cerrada
end
rect rgb(255, 200, 200)
C->>S: TCP Handshake
C->>S: GET /estilo.css
S-->>C: 200 OK + CSS
Note right of S: Conexión cerrada
end
Note over C,S: HTTP/1.1 - Keep-Alive (misma conexión)
rect rgb(200, 255, 200)
C->>S: TCP Handshake
C->>S: GET /pagina.html (Connection: keep-alive)
S-->>C: 200 OK + HTML
Note over C,S: Conexión permanece abierta
C->>S: GET /estilo.css
S-->>C: 200 OK + CSS
C->>S: GET /script.js
S-->>C: 200 OK + JS
Note over C,S: Peticiones secuenciales (bloqueo de cabecera)
end
Example
La mayoría de las APIs REST aún usan HTTP/1.1 por defecto. Una petición GET abre una conexión TCP, envía encabezados, recibe la respuesta y puede reutilizar la misma conexión para peticiones subsecuentes (keep-alive).
Analogía
Como hacer llamadas telefónicas en los 90. Marcas (estableces conexión), hablas (envías petición), escuchas la respuesta (recibes respuesta), y puedes continuar hablando sin colgar (conexión persistente) en lugar de remarcar para cada pregunta.
Code Example
# Raw HTTP/1.1 request
GET /api/users/123 HTTP/1.1
Host: api.example.com
User-Agent: MyClient/1.0
Accept: application/json
Connection: keep-alive
# Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 85
Connection: keep-alive
{"id":123,"name":"John Doe"}
Notas de Seguridad
Requisitos Principales:
- Fuerza HTTPS (HTTP/1.1 sobre TLS) para todas las APIs de producción.
- Implementa validación adecuada de encabezados para prevenir inyección de encabezados HTTP.
Mejores Prácticas:
- Usa Connection: close para operaciones sensibles.
- Ten en cuenta slowloris y ataques DoS similares que explotan conexiones persistentes..