Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Protocolo de la capa aplicación | HTTP

11 octubre, 2012

Protocolo HTTP

Denominado como protocolo de transferencia de hipertexto este protocolo funciona en la capa aplicación, consta de dos programas, que funcionan como programa cliente y como programa servidor.

Así pues, una página web puede estar formada de varios objetos, el documento html, imágenes, aplets, etc.

El navegador del cliente actuaria como agente del usuario (del cliente) y proporcionará diversas funcionalidades además de la página que solicites al servidor. Es el navegador el que interpretará la página web, por lo tanto posible que cada navegador lo interprete de una manera diferente.

El servidor no guarda el estado en ningún momento, por lo tanto el servidor HTTP no guarda ninguna información sobre el estado del cliente. HTTP es un protocolo sin estado.

El protocolo HTTP puede utilizar conexiones persistentes o no persistentes. Como ejemplo si pedimos una página web a un servidor y la página consta de un HTML y 5 objetos, en una conexión persistente solo se hará una conexión TCP, mientras que en una conexión no persistente se utilizarán múltiples conexiones TCP, una por cada objeto solicitado.

Estas conexiones pueden ser paralelas para mejorar el rendimiento, por lo que un navegador puede realizar x conexiones al mismo tiempo en vez de ir realizando una conexión tras otra (en serie), que habitualmente alargaría el tiempo de conexión.

Utilizando conexiones persistentes el servidor mantiene abierta una conexión TCP para que las siguientes peticiones y respuestas se transmitan por esa conexión.

Cabecera de petición HTTP

Cuando solicitamos una página web, nuestro navegador crea una cabecera que será enviada al servidor para solicitar la página en cuestión.

Las cabeceras que generes serán parecidas es esto:

GET / HTTP/1.1
Host: codifica.me
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1
Connection: close

La primera línea se llama línea de petición, las demás serán las líneas de cabecera.
GET corresponde al método por el que pedimos la página
/ corresponde a la dirección dentro del host.
HTTP/1.1 corresponde a la versión que utiliza el navegador.

Host, obviamente es el host al que se solicita la petición
User-Agent corresponde al navegador que utiliza
Connection: close, Indica que no queremos una conexión persistente

Si queréis ver cabeceras de petición HTTP podéis generarlas desde esta website
rexswain.com

Respuesta de petición HTTP

Después de recibir esto el servidor generará un mensaje de respuesta parecido al nuestro, dónde tendrá una línea inicial de estatus, varias líneas de cabecera y finalmente el objeto pedido.

Existen algunos códigos y mensajes establecidos, por ejemplo estos:

200 OK,
301 Moved Permanently
400 Bad Request
404 Not found… (Este código es el más famoso y podrás verlo cuando generes una página que no existe, o haya sido borrada etc.)

Mantener el estado

Cookies

Como hemos comentado antes el protocolo HTTP es un protocolo sin estado. Ahora bien, si el servidor quiere mantener el estado o conocer el estado del cliente puede hacerlo enviando una cookie al cliente, si el cliente permite que el servidor guarde una cookie con información del estado dentro de su equipo, el servidor podrá recuperarla y usarla para conocer el estado del cliente.

FTP

El protocolo FTP también es un protocolo de la capa aplicación que funciona sobre TCP, no obstante aunque tienen muchas características parecidas también tienen muchas diferencias.

El protocolo FTP utiliza dos conexiones TCP para transferir archivos una de ellas se encarga del control de la conexión y otra de la transferencia de los datos.

El protocolo FTP utiliza el puerto 21.