Sunteți pe pagina 1din 8

Sistemas Telemticos a Prctica 6: HTTP a

Departamento de Sistemas Telemticos y Computacin (GSyC) a o Marzo de 2012

1.

Introduccin o

Para la realizacin de los siguientes ejercicios es necesario descomprimir el chero lab-HTTP.tgz en la cuenta de o usuario de la siguiente forma: usuario@zetaXX:~$ tar xzvf lab-HTTP.tgz Arranca NetGUI desde la misma ventana de terminal en que hayas ejecutado el comando anterior, y abre el escenario denido dentro del directorio lab-HTTP (en el men Archivo->Abrir, seleccionar en la caja Nombre de u archivo el directorio lab-HTTP). Se cargar el escenario que se muestra en la gura 1. a

!"#$%$"& +,"#&

!"#$%$"& '()*& !"#$%$"& +%-.&

!"#$%$"& +-#/0+,"#& !"#$%$"& +-#/1+%-.&

Figura 1: Figura del escenario HTTP donde se ven representados los dominios DNS en que est cada mquina a a

1.1.

Servidor HTTP

Vamos a utilizar el programa apache2 como servidor de web para realizar las pruebas. Para arrancar el servidor de web utilizaremos el siguiente comando en la mquina donde queremos arrancarlo: a /etc/init.d/apache2 start Este servidor est sirviendo las pginas que se encuentran en el directorio /var/www/ de la mquina donde a a a est arrancado. a Para interrumpir el servidor de web utilizaremos el siguiente comando en la mquina donde se encuentra arrancado: a /etc/init.d/apache2 stop

1.2.

Cliente HTTP

Utilizaremos el programa wget como cliente HTTP para acceder a las pginas del servidor de web. Este programa a no es un navegador de web, es una herramienta para descargar pginas web de un servidor, por ejemplo se utiliza a para descargar un sitio web completo. Para ejecutar wget utilizaremos el siguiente comando en la mquina donde queremos arrancarlo, por ejemplo: a wget -r http://pc2.emp2.net/index.html Este comando se conectar a la mquina pc2.emp2.net y al puerto 80 y descargar la pgina index.html. a a a a La informacin descargada a travs de HTTP se almacena en la mquina donde se ejecuta wget en un directorio o e a que lleva el nombre de la mquina del servidor de web. En el ejemplo anterior, el directorio llevar el nombre a a pc2.emp2.net.

1.3.

Trco HTTP en Wireshark a

Cuando un mensaje HTTP ocupa ms de un segmento TCP, Wireshark muestra el siguiente mensaje por cada a uno de los segmentos TCP que son parte de dicho mensaje HTTP: [TCP segment of a reassembled PDU] Cuando Wireshark interpreta que se ha recibido todo el mensaje HTTP, como resultado de haber recibido previamente un conjunto de segmentos TCP segment of a reassembled PDU, Wireshark concatena todos estos segmentos para mostrar el mensaje HTTP completo.

2.
2.1.

HTTP y las conexiones TCP subyacentes


HTTP con conexiones no persistentes

Para ver el funcionamiento de las conexiones HTTP no persistentes vamos a descargar en pc1 una pgina web a que se encuentra alojada en un servidor de web en pc2. Antes de realizar la transferencia, responde a las siguientes preguntas: 1. Cuntas conexiones TCP crees que se establecern para que pc1 se descargue la pgina index.html de pc2? a a a Por qu? e Para comprobar tus suposiciones realiza las siguientes acciones: Arranca el programa tcpdump, por ejemplo en la interfaz eth0 de r1, para capturar todos los paquetes relacionados con esta transferencia. Inicia el servidor de web en la mquina pc2 tal y como se ha explicado en la seccin anterior. a o A continuacin utiliza el programa wget desde pc1 para descargarte la pgina index.html del servidor de web o a en pc2.

Carga en Wireshark la captura que has realizado. Observars que Wireshark interpreta algunos de los paquetes a capturados como trco HTTP. Observando la captura de trco que has realizado: a a 2. Qu versin de HTTP estn utilizando tanto el cliente como el servidor? e o a 3. Cuntas conexiones TCP se han establecido entre pc1 y pc2 al realizarse la descarga con wget? Por qu? a e 4. Indica qu mtodo se est utilizando en la peticin HTTP. e e a o 5. Qu l e neas de cabecera de HTTP est utilizando el cliente para sus mensajes de peticin? a o 6. Observa las l neas de cabecera HTTP Content-Length y Content-Type de los mensajes de respuesta que env a el servidor. Son siempre las mismas? 7. Observa que el servidor de HTTP env la cabecera Connection: close en cada respuesta para indicar que a despus de cada transferencia cerrar la conexin TCP, ya que est utilizando no conexiones persistentes. e a o a

