Introdución
HTTP é un protocolo de comunicacións que se basea no modelo cliente-servidor. Permite a transferencia de documentos web ou outros ficheiros. É un protocolo baseado no esquema petición/resposta: o cliente realiza unha petición e o servizo devolve a resposta. Ademais, estes está utiliza mensaxes de texto plano. Por último e moi importante, é un protocolo sen manexo de estados.
Versións
HTTP pasou por múltiples versións do protocolo, introducindo melloras de rendemento, eficiencia, seguridade e capacidades. Moitas versións son retrocompatibles.
- HTTP/0.9 (1991): Protocolo extremadamente sinxelo. Só soportaba o método
GETe só permitía a transferencia de ficheros HTML. - HTTP/1.0 (1996): Primeira versión do protocolo. Permite os métodos de petición
GET,HEADePOST. Inclúe cabeceiras e conexións non persistentes. - HTTP/1.1 (1999): A versión máis empregada ata a publicación de HTTP/2. Aínda quedan algunhas web que empregan esta primeira versión. Permite conexións persistentes con TCP, soporte de caché avanzado, transferencia fragmentada e negociación de contidos (o navegador e cliente poden negociar o tipo de resposta).
- HTTP/2 (2015): A versión máis empregada na actualizade. Non modifica a semántica de HTTP. As súas melloras enfócanse no empaquetado dos datos e o seu transporte como multiplexación, compresión de cabeceiras, priorización de streams, server push, etc.
- HTTP/3 (2018): A versión máis recente do protocolo. Modifica o protocolo de transporte de TCP a QUIC (un protocolo basado en UDP). Emprega cifrado obrigatoriamente (TLS 1.3) e reduce a latencia.

Estrutura de mensaxes
Teremos dous tipos de mensaxes:
- Mensaxes de petición (HTTP request) ou solicitudes: enviadas polo cliente.
- Mensaxes de resposta (HTTP response): enviadas polo servidor.
Unha mensaxe HTTP divídese en tres partes:
- Liña de partida (Start line): Nela, indícase a versión do protocolo que se utiliza. A información adicional que se proporciona depende do tipo de mensaxe (petición ou resposta).
- Cabeceira HTTP (HTTP header): Metadatos da mensaxe.
- Corpo (Body): Contén un recurso (HTML, imaxe, vídeo, etc.). Entre as cabeceira e o corpo déixase unha liña en branco. Unha mensaxe HTTP pode non ter corpo. Esta situación é máis frecuente en peticións que en respostas. Unha petición pode ter corpo ou non.