Wireshark Lab: HTTP v7.
0
Suplemento a las redes informáticas: Un enfoque de
arriba hacia abajo, 7ath ed. , J.F. Kurose y K.W.
Ross
"Dime y me olvido. Muéstrame y lo recuerdo. Intimíneme y lo
entiendo." Proverbio chino
© 2005-2016, J.F Kurose y K.W. Ross, Todos los derechos
reservados
Después de haber mojado los pies con el rastreador de paquetes Wireshark en el
laboratorio introductorio, ahora estamos listos para usar Wireshark para investigar los
protocolos en funcionamiento. En este laboratorio, exploraremos varios aspectos del
protocolo HTTP: la interacción básica GET/response, formatos de mensajes HTTP,
recuperación de archivos HTML de gran tamaño, recuperación de archivos HTML con
objetos incrustados y autenticación y seguridad HTTP. Antes de comenzar estos
laboratorios, es posible que desee revisar la Sección 2.2 del texto.1
1. La interacción básica HTTP GET/response
Comencemos nuestra exploración de HTTP descargando un archivo HTML muy simple -
uno que es muy corto, y no contiene objetos incrustados. Haga lo siguiente:
1. Inicie su navegador web.
2. Inicie el sniffer del paquete de Wireshark, tal y como se describe en el laboratorio
introductorio (pero todavía no comienza la captura de paquetes). Escriba "http"
(solo las letras, no las comillas) en la ventana display-filter-specification, de modo
que solo los mensajes HTTP capturados se mostrarán más adelante en la ventana
de lista de paquetes. (Sólo estamos interesados en el protocolo HTTP aquí, y no
queremos ver el desorden de todos los paquetes capturados).
3. Espere un poco más de un minuto (veremos por qué pronto), y después comenzar
la captura de paquetes de Wireshark.
4. Ingrese lo siguiente a su navegador
[Link] navegador
debe mostrar el archivo HTML de una línea muy
simple.
5. Detenga la captura de paquetes de Wireshark.
1
Las referencias a figuras y secciones son para los 7th edición de nuestro texto, Redes Informáticas, Un
Enfoque de arriba hacia abajo, 7th ed., J.F. Kurose y K.W. Ross, Addison-Wesley/Pearson, 2016.
La ventana de Wireshark debe ser similar a la ventana que se muestra en la Figura 1. Si
no puede ejecutar Wireshark en una conexión de red en vivo, puede descargar un
seguimiento de paquetes que se creó cuando se siguieron los pasos anteriores.2
Figura 1: Wireshark Display después de que [Link]
[Link] haya sido recuperado por el explorador
El ejemplo de la figura 1 muestra en la ventana de lista de paquetes que se capturaron dos
mensajes HTTP: el mensaje GET (desde el explorador al servidor web [Link])
y el mensaje de respuesta del servidor a su explorador. La ventana de contenido de
paquetes muestra los detalles del mensaje seleccionado (en este caso el mensaje HTTP
OK, que se resalta en la ventana de lista de paquetes). Recuerde que puesto que el
mensaje HTTP fue llevado dentro de un segmento TCP, que fue llevado dentro de un
datagrama IP, que fue llevado dentro de una trama Ethernet, Wireshark visualiza la
trama, Ethernet, IP, y la información del paquete TCP también. Queremos minimizar la
cantidad de datos no HTTP mostrados (estamos interesados en HTTP aquí, y vamos a
investigar estos otros protocolos es laboratorios posteriores), así que asegúrese de que las
casillas en el extremo izquierdo de la información De marco, Ethernet, IP y TCP tienen
2
Descargue el archivo zip [Link] y extraiga el
archivo http-ethereal-trace-1. Las trazas en este archivo zip fueron recogidas por Wireshark que se ejecuta
en uno de los ordenadores del autor, mientras se realizan los pasos indicados en el laboratorio de
Wireshark. Una vez que haya descargado el seguimiento, puede cargarlo en Wireshark y ver el seguimiento
usando el Archivo menú desplegable, eligiendo Abierto, y, a continuación, seleccione el archivo de
seguimiento http-ethereal-trace-1. La pantalla resultante debe similar a Figura 1. (La interfaz de usuario de
Wireshark muestra un poco diferente en diferentes sistemas operativos, y en diferentes versiones de
Wireshark).
un signo más o un triángulo que apunta a la derecha (lo que significa que hay
información oculta, no mostrada), y la línea HTTP tiene un signo menos o un triángulo
que apunta hacia abajo (lo que significa que toda la información sobre el mensaje HTTP
se muestra).
(Nota: Debe ignorar cualquier HTTP GET y respuesta para [Link]. Si ve una referencia a
este archivo, es su navegador preguntando automáticamente al servidor si él (el servidor) tiene un
pequeño archivo de icono que debe mostrarse junto a la URL mostrada en su navegador.
Ignoraremos las referencias a este archivo molesto en este laboratorio.).
Al examinar la información en HTTP GET y los mensajes de respuesta, responda a las
siguientes preguntas. Al responder a las siguientes preguntas, debe imprimir los
mensajes GET y de respuesta (consulte el laboratorio introductorio de Wireshark para
obtener una explicación de cómo hacerlo) e indicar en qué parte del mensaje ha
encontrado la información que responde a las siguientes preguntas. Cuando entregue su
asignación, anote la salida para que quede claro en qué parte de la salida está obteniendo
la información para su respuesta (por ejemplo, para nuestras clases, pedimos a los
alumnos que marquen copias en papel con un lápiz o anoten copias electrónicas con texto
en una fuente de color).
1. ¿Su navegador está ejecutando HTTP versión 1.0 o 1.1? ¿Qué versión de HTTP
está ejecutando el servidor?
2. ¿Qué idiomas (si los hay) indica su navegador que puede aceptar en el servidor?
3. ¿Cuál es la dirección IP de su ordenador? ¿Del servidor [Link]?
4. ¿Cuál es el código de estado devuelto desde el servidor a su navegador?
5. ¿Cuándo se modificó por última vez el archivo HTML que está recuperando en el
servidor?
6. ¿Cuántos bytes de contenido se devuelven a su navegador?
7. Al inspeccionar los datos sin procesar en la ventana de contenido del paquete, ¿ve
algún encabezado dentro de los datos que no se muestran en la ventana de lista de
paquetes? Si es así, nombra uno.
En su respuesta a la pregunta 5 anterior, es posible que se haya sorprendido al descubrir
que el documento que acaba de recuperar se modificó por última vez en un minuto antes
de descargar el documento. Esto se debe a que (para este archivo en particular), el
servidor de [Link] está estableciendo la última hora modificada del archivo en
la hora actual y lo está haciendo una vez por minuto. Por lo tanto, si espera un minuto
entre los accesos, el archivo parecerá haber sido modificado recientemente, y por lo tanto
su navegador descargará una copia "nueva" del documento.
2. La interacción HTTP CONDITIONAL GET/response
Recuerde de la Sección 2.2.5 del texto, que la mayoría de los exploradores web realizan
el almacenamiento en caché de objetos y, por lo tanto, realizan un GET condicional al
recuperar un objeto HTTP. Antes de realizar los pasos que se indican a continuación,
asegúrese de que la caché de su navegador esté vacía. (Para ello en Firefox, seleccione
Herramientas->Borrar historial reciente y active la casilla Cachéo, en Internet
Explorer, seleccione Herramientas->Opciones de Internet->Eliminar archivo; estas
acciones eliminarán los archivos almacenados en caché de la caché de su navegador.)
Ahora haga lo siguiente:
Inicie su navegador web y asegúrese de que la caché de su navegador esté
borrada, como se ha explicado anteriormente.
Inicie el rastreador de paquetes de Wireshark
Introduzca la siguiente URL en el [Link] del
navegador. [Link]/wireshark-labs/[Link] navegador
debería mostrar un archivo HTML de cinco líneas
muy simple.
Introduzca rápidamente la misma URL en su navegador de nuevo (o simplemente
seleccione el botón de actualización en su navegador)
Detenga la captura de paquetes de Wireshark, y ingrese "http" en la ventana
display-filter-specification, de modo que solamente los mensajes HTTP
capturados se muestren más adelante en la ventana de la lista de paquetes.
(Nota: Si usted no puede funcionar con Wireshark en una conexión de red viva,
usted puede utilizar la traza del paquete http-ethereal-trace-2 para responder a las
preguntas abajo; véase la nota 1. Este archivo de seguimiento se recopiló mientras
se realizaban los pasos anteriores en uno de los equipos del autor.)
Responda las siguientes preguntas:
8. Inspeccione el contenido de la primera solicitud HTTP GET desde el explorador
al servidor. ¿Ve una línea "IF-MODIFIED-SINCE" en HTTP GET?
9. Inspeccione el contenido de la respuesta del servidor. ¿Devolvió explícitamente el
servidor el contenido del archivo? ¿Cómo lo sabes?
10. Ahora inspeccione el contenido de la segunda solicitud HTTP GET desde su
navegador al servidor. ¿Ve una línea "IF-MODIFIED-SINCE:" en HTTP GET?
Si es así, ¿qué información sigue al encabezado "IF-MODIFIED-SINCE:"?
11. ¿Cuál es el código de estado HTTP y la frase devuelta desde el servidor en
respuesta a este segundo HTTP GET? ¿Devolvió explícitamente el servidor el
contenido del archivo? Explicar.
3. Recuperación de documentos largos
En nuestros ejemplos hasta ahora, los documentos recuperados han sido archivos HTML
simples y cortos. Veamos a continuación lo que sucede cuando descargamos un archivo
HTML largo. Haga lo siguiente:
Inicie su navegador web y asegúrese de que la caché de su navegador esté
borrada, como se ha explicado anteriormente.
Inicie el rastreador de paquetes de Wireshark
Introduzca la siguiente URL en su navegador
[Link]
Su navegador debería mostrar la larga Carta de Derechos de EE. UU.
Detenga la captura de paquetes de Wireshark, y ingrese "http" en la ventana
display-filter-specification, de modo que solamente se mostrarán los mensajes
HTTP capturados.
(Nota: Si usted no puede funcionar con Wireshark en una conexión de red viva,
usted puede utilizar la traza del paquete http-ethereal-trace-3 para responder a las
preguntas abajo; véase la nota 1. Este archivo de seguimiento se recopiló mientras
se realizaban los pasos anteriores en uno de los equipos del autor.)
En la ventana de lista de paquetes, debería ver el mensaje HTTP GET, seguido de una
respuesta TCP de varios paquetes a la solicitud HTTP GET. Esta respuesta de
paquetemúltiple merece un poco de explicación. Recuerde de la Sección 2.2 (consulte la
figura 2.9 en el texto) que el mensaje de respuesta HTTP consta de una línea de estado,
seguida de líneas de encabezado, seguida de una línea en blanco, seguida del cuerpo de la
entidad. En el caso de nuestro HTTP GET, el cuerpo de la entidad en la respuesta es
todo el archivo HTML solicitado. En nuestro caso aquí, el archivo HTML es bastante
largo, y en 4500 bytes es demasiado grande para caber en un paquete TCP. El mensaje
de respuesta HTTP único se divide así en varias partes por TCP, con cada pieza contenida
dentro de un segmento TCP separado (véase la figura 1.24 en el texto). En las versiones
recientes de Wireshark, Wireshark indica cada segmento TCP como un paquete
separado, y el hecho de que la respuesta HTTP única fue fragmentada a través de los
paquetes TCP múltiples se indica por el "segmento TCP de una PDU reensamblada" en
la columna de la información de la visualización de Wireshark. Las versiones anteriores
de Wireshark utilizaban la frase "Continuación" para indicar que todo el contenido de un
mensaje HTTP se había dividido en varios segmentos TCP. ¡Hacemos hincapié aquí en
que no hay ningún mensaje de "continuación" en HTTP!
Responda las siguientes preguntas:
12. ¿Cuántos mensajes de solicitud HTTP GET envió su navegador? ¿Qué número de
paquete en el seguimiento contiene el mensaje GET para la factura o los
derechos?
13. ¿Qué número de paquete del seguimiento contiene el código de estado y la frase
asociados a la respuesta a la solicitud HTTP GET?
14. ¿Cuál es el código de estado y la frase de la respuesta?
15. ¿Cuántos segmentos TCP que contenían datos se necesitaban para llevar la
respuesta HTTP única y el texto de la Carta de Derechos?
4. Documentos HTML con objetos incrustados
Ahora que hemos visto cómo Wireshark muestra el tráfico de paquetes capturados para
archivos HTML grandes, podemos ver lo que sucede cuando su navegador descarga un
archivo con objetos incrustados, es decir, un archivo que incluye otros objetos (en el
ejemplo siguiente, archivos de imagen) que son almacenados en otro(s) servidor(es).
Haga lo siguiente:
Inicie su navegador web y asegúrese de que la caché de su navegador esté
borrada, como se ha explicado anteriormente.
Inicie el rastreador de paquetes de Wireshark
Introduzca la siguiente URL en su navegador
[Link] navegador
debe mostrar un archivo HTML corto condos imágenes. Se hace referencia a estas
dos imágenes en el archivo HTML base. Es decir, las imágenes en sí no están
contenidas en el HTML; en su lugar, las direcciones URL de las imágenes se
encuentran en el archivo HTML descargado. Como se describe en el libro de
texto, su navegador tendrá que recuperar estos logotipos de los sitios web
indicados. El logotipo de nuestro editor se recupera del sitio web de
[Link]. La imagen de la portada de nuestra 5ath edición (una de
nuestras portadas favoritas) se almacena en el servidor [Link]. (Estos
son dos servidores web diferentes dentro de [Link]).
Detenga la captura de paquetes de Wireshark, y ingrese "http" en la ventana
display-filter-specification, de modo que solamente se mostrarán los mensajes
HTTP capturados.
(Nota: Si usted no puede funcionar con Wireshark en una conexión de red viva,
usted puede utilizar la traza del paquete http-ethereal-trace-4 para responder a las
preguntas abajo; véase la nota 1. Este archivo de seguimiento se recopiló mientras
se realizaban los pasos anteriores en uno de los equipos del autor.)
Responda las siguientes preguntas:
16. ¿Cuántos mensajes de solicitud HTTP GET envió su navegador? ¿A qué
direcciones de Internet se enviaron estas solicitudes GET?
17. ¿Puede saber si su navegador descarceló las dos imágenes en serie o si se
descargaron de los dos sitios web en paralelo? Explicar.
5 Autenticación HTTP
Por último, intentemos visitar un sitio web protegido con contraseña y examinemos la
secuencia de mensajes HTTP intercambiados para dicho sitio. La URL
[Link] está
protegida con contraseña. El nombre de usuario es "wireshark-students" (sin comillas), y
la contraseña es "network" (de nuevo, sin comillas). Así que vamos a acceder a este sitio
"seguro" protegido por contraseña. Haga lo siguiente:
Asegúrese de que la caché de su navegador está desactivada, como se ha
explicado anteriormente, y cierre su navegador. A continuación, inicie su
navegador
Inicie el rastreador de paquetes de Wireshark
Escriba la siguiente dirección URL en su navegador
[Link]
[Link] el nombre deusuario y la contraseña solicitados en el cuadro
emergente.
Detenga la captura de paquetes de Wireshark, y ingrese "http" en la ventana
display-filter-specification, de modo que solamente los mensajes HTTP
capturados se muestren más adelante en la ventana de la lista de paquetes.
(Nota: Si usted no puede funcionar con Wireshark en una conexión de red viva,
usted puede utilizar la traza del paquete http-ethereal-trace-5 para responder a las
preguntas abajo; véase la nota 2. Este archivo de seguimiento se recopiló mientras
se realizaban los pasos anteriores en uno de los equipos del autor.)
Ahora examinemos la salida de Wireshark. Es posible que desee leer primero la
autenticación HTTP revisando el material fácil de leer en "Marcode autenticación
deacceso HTTP"en [Link] com/stories/storyReader$2159
Responda las siguientes preguntas:
18. ¿Cuál es la respuesta del servidor (código de estado y frase) en respuesta al
mensaje HTTP GET inicial de su navegador?
19. Cuando el explorador envía el mensaje HTTP GET por segunda vez, ¿qué nuevo
campo se incluye en el mensaje HTTP GET?
El nombre de usuario (wireshark-students) y la contraseña (red) que ha introducido se
codifican en la cadena de caracteres (d2lyZXNoYXJrLXN0dWRlbnRzOm5ldHdvcms)
después del encabezado "Authorization: Basic" en el mensaje HTTP GET del cliente.
Aunque puede parecer que su nombre de usuario y contraseña están cifrados,
simplemente se codifican en un formato conocido como formato Base64. ¡El nombre de
usuario y la contraseña no están cifrados! Para ver esto, vaya a
[Link] e introduzca la cadena
codificada en base64 d2lyZXNoYXJrLXN0dWRlbnRz y descodifica. ¡Voila! Usted ha
traducido de la codificación Base64 a la codificación ASCII, y por lo tanto debe ver su
nombre de usuario! Para ver la contraseña, escriba el resto de la cadena Om5ldHdvcms y
pulse descodificar. Dado que cualquiera puede descargar una herramienta como
Wireshark y paquetes de olfateo (no sólo los suyos) pasando por su adaptador de red, y
cualquiera puede traducir de Base64 a ASCII (¡acaba de hacerlo!), debe quedar claro para
usted que las contraseñas simples en los sitios WWW no son seguras a menos que se
tomen medidas adicionales.
¡No temas! Como veremos en el Capítulo 8, hay maneras de hacer que el acceso www
sea más seguro. Sin embargo, vamos a necesitar claramente algo que va más allá del
marco de autenticación HTTP básico!