Conceptos Básicos de HTTP
Conceptos Básicos de HTTP
Para poder mostrar una página Web, el navegador envía una petición de
documento HTML al servidor. Entonces procesa este documento, y envía más
peticiones para solicitar scripts, hojas de estilo (CSS), y otros datos que necesite
(normalmente vídeos y/o imágenes). El navegador, une todos estos documentos y
datos, y compone el resultado final: la página Web. Los scripts, los ejecuta también
el navegador, y también pueden generar más peticiones de datos en el tiempo, y el
navegador, gestionará y actualizará la página Web en consecuencia.
Una página Web, es un documento de hipertexto (HTTP), luego habrá partes del
texto en la página que puedan ser enlaces (links) que pueden ser activados
(normalmente al hacer clic sobre ellos) para hacer una petición de una nueva
página Web, permitiendo así dirigir su agente de usuario y navegar por la Web. El
3
El servidor Web
Al otro lado del canal de comunicación, está el servidor, el cual "sirve" los datos que
ha pedido el cliente. Un servidor conceptualmente es una única entidad, aunque
puede estar formado por varios elementos, que se reparten la carga de peticiones,
(load balancing), u otros programas, que gestionan otros computadores (como
cache, bases de datos, servidores de correo electrónico, ...), y que generan parte o
todo el documento que ha sido pedido.
Un servidor no tiene que ser necesariamente un único equipo físico, aunque si que
varios servidores pueden estar funcionando en un único computador. En el estándar
HTTP/1.1 y Host , pueden incluso compartir la misma dirección de IP.
Proxies
Entre el cliente y el servidor, además existen distintos dispositivos que gestionan los
mensajes HTTP. Dada la arquitectura en capas de la Web, la mayoría de estos
dispositivos solamente gestionan estos mensajes en los niveles de protocolo
inferiores: capa de transporte, capa de red o capa física, siendo así transparentes
para la capa de comunicaciones de aplicación del HTTP, además esto aumenta el
rendimiento de la comunicación. Aquellos dispositivos, que sí operan procesando la
capa de aplicación son conocidos como proxies. Estos pueden ser transparentes, o
no (modificando las peticiones que pasan por ellos), y realizan varias funciones:
- HTTP es sencillo
- HTTP es extensible
Presentadas en la versión HTTP/1.0, las cabeceras de HTTP, han hecho que este
protocolo sea fácil de ampliar y de experimentar con él. Funcionalidades nuevas
pueden desarrollarse, sin más que un cliente y su servidor, comprendan la misma
semántica sobre las cabeceras de HTTP.
HTTP es un protocolo sin estado, es decir: no guarda ningún dato entre dos
peticiones en la misma sesión. Esto crea problemáticas, en caso de que los usuarios
requieran interactuar con determinadas páginas Web de forma ordenada y
coherente, por ejemplo, para el uso de "cestas de la compra" en páginas que
utilizan en comercio electrónico. Pero, mientras HTTP ciertamente es un protocolo
sin estado, el uso de HTTP cookies, si permite guardar datos con respecto a la
sesión de comunicación. Usando la capacidad de ampliación del protocolo HTTP, las
cookies permiten crear un contexto común para cada sesión de comunicación.
- HTTP y conexiones
Una conexión se gestiona al nivel de la capa de trasporte, y por tanto queda fuera
del alcance del protocolo HTTP. Aún con este factor, HTTP no necesita que el
protocolo que lo sustenta mantenga una conexión continua entre los participantes
en la comunicación, solamente necesita que sea un protocolo fiable o que no pierda
mensajes (como mínimo, en todo caso, un protocolo que sea capaz de detectar que
se ha pedido un mensaje y reporte un error). De los dos protocolos más comunes
en Internet, TCP es fiable, mientras que UDP, no lo es. Por lo tanto, HTTP, se apoya
5
en el uso del protocolo TCP, que está orientado a conexión, aunque una conexión
continua no es necesaria siempre.
En la versión del protocolo HTTP/1.0, habría una conexión TCP por cada
petición/respuesta intercambiada, presentando esto dos grandes inconvenientes:
abrir y crear una conexión requiere varias rondas de mensajes y por lo tanto
resultaba lento. Esto sería más eficiente si se mandaran varios mensajes.
Se presenta a continuación una lista con los elementos que se pueden controlar con
el protocolo HTTP:
Flujo de HTTP
1. Abre una conexión TCP: la conexión TCP se usará para hacer una petición, o
varias, y recibir la respuesta. El cliente pude abrir una conexión nueva,
reusar una existente, o abrir varias a la vez hacia el servidor.
2. Hacer una petición HTTP: Los mensajes HTTP (previos a HTTP/2) son legibles
en texto plano. A partir de la versión del protocolo HTTP/2, los mensajes se
7
Si está activado el HTTP pipelining, varias peticiones pueden enviarse sin tener que
esperar que la primera respuesta haya sido satisfecha. Este procedimiento es difícil
de implementar en las redes de computadores actuales, donde se mezclan software
antiguos y modernos. Así que el HTTP pipelining ha sido substituido en HTTP/2 por
el multiplexado de varias peticiones en una sola trama.
Mensajes HTTP
En las versiones del protocolo HTTP/1.1 y anteriores los mensajes eran de formato
texto y eran totalmente comprensibles directamente por una persona. En HTTP/2,
los mensajes están estructurados en un nuevo formato binario y las tramas
permiten la compresión de las cabeceras y su multiplexación. Así pues, incluso si
solamente parte del mensaje original en HTTP se envía en este formato, la
semántica de cada mensaje es la misma y el cliente puede formar el mensaje
original en HTTP/1.1. Luego, es posible interpretar los mensajes HTTP/2 en el
formato de HTTP/1.1.
Existen dos tipos de mensajes HTTP: peticiones y respuestas, cada uno sigue su
propio formato.
Peticiones
La dirección del recurso pedido; la URL del recurso, sin los elementos obvios
por el contexto, como pueden ser: sin el protocolo (http://),
el dominio (aquí developer.mozilla.org), o el puerto TCP (aquí el 80).
Respuestas
Conclusión