Saltar al contenido principal

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 GET e 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, HEAD e POST. 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.