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.