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: ":" Y se acaba con una línea en blanco.

La primera linea que envia el cliente sigue esta forma Bien, vamos por partes, los comandos son estos: - GET - POST - HEAD - TRACE - DEL

[Referencias] http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol http://www.w3.org/Protocols/rfc2616/rfc2616.html

Taluego!

untagged

Marchando una de exploits! » « Pasando el rato con /dev/dsp