Funcionamiento Del Protocolo HTTP

Download Funcionamiento Del Protocolo HTTP

Post on 28-Jun-2015

4.291 views

Category:

Documents

2 download

TRANSCRIPT

Funcionamiento del Protocolo HTTPEl protocolo HTTP es el usado en lo que popularmente se conoce como web. Se usa tanto para que el navegador pida una pgina a un servidor, como para que ste enve la pgina solicitada al navegador. Est basado en el envo de comandos y respuestas en texto ASCII, si bien cada tipo de contenido enviado (archivo en formato HTML, imgenes en diversos formatos, documentos en formato PDF, etc.) se enviar tal cual est almacenado en el servidor. Es decir, los archivos binarios se envan tal cual, aunque los comandos y las respuestas del protocolo HTTP vayan siempre en texto. En realidad, cuando un navegador conecta con un servidor web remoto no slo le solicita la pgina cuya URL el usuario ha tecleado (o la indicada en el enlace seleccionado con el ratn), sino que le informa de detalles del navegador, de la pgina que solicita, etc. Quizs viendo un ejemplo esto ltimo quede ms claro. A continuacin se muestra una peticin HTTP tpica, de la pgina principal de este sitio:GET / HTTP/1.1 Host: www.24x7linux.com User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b) Gecko/20021016 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,video/xmng,image/png,image/jpeg,image/gif;q=0.2, text/css,*/*;q=0.1 Accept-Language: es-es, en-us;q=0.66, en;q=0.33 Accept-Encoding: gzip, deflate, compress;q=0.9 Accept-Charset: ISO-8859-15, utf-8;q=0.66, *;q=0.66 Keep-Alive: 300 Connection: keep-alive

El proceso completo es el siguiente. El usuario teclea www.24x7linux en su navegador (el prefijo http:// indica el protocolo que habr de usar el navegador tras conectar con el servidor, que es el protoclo predeterminado). El navegador realiza una consulta DNS para averiguar la direccin IP asociada al nombre www.24x7linux.com, por ejemplo 66.227.74.170. Y entonces intenta establecer una conexin TCP al puerto 80 (el predeterminado para los servidores web). Cuando dicha conexin se ha establecido, el navegador enva la peticin HTTP solicitando la pgina indicada tecleada por el usuario. Puesto que no se indic una pgina en concreto, el navegador asume que se solicita la pgina principal, que se representa como /. Como se ve en el listado anterior, adems se enva informacin adicional. Por ejemplo, se informa del navegador en uso (User-Agent) y en qu idioma se prefiere visualizar la pgina que se est solicitando (Accept-Language) (esto permite que una web albergue los contenidos en varios idiomas, y se le enva al navegador la versin en el idioma que tenga configurado en sus opciones).

Las cabeceras Accept-Encoding y Accept-Charset y Accept le indican al servidor qu tipos de contenidos el navegador entiende y sabe representar. Por ejemplo, mientras que el navegador usado entiende imgenes PNG (image/png), es muy probable que un navegador en modo texto no, y por lo tanto enviar unas cabeceras acorde con sus capacidades. De hecho, estas y otras cabeceras son personalizables, de manera que podemos forzar que nuestro navegador se identifique como otro, para entrar en esos sitios que nos impiden el acceso por la arbitraria razn de no usar un navegador en concreto. La pareja de cabeceras Keep-Alive y Connection, slo est presente en la versin 1.1 del protocolo HTTP, y permite recibir muchos recursos (pginas HTML, imgenes, etc.) a travs de la conexin TCP recin establecida. En la versin 1.0 del protocolo HTTP era necesario establecer y terminar una conexin TCP por cada recurso, lo que resultaba tremendamente ineficiente. Hasta ahora, el servidor slo sabe que tiene que enviar al navegador remoto la pgina inicial del servidor web asociado a la IP a que se ha conectado. Pero no sera posible tener hospedadas las pginas de varios clientes en el mismo servidor y usando la misma direccin IP (virtual hosting). Para ello, la versin 1.1 del protocolo HTTP aadi la obligatoriedad de la cabecera Host, que indica al servidor las pginas de qu sitio queremos ver, aunque haya varias asociadas a un servidor web en la misma direccin IP. El servidor recibe todas estas (y posiblemente ms cabeceras, por ejemplo, en el caso de que haya algn proxy intermedio), las interpreta, y devolver al navegador una respuesta estndar HTTP (indicando si la peticin tuvo xito o no), y a continuacn la pgina solicitada. En el caso de la pgina principal implcita (/), el servidor tendr configurada un archivo, normalmente index.html, que enviar en caso de no especificarse una pgina en concreto:HTTP/1.1 200 OK Date: Sun, 10 Nov 2002 22:50:55 GMT Server: Apache/1.3.26 (Unix) mod_bwlimited/1.0 PHP/4.2.2 mod_log_bytes/0.3 FrontPage/5.0.2.2510 mod_ssl/2.8.9 OpenSSL/0.9.6b Content-Type: text/html Age: 130 Connection: close

Se ha recortado la respuesta del servidor web a la parte interesante de la misma. Como se ve, en primer lugar el servidor informa del xito de la peticin (200 OK) y de la versin del protocolo que conoce (HTTP/1.1). Tambin indica la fecha y hora en el servidor (Date) y la versin y mdulos del servidor web (Server). Lo realmente interesante es la cabecera Content-Type, que le dice al navegador el tipo de contenido que viene a continuacin (text/html) seguido del contenido propiamente dicho (el archivo index.html en el directorio base del servidor web). Si en lugar de pedir una pgina en formato HTML se solicita un recurso binario, como por ejemplo un archivo grfico, la respuesta ser de la forma siguiente:

HTTP/1.1 200 OK Date: Sun, 10 Nov 2002 23:15:31 GMT Server: Apache/1.3.26 (Unix) mod_bwlimited/1.0 PHP/4.2.2 mod_log_bytes/0.3 FrontPage/5.0.2.2510 mod_ssl/2.8.9 OpenSSL/0.9.6b Last-Modified: Fri, 01 Nov 2002 12:23:38 GMT ETag: "23c32f-171cb-3dc2724a" Accept-Ranges: bytes Content-Length: 94667 Content-Type: image/png Age: 131

Una respuesta como la primera, pero en este caso se indica que a continuacin viene el contenido de un archivo binario en formato PNG, el tamao en octetos del archivo, y la fecha de su ltima modificacin. Esta fecha, y el valor de las etiquetas ETag son usados por los cachs de protocolo HTTP para decidir si almacenar o no en su memoria y disco el recurso al cual se refieren, por considerarlo ms reciente que la copia que ya tenan (en caso de tenerla). Cuando alguien vuelve a solicitar ese mismo recurso y la cach ve la peticin, devuelve al cliente la copia almacenada en su memoria, lo cual acelera la carga del recurso y reduce la carga en los enlaces de la red y en el servidor remoto. Evidentemente el protocolo HTTP es mucho ms amplio que lo visto en este breve artculo, pero espero sirva para saber qu sucede desde que introducimos una URL en nuestro navegador, hasta que vemos el resultado en pantalla. Saber estos detalles es especialmente til a la hora de intentar resolver problemas de navegacin, como por ejemplo los que ha venido sufriendo este sitio durante los ltimos das.

Recommended

View more >