2.2.

HTTP con conexiones persistentes

Vamos a realizar la misma transferencia que en el apartado anterior (borrando previamente los cheros descargados en la mquina pc1), pero congurando el cliente de HTTP para que utilice conexiones HTTP persistentes. a HTTP 1.0 permite utilizar conexiones persistentes si el cliente incluye la l nea de cabecera: Connection: Keep-Alive Esta cabecera no se encontraba en la especicacin original de HTTP 1.0, se aadi posteriormente. Aunque o n o el comportamiento por defecto en HTTP 1.0 sea utilizar conexiones no persistentes, si el cliente env esta l a nea de cabecera el servidor mantendr la conexin TCP abierta para realizar otras transferencias, usando la misma conexin. a o o Antes de realizar la transferencia, responde a las siguientes preguntas: 1. Cuntas conexiones TCP crees que se establecern si pc1 realiza la misma descarga que en el apartado anterior a a pero ahora utilizando conexiones HTTP persistentes? Para comprobar tus suposiciones realiza las siguientes acciones: En pc1 borra los cheros descargados en el apartado anterior para ver cmo se descargan otra vez (utiliza la o orden rm -rf pc2.emp2.net desde la mquina pc1). a Para que wget utilice conexiones persistentes, edita el chero .wgetrc (por ejemplo con mcedit) de la mquina a pc1 y activa la opcin http_keep_alive de la siguiente manera: o http_keep_alive=on Arranca de nuevo tcpdump para capturar todos los paquetes relacionados con la descarga que vas a realizar a continuacin. o Utiliza wget para que pc1 se descargue la pgina index.html que tiene el servidor de web de pc2. a Observando la captura de trco que has realizado: a 2. Cuntas conexiones TCP se han establecido entre pc1 y pc2 al realizarse la descarga con wget? Por qu? a e Observa que la peticin de HTTP se realiza usando la versin HTTP 1.0 con la cabecera Connection: Keep-Alive o o y el servidor responde utilizando la versin HTTP 1.1. o 3. Puedes apreciar si se ha ahorrado tiempo de descarga con respecto a la descarga con conexiones HTTP no persistentes?

3.
3.1.

Formularios en HTTP
Env de datos de un formulario desde el cliente al servidor o

En este apartado vamos a ver cmo se utiliza el mtodo GET y POST para enviar datos dentro de un formulario. o e Para este apartado vamos a utilizar un navegador de web en modo texto, llamado lynx. Desde pc1 accederemos a un formulario en el servidor que se encuentra en pc2, rellenaremos los campos del formulario y se lo enviaremos al servidor.

3.2.

Mtodo POST e
Arranca de nuevo tcpdump para capturar todos los paquetes relacionados con la descarga que vas a realizar a continuacin entre pc1 y pc2. o En pc1 arranca el navegador web lynx de modo que se descargue el formulario form1.html de pc2: lynx http://pc2.emp2.net/form1.html Rellena el campo Nombre, muvete con el tabulador hasta el campo Apellido, muvete con el tabulador hasta e e el campo Enviar y pulsa tecla <Enter>. Esto provocar el env de los datos a un programa en la mquina del a o a servidor, que tratar dichos datos y construir una pgina a partir de los mismos, devolvindosela al cliente. a a a e Para salir pulsa la letra q y despus conrma que quieres salir de lynx con la letra y. e

Interrumpe la captura y anal zala. Responde a las siguientes preguntas: 1. Busca en la captura el segmento donde el cliente le env los datos del formulario al servidor y comprueba que a se est realizando con el mtodo POST. a e 2. Indica cmo se llama el programa del servidor que va a recibir esos datos. o 3. Indica los valores de Content-Length y Content-Type, si aparecen en el segmento en el que el cliente env los a datos del formulario al servidor. 4. Indica en que parte del mensaje van los datos del formulario que el cliente le env al servidor. a 5. Por qu el cliente est enviando los datos del formulario usando el mtodo POST y no usa el GET? e a e

