Protocolos de internet [HTTP]
Este es el primero de una serie de posts sobre los protocolos que se suelen usar en Internet (HTTP, FTP, SOCKS, IRC...), la idea es hacer pequeña introducción a quien no quiera (o no pueda) leerse largos manuales u otros documentos como los RFC por falta de tiempo, por desconocimiento del lenguaje técnico... o por pereza[http://emoticons4u.com/happy/682.gif]
¿Qué es HTTP?
HTTP es un protocolo que funciona sobre TCP/IP y que se suele utilizar cuando navegas por la red, o en las descargas directas, aqui veremos como funciona el HTTP/1.1, que es el "estándar" hoy en dia
Esta, por ejemplo, es una "conversacion" HTTP (algo así ocurre al acceder a la página principal de Google):
[Lo que va con un # son comentarios]
El cliente (su navegador) se conecta a www.google.es en el puerto 80 (el
puerto estándar)
Se especifica que fichero (o directorio) se pide, en este caso es '/', el
directorio raíz [Cliente] GET / HTTP/1.1
Ahora se especifica a que dominio se pide (esto se utiliza para saber que
página web se esta visitando
en caso de tener varias web en el mismo servidor)
[Cliente] HOST: www.google.es
Y tambien dice que navegador se está utilizando, por ejemplo, con firefox
podrá ser [Cliente] USER-AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.9.2) Gecko/20100115 Firefox/3.6
Por supuesto se envían mas cosas (lenguaje utilizado, compresiones
aceptadas...), pero esto es lo esencial
Para mostrar que ya acabo, el cliente envía una línea en blanco
[Cliente] (linea en blanco)
Y el servidor responde...
[Servidor] HTTP/1.1 200 OK
Ademas se muestra la longitud del archivo (en bytes)
[Servidor] Content-Length: 5012
Y su tipo
[Servidor] Content-Type: text/html
Cuando acabe de enviar la informacion, enviara una linea en blanco
[Servidor] (linea en blanco)
Y despues envia el archivo que se pidio (en este caso la pagina web)
Blablabla...
Y ya está :) , ya tenemos la página web... ahora veamos como funcionan las cosas una a una.
Por decirlo así hay tres partes, las cabeceras que envía el cliente,que tienen información sobre el propio cliente, el protocolo que usa y el archivo que quiere, las cabeceras que envía el servidor, que tienen información sobre la petición (si fue aceptada, si el archivo no existe, .... ), sobre el servidor ( algo así como "POWERED BY ...") y sobre el archivo, y el archivo en si.
Las dos cabeceras utilizan un formato bastante sencillo, la primera línea ,
que sigue su propia sintaxis, y el resto de las cabeceras, con la forma:
La primera linea que envia el cliente sigue esta forma
[Referencias] http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol http://www.w3.org/Protocols/rfc2616/rfc2616.html
Taluego!