3.3.

Mtodo GET e
Arranca de nuevo tcpdump para capturar todos los paquetes relacionados con la descarga que vas a realizar a continuacin entre pc1 y pc2. o En pc1 arranca el navegador web lynx de modo que se descargue el formulario form2.html de pc2: lynx http://pc2.emp2.net/form2.html Rellena el campo Nombre, muvete con el tabulador hasta el campo Apellido, muvete con el tabulador hasta e e el campo Enviar y pulsa tecla <Enter>. Esto provocar el env de los datos a un programa en la mquina del a o a servidor, que tratar dichos datos y construir una pgina a partir de los mismos, devolvindosela al cliente. a a a e Para salir pulsa la letra q y despus conrma que quieres salir de lynx con la letra y. e

Interrumpe la captura y anal zala. Responde a las siguientes preguntas: 1. Busca en la captura el segmento donde el cliente le env los datos del formulario al servidor y comprueba que a se est realizando con el mtodo GET. a e 2. Indica cmo se llama el programa del servidor que va a recibir esos datos. o 3. Indica los valores de Content-Length y Content-Type, si aparecen en el segmento en el que el cliente env los a datos del formulario al servidor. 4. Indica en que parte del mensaje van los datos del formulario que el cliente le env al servidor. a 5. Por qu el cliente est enviando los datos del formulario usando el mtodo GET y no usa el POST? e a e 4

4.

Proxy HTTP

En este apartado vamos a arrancar un proxy HTTP con cach en la mquina r1 y vamos a realizar la misma e a descarga que en los apartados anteriores. Los clientes HTTP 1.0 no env la cabecera Connection: Keep-Alive cuando se comunican con un proxy 1 , an por tanto, desde pc1 wget utilizar conexiones no persistentes para comunicarse con el proxy. a Dado que la peticin de HTTP llega al proxy a travs de una comunicacin con conexiones no persistentes, el o e o proxy cuando se comunica con el destino utilizar conexiones no persistentes. a Antes de realizar la descarga: 1. Cuntas conexiones TCP crees que se van a necesitar para realizar la descarga descrita? a Para comprobar tus suposiciones realiza las siguientes acciones: En pc1 borra los cheros descargados en el apartado anterior para ver cmo se descargan otra vez. o Arranca todos los procesos tcpdump que consideres necesarios para capturar todo el trco HTTP de la descarga a que vamos a realizar usando el proxy HTTP de r1. Dado que tienes el servidor de web en pc2 arrancado del apartado anterior, no es necesario que lo reinicies. Para arrancar el proxy HTTP en la mquina r1 vamos a utilizar de nuevo la aplicacin apache2 que puede a o funcionar como servidor HTTP y como servidor de proxy. Los cheros de conguracin de apache2 en r1 estn o a congurados para que funcione como proxy HTTP. Por tanto, para arrancar el proxy HTTP utiliza el mismo comando que para arrancar el servidor HTTP apache2 en r1. Se ha congurado el proxy HTTP para recibir conexiones en el puerto 8080. Para que wget utilice el proxy HTTP congurado en r1, es necesario editar el chero de conguracin .wgetrc o de pc1 para que la l nea http_proxy no aparezca comentada (quita el caracter #). En esta l nea se indica en que mquina y puerto se encuentra el proxy. a Desde pc1 descarga la pgina index.html que se encuentra en pc2. a Observando la/s captura/s de trco que hayas realizado: a 2. Escribe la orden que has utilizado en pc1 para descargar la pgina index.html de pc2 a travs del proxy que a e hay arrancado en pc1. 3. Cuntas conexiones TCP se han establecido para realizar la descarga descrita? Expl a calas. 4. Cmo le indica el proxy de r1 a pc2 que quiere utilizar conexiones no persistentes con HTTP 1.1? o

4.1.

Cach en el proxy e

Nota: Si ha pasado ms de una hora desde que hiciste el apartado anterior, necesitas repetir las descargas del a apartado anterior (sin volver a capturar) antes de realizar este apartado. En pc1 borra los cheros descargados en el apartado anterior para ver cmo se descargan otra vez. o Arranca todos los procesos tcpdump que consideres necesarios para capturar todo el trco HTTP de una nueva a descarga entre pc1 y pc2 que vamos a realizar usando el proxy HTTP de r1. Repite la descarga anterior, para que pc1 obtenga de nuevo la pgina index.html de pc2. a Observando la/s captura/s de trco que hayas realizado: a 1. Cuntas conexiones TCP se han establecido para realizar la descarga descrita? Expl a calas. 2. Es posible observar en el trco que r1 va almacenando en la cach las pginas descargadas? Por qu? a e a e
1 Las razones se encuentran descritas en RFC 2068 y estn relacionadas con que el cliente no puede saber a priori si est contactanto a a con un proxy que trabaja con HTTP 1.0 o con HTTP 1.1 y algunos proxies antiguos que usan HTTP 1.0 no entienden esa cabecera y pueden provocar que la descarga no se realice.

4.2.

Actualizacin de la cach en el proxy o e

Por defecto, el proxy tiene congurado que espere un tiempo mximo de 1 d para que los documentos permaneza a can en la cach del proxy sin consultar al servidor original. Si se realiza una peticin de una pgina de la cach despus e o a e e de ese tiempo mximo, el proxy deber comprobar que los documentos no han cambiado. a a Por este motivo, vamos a cambiar la fecha en el servidor proxy para simular el paso del tiempo. En pc1 borra los cheros descargados en el apartado anterior para ver cmo se descargan otra vez. o Ejecuta la siguiente instruccin para ver la fecha que tiene congurada el proxy r1: o date Ahora vuelve a ejecutar el mismo comando cambiando la fecha, sumando dos d al d actual que tenga as a congurado la mquina y que nos ha devuelto date, de la siguiente forma: a date MMDDHHMM donde: MM: nmero del mes en un ao [01-12] u n DD: nmero de d del mes [01-31] u a HH: nmero de hora en el d [00-23] u a MM: nmero de minuto en la hora [00-59] u Si por ejemplo date nos ha devuelto que tiene congurado el d 28 de noviembre de 2011 y son las 12:30. a Nosotros cambiaremos la fecha al d 30 de noviembre de 2011 a las 12:30 (de esta forma sabremos con seguridad a que los documentos en la cach del proxy han caducado, y se consultar con el servidor nal): e a date 11301230 Arranca todos los procesos tcpdump que consideres necesarios para capturar todo el trco HTTP de una nueva a descarga entre pc1 y pc2 que vamos a realizar usando el proxy HTTP de r1. Repite la descarga anterior, para que pc1 obtenga de nuevo la pgina index.html de pc2. a Observando la/s captura/s de trco que hayas realizado: a 1. Cuntas conexiones TCP se han establecido para realizar la descarga descrita? Expl a calas. 2. Es posible observar en el trco que r1 ya tiene los documentos? Por qu? a e 3. Qu mensajes de HTTP recibe r1 desde el servidor pc2? Por qu? e e

5.
5.1.

Cookies en HTTP
Recepcin en el cliente de cookies procedentes del servidor o

Para este apartado volveremos a utilizar el navegador web en modo texto lynx. Desde pc1 accederemos a un formulario en el servidor que se encuentra en pc2, rellenaremos los campos del formulario y se lo enviaremos al servidor. El servidor al recibir los datos del formulario generar unas cookies que le a enviar al cliente. a Arranca en pc2 el servidor web Apache2, si no estuviera arrancado ya. Arranca tcpdump para capturar todos los paquetes relacionados con la descarga que vas a realizar a continuacin o entre pc1 y pc2. En pc1 arranca el navegador web lynx de modo que se descargue el formulario form3.html de pc2: lynx http://pc2.emp2.net/form3.html Rellena el campo Nombre, muvete con el tabulador hasta el campo Apellido, muvete con el tabulador hasta e e el campo Enviar, pero a n NO env el formulario. u es 6

Antes de enviar el formulario consulta las cookies que conoce el navegador web lynx. Para ello pulsa <Ctrl+k>. Vers en la parte inferior de la ventana de terminal que la jarra de cookies est vac (es decir, que el navegador a a a an no tiene ninguna cookie). u Pulsa tecla ahora la tecla <Enter>. Esto provocar el env de los datos al servidor, que tratar dichos datos y a o a construir una pgina a partir de los mismos, devolvindosela al cliente. a a e Junto con esa pgina de respuesta, el servidor habr enviado alguna cookie. Pulsa <Ctrl+k> otra vez para ver a a cmo el navegador ha recibido ya esas cookies. Sal del navegador pulsando la letra q y despus conrma que o e quieres salir de lynx con la letra y. Interrumpe la captura y anal zala. Responde a las siguientes preguntas: 1. Busca en la captura el segmento donde el cliente le env los datos del formulario al servidor e indica a qu mtodo est utilizando el cliente. e e a 2. Indica cmo se llama el programa del servidor que va a recibir esos datos. o 3. Busca en la captura el segmento donde el cliente le env los datos del formulario al servidor e indica si se a est enviando alguna cookie. En caso armativo identica cules y escribe todos sus campos. a a 4. Busca en la captura el segmento donde el servidor env la respuesta al cliente e indica si se estn enviando a a cookies. En caso armativo identica cules y escribe todos sus campos. a 5. El navegador lynx est congurado para guardar las cookies que recibe en el chero de nombre .lynx_cookies. a Mira el contenido de dicho chero. Identica las cookies almacenadas, comparando el contenido del chero con el contenido del mensaje de respuesta del servidor que observaste en la captura.

5.2.

Env de cookies del cliente al servidor o

Para este apartado volveremos a utilizar el navegador web en modo texto lynx. Desde pc1 accederemos a pginas de servidores web, y veremos cundo y cmo pc1 env las cookies. a a o a 5.2.1. Peticin de pc1 a pc2 o

Arranca de nuevo tcpdump para capturar todos los paquetes relacionados con la descarga que vas a realizar a continuacin entre pc1 y pc2. o En pc1 arranca el navegador web lynx de modo que se descargue la siguiente pgina de pc2: a lynx http://pc2.emp2.net/cgi-bin/reconocer.pl Vers que, pese a ser una nueva ejecucin del navegador, el servidor recuerda los campos de nombre y apellidos a o introducidos en la sesin anterior. o Interrumpe la captura y anal zala. Responde a las siguientes preguntas: 1. En el segmento que contiene la peticin que realiza pc1, identica en los campos de cabecera las cookies o enviadas. Observa que se env las dos cookies en una unica l an nea de cabecera. 2. Por qu se env las 2 cookies? e an 5.2.2. Nueva peticin de pc1 a pc2 o

Arranca de nuevo tcpdump para capturar todos los paquetes relacionados con la descarga que vas a realizar a continuacin entre pc1 y pc2. o En pc1 arranca el navegador web lynx de modo que se descargue la siguiente pgina de pc2: a lynx http://pc2.emp2.net/index.hmtl 1. Antes de ver la captura, crees que se han enviado las dos cookies en la peticin? o 2. Interrumpe la captura y anal zala. Busca el segmento que contiene la peticin que realiza pc1. Identica en los o campos de cabecera las cookies enviadas. Explica lo que ha ocurrido.

5.2.3.

Peticin de pc1 a otro servidor HTTP en r1 o

Arranca en r1 un servidor web Apache2. Para este apartado el navegador lynx no est accediendo a r1 como a si fuera un proxy. Est accediendo a un servidor web que se encuentra instalado en r1, puerto 8080. a Arranca de nuevo tcpdump para capturar todos los paquetes relacionados con la descarga que vas a realizar a continuacin entre pc1 y r1. o En pc1 arranca el navegador web lynx de modo que se descargue la siguiente pgina de r1: a lynx http://r1.com:8080/index.hmtl 1. Antes de ver la captura, crees que se han enviado las dos cookies en la peticin? o 2. Interrumpe la captura y anal zala. Busca el segmento que contiene la peticin que realiza pc1. Identica en los o campos de cabecera las cookies enviadas. Explica lo que ha ocurrido. 5.2.4. Nueva peticin de pc1 a pc2 o

Arranca de nuevo tcpdump para capturar todos los paquetes relacionados con la descarga que vas a realizar a continuacin entre pc1 y pc2. o En pc1 borra el chero que contiene las cookies con la siguiente orden: rm -f .lynx_cookies En pc1 arranca el navegador web lynx de modo que se descargue la siguiente pgina de pc2: a lynx http://pc2.emp2.net/cgi-bin/reconocer.pl 1. Antes de ver la captura, crees que se han enviado las dos cookies en la peticin? o 2. Interrumpe la captura y anal zala. Busca el segmento que contiene la peticin que realiza pc1. Identica en los o campos de cabecera las cookies enviadas. Explica lo que ha ocurrido.

S-ar putea să vă placă și