El servicio Web

Vicente González Ruiz

December 26, 2013

Contents

1 Los servidores Web
2 Los navegadores Web
3 El HTTP (HyperText Transfer Protocol)
4 Los objetos Web y las URL’s
5 El HTML (HyperText Markup Language)
6 La World Wide Web Consortium (W3C)
7 Los proxys Web
8 La cach’e de los navegadores Web
9 El cliente Web Mozilla Firefox
 9.1 Instalaci’on
 9.2 Ejecuci’on
10 Apache
 10.1 Instalaci’on
 10.2 Est’a corriendo el servicio?
 10.3 Configuraci’on
 10.4 Localizaci’on de los objetos Web en el servidor
 10.5 Binding
11 Squid
 11.1 Instalaci’on
 11.2 Configuraci’on
 11.3 Utilizaci’on
12 An’alisis de las interacciones Web
 12.1 An’alisis de una interacci’on Web b’asica
 12.2 An’alisis de una interaci’on Web condicional
 12.3 An’alisis de una interacci’on Web que transmite un objeto “largo”
 12.4 An’alisis de una interacci’on Web con objetos empotrados
 12.5 An’alisis del funcionamiento de Squid

La World Wide Web (tambi’en llamada WWW o simplemente “la Web”) es un sistema de informaci’on (actualmente enorme, posiblemente el m’as grande de la historia) basado en millones de p’aginas Web distribuidas por Internet. Esta informaci’on es servida bajo demanda por los servidores Web y consultada por los usuarios a trav’es de los clientes (tambi’en llamados navegadores) Web.

1 Los servidores Web

Un servidor Web es un servicio que proporciona acceso a objetos Web alojados en un host con acceso a Internet. Los servidores Web aceptan peticiones (generalmente a trav’es del puerto 80) de los clientes Web.

Existen muchos servidores Web. Aqu’i mostramos una lista con algunos de ellos: CERN httpd (http://www.w3.org/Daemon), Apache (http://httpd.apache.org) y Microsoft Internet Information Server (http://www.microsoft.com/WindowsServer2003/iis/default.mspx).

2 Los navegadores Web

Un navegador es la parte cliente de la Web. Cada vez que utilizamos uno y descargamos una p’agina estamos realizando una petici’on HTTP a un servidor Web, y ’este nos contesta con una respuesta HTTP que contiene el objeto Web solicitado.

Inicialmente los navegadores Web s’olo pod’ian mostrar texto. Sin embargo, actualmente existen muchos tipos de objetos Web que los navegadores son capaces de procesar (como im’agenes, sonidos y v’ideos, programas escritos en Java y Flash, etc.). Esta es una lista de algunos de los navegadores Web m’as famosos: Amaya (http://www.w3.org/Amaya), Epiphany (http://www.gnome.org/projects/epiphany), Galeon (http://galeon.sourceforge.net), Windows Internet Explorer (http://www.microsoft.com/spain/windows/ie/default.mspx), Konqueror (http://konqueror.org), Lynx (http://lynx.browser.org), Mozilla Firefox (http://www.mozilla-europe.org/es/products/firefox), Netscape Navigator (http://browser.netscape.com), Opera (http://www.opera.com), Safari (http://www.apple.com/es/macosx/features/safari) y Shiira (http://hmdt-web.net/shiira/en).

3 El HTTP (HyperText Transfer Protocol)

El HTTP (http://www.w3.org/Protocols) es el protocolo de transferencia de informaci’on b’asico1 en la Web. Fue ideado a principios de los 90 en el CERN (http://www.cern.ch) por Tim Berners-Lee (http://www.w3.org/People/Berners-Lee).

4 Los objetos Web y las URL’s

El nombre com’un para todo lo que es posible transferir a trav’es de la Web se conoce como objeto Web. Por definici’on cada objeto puede ser referenciado a trav’es de una URL (Uniform Resource Locator). En los navegadores Web, las URLs se muestran en la entrada que se sit’ua normalmente en la parte superior de la ventana del navegador.

5 El HTML (HyperText Markup Language)

El HTML (http://www.w3.org/MarkUp) es el lenguaje en el que est’an escritas las p’aginas Web. En su versi’on m’as b’asica, una p’agina Web es un conjunto de instrucciones HTML que referencian a otros objetos Web.

6 La World Wide Web Consortium (W3C)

La World Wide Web Consortium (W3C) es el organismo internacional encargado de regular el desarrollo de la Web. La Web es el sistema de informaci’on m’as importante de Internet y muchas compa n’ias y grupos de investigaci’on (entre otros) a naden constantemente nuevas funcionalidades. La W3C se encarga (b’asicamente) de que cualquier cliente Web sea capaz de comunicarse con cualquier servidor Web.

7 Los proxys Web

La Web consume un gran porcentaje del ancho de banda de Internet. Un proxy Web que es un tipo especial de servidor Web que funciona como una cach’e de objetos Web y por tanto, instalados en los puntos adecuados, pueden reducir significativamente el consumo de ancho de banda.

El funcionamiento de un proxy Web es bastante simple de entender. Un proxy t’ipicamente es utilizado por los usuarios de una red con suficientemente ancho de banda. Si suponemos que generalmente dichos usuarios van a acceder a un conjunto de objetos Web m’as de una vez en un intervalo de tiempo dado, es m’as eficiente colocar dichos objetos en el proxy Web y acceder a ’el.

En realidad un proxy Web funciona como servidor y como cliente. Cuando un usuario configura su navegador Web para utilizar un proxy Web y accede a un objeto Web a trav’es de su URL original (que referencia el objeto en el servidor Web, no en el proxy Web), en realidad accede (siempre) al proxy Web. En el caso m’as simple, el proxy Web entonces busca el objeto en su cach’e y si lo encuentra “fresco”2 , se lo sirve al navegador Web cliente. N’otese que en este contexto el proxy Web est’a funcionando como un servidor Web.

Pero, qu’e ocurre cuando el proxy Web no contiene el objeto Web solicitado? Entonces el proxy Web act’ua como un cliente Web e intenta acceder al objeto Web a trav’es de su URL original. Cuando lo consigue, actualiza su cach’e y lo env’ia al navegador Web del usuario. Si lo tiene entonces simplemente pregunta al siguiente servidor de la jerarqu’ia Web (que podr’ia ser otro proxy Web) si el objeto que contiene est’a realmente fresco y puede servirlo o si por lo contrario est’a obsoleto y debe reclamarlo antes de servirlo.

Finalmente indicar que, aunque no configuremos nuestro navegador Web para utilizar un proxy Web, es probable que lo estemos utilizando. Muchos ISP colocan proxys Web transparentes para reducir el tr’afico Web a trav’es de su red.

Existen decenas de implementaciones diferentes de proxys Web. Sin embargo el m’as utilizado es, con diferencia, Squid (http://www.squid-cache.org).

8 La cach’e de los navegadores Web

El tema del ahorro de ancho de banda es una cuesti’on fundamental, y no s’olo para los administradores de las redes. Por este motivo, la mayor’ia de los navegadores Web implementan su propia cach’e con el objeto de reducir el tr’afico. As’i, cuando accedemos a un objeto, el navegador primero comprueba si tiene una copia del mismo en su cach’e y si este est’a “fresco”3 , entonces el navegador visualiza el objeto sin necesidad de descargarlo de Internet.

9 El cliente Web Mozilla Firefox

Mozilla Firefox es un navegador Web que ha sido desarrollado por Mozilla Corporation (http://www.mozilla.org/reorganization) y cientos de voluntarios, siendo, junto con Microsoft Internet Explorer y Apple Safari, uno de los navegadores m’as utilizados. Adem’as, est’a disponible pr’acticamente para todos los sistemas operativos con entorno gr’afico y gracias a que se distribuye en c’odigo fuente es considerado, por muchos (y entre ellos el autor de este texto) como el navegador m’as seguro que existe.

9.1 Instalaci’on

Debian’s:
 
root# apt-get install firefox

Red Hat’s:
 
root# yum install firefox

Gentoo’s:
 
root# emerge firefox

9.2 Ejecuci’on

usuario$ firefox &

10 Apache

Apache es un servidor Web. De hecho, es el servidor Web m’as difundido actualmente (http://news.netcraft.com/archives/web\_server\_survey.html). Si a esto sumamos que la Web es la aplicaci’on m’as difundida en Internet, podemos asegurar que Apache es el servidor m’as extendido de la historia.

10.1 Instalaci’on

Debian’s:
 
root# apt-get install apache2

Red Hat’s:
 
root# yum install httpd

Gentoo’s:
 
root# emerge apache

10.2 Est’a corriendo el servicio?

Si tras lanzar:

usuario$ firefox http://localhost &

se carga un objeto Web, entonces la instalaci’on ha sido un ’exito.

10.3 Configuraci’on

El directorio:

Debian’s:
 
/etc/apache2/

Red Hat’s:
 
/etc/httpd/

Gentoo’s:
 
/etc/apache2/

contiene una serie de ficheros y directorios. El fichero de configuraci’on principal es apache2.conf. El resto de ficheros de configuraci’on son cargados desde ’este. Entre los directorios encontramos los que indican qu’e m’odulos hay disponibles y qu’e m’odulos hay habilitados (veremos m’as tarde qu’e son los m’odulos), as’i como qu’e sites hay disponibles y habilitados (esto est’a relacionado con los virtual hosts, m’as tarde tambi’en hablaremos de esto).

Cada vez que Apache es ejecutado (o re-ejecutado) se leen los ficheros de configuraci’on que est’an bastante bien documentados. Dichos ficheros se organizan en secciones que contienen un conjunto de directivas. Cada directiva debe escribirse en una ’unica l’inea. Veamos c’omo controlar algunas de las posibilidades de Apache modificando dichas directivas y el contenido de los directorios de configuraci’on.

10.4 Localizaci’on de los objetos Web en el servidor

La directiva DocumentRoot define el directorio que contiene los objetos Web del servidor. Dicha directiva cuando no se declara, tiene el siguiente valor por defecto:

Debian’s:
 
/var/www

Red Hat’s:
 
/var/www/html

Gentoo’s:
 
/var/www/localhost/htdocs

Apache adem’as puede servir los objetos que se colocan en el directorio public_html de los usuarios. Por ejemplo, para acceder al directorio public_html del usuario “alumno” en la m’aquina local deber’imos utilizar la URL:

http://localhost/~alumno

Para conseguir esto debemos hacer lo siguiente:

  1. Cargar el m’odulo “userdir”:4 En este caso necesitamos cargar el m’odulo “userdir” (si es que no est’a ya cargado).
    # Comprobamos si el m’odulo "userdir" est’a cargado  
    root# apache2ctl -M  
    Loaded Modules:  
     core_module (static)  
     log_config_module (static)  
     :  
     status_module (shared)  
    Syntax OK  
     
    # Esto tambi’en puede hacerse mostrando el contenido del directorio:  
    root# ls -l /etc/apache2/mods-enabled/  
    total 0  
    lrwxrwxrwx 1 root root 40 2007-01-08 18:51 actions.load ->\  
     /etc/apache2/mods-available/actions.load  
    lrwxrwxrwx 1 root root 28 2007-01-03 16:03 alias.load ->\  
     ../mods-available/alias.load  
    :  
    lrwxrwxrwx 1 root root 29 2007-01-03 16:03 status.load ->\  
     ../mods-available/status.load  
    # Aunque aqu’i s’olo aparecer’ian los m’odulos de tipo "shared",  
    # que no se instalan por defecto en el servidor  
     
    # Si no lo est’a, configuramos Apache para que lo carge  
    root# a2enmod userdir  
     
    # Forzamos a Apache a leer todos los m’odulos  
    root# echo "ServerName localhost" >> /etc/apache2/apache2.conf  
    root# /etc/init.d/apache2 force-reload

  2. Crear el directorio que almacena los objetos Web:
    # Creamos el directorio  
    alumno$ mkdir public_html  
     
    # Comprobamos que tenga premisos de lectura y de acceso  
    alumno$ ls -la public_html/  
    total 8  
    drwxr-xr-x  2 alumno alumno 4096 2007-01-13 13:27 .  
    drwxr-xr-x 14 alumno alumno 4096 2007-01-13 13:27 ..  
     
    # Copiamos un fichero con un objeto Web  
    alumno$ cp /var/www/index.html public_html  
     
    # Comprobamos que tenemos acceso a dicho fichero  
    alumno$ firefox http://localhost/~alumno &

Ejercicio 1: Habilite Apache para que los usuarios puedan publicar objetos Web en sus directorios public_html. Compruebe que el servicio funciona correctamente.

10.5 Binding

Apache por defecto escucha en el puerto 80 a trav’es de todos los interfaces de red de los que dispone el host. Este comportamiento puede modificarse para:

Escuchar en un puerto distinto del 80:
 
Esto se hace a trav’es de la directiva Listen. Ejemplo:
# Usando un editor de ficheros ASCII, buscar en el fichero de  
# configuraci’on de Apache la directiva "Listen 80" y cambiarla por  
# "Listen 8080". Si dicha directiva aparece en el fichero  
# "/etc/apache2/ports.conf", esto puede hacerse tambi’en con los  
# siguientes comandos:  
root# sed "s/80/8080/g;" /etc/apache2/ports.conf >\  
 /etc/apache2/ports.conf.new  
root# mv /etc/apache2/ports.conf.new /etc/apache2/ports.conf  
# Ojo que es posible que adem’as haya que modificar alg’un fichero extra!  
# L’eanse detenidamente los comentarios en "/etc/apache2/ports.conf"  
# acerca de esta posibilidad.  
 
# Re-iniciamos Apache.  
root# /etc/init.d/apache2 restart  
 
# Comprobamos el cambio.  
alumno$ firefox http://localhost:8080 &  
 
# Deshacemos el cambio.  
root# sed "s/8080/80/g;" /etc/apache2/ports.conf >\  
 /etc/apache2/ports.conf.new  
root# mv /etc/apache2/ports.conf.new /etc/apache2/ports.conf  
 
# Reiniciamos Apache  
root# /etc/init.d/apache2 restart

Ejercicio 2: Realice las modificaciones oportunas para que Apache escuche en el puerto 8080 y compruebe que realmente es as’i. Finalmente deshaga dichas modificaciones y compruebe que Apache vuelve e escuchar en el puerto 80.

Escuchar en m’as de un puerto:
 
Ejemplo:
root# cat >> /etc/apache2/ports.conf << EOF  
Listen 8080  
EOF  
 
# Reiniciamos Apache  
root# /etc/init.d/apache2 restart  
 
# Comprobaci’on  
alumno$ firefox http://localhost:80 &  
alumno$ firefox http://localhost:8080  
 
# Desahacemos el cambio.  
root# sed "s/Listen 8080//g;" /etc/apache2/ports.conf >\  
 /etc/apache2/ports.conf.new  
root# mv /etc/apache2/ports.conf.new /etc/apache2/ports.conf  
 
# Reiniciamos Apache  
root# /etc/init.d/apache2 restart

Ejercicio 3: Realice las modificaciones oportunas para que Apache escuche simultaneamente en los puertos 80 y 8080, y compruebe que realmente es as’i. Finalmente deshaga dichas modificaciones.

Escuchar por diferentes direcciones IP y mostrando diferentes objetos Web:
 
... en funci’on de la dirección IP de entrada de las peticiones al servidor. Aunque no es muy frecuente, s’i que es posible instalar en un host m’as de un adaptador de red, cada uno configurado con una dirección IP distinta. En este contexto se puede configurar Apache para que sirva diferentes objetos Web en funci’on del adaptador por el que recibe las peticiones. A esta cualidad de Apache se le llama IP-based Virtual Hosting. Para ver un ejemplo nos vamos a aprovechar de que el host con el que estamos trabajando tiene asignadas dos direcciones IP diferentes, una para localhost y otra para el nombre de la m’aquina, lab-redes por ejemplo.
# Comprobamos la primera direcci’on IP.  
alumno$ ping -c 1 localhost  
PING localhost (127.0.0.1) 56(84) bytes of data.  
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.739 ms  
 
--- localhost ping statistics ---  
1 packets transmitted, 1 received, 0% packet loss, time 0ms  
rtt min/avg/max/mdev = 0.739/0.739/0.739/0.000 ms  
 
# Comprobamos la segunda (n’otese que ahora es .1.1)  
alumno$ ping -c 1 lab-redes  
PING lab-redes.localdomain (127.0.1.1) 56(84) bytes of data.  
64 bytes from lab-redes.localdomain (127.0.1.1): icmp_seq=1 ttl=64 time=0.048 ms  
 
--- lab-redes.localdomain ping statistics ---  
1 packets transmitted, 1 received, 0% packet loss, time 0ms  
rtt min/avg/max/mdev = 0.048/0.048/0.048/0.000 ms  
 
# A~nadimos el host virtual.  
root# cat >> /etc/apache2/apache2.conf << EOF  
 
<VirtualHost lab-redes>  
  DocumentRoot /var/www/lab-redes/  
</VirtualHost>  
EOF  
 
# Creamos el nuevo "site".  
root# mkdir /var/www/lab-redes  
 
# Metemos dentro un objeto.  
root# cp /var/www/index.html /var/www/lab-redes/  
 
# Lo cambiamos un poco:  
root# sed "s/It works/Funciona/g;" /var/www/lab-redes/index.html >\  
 /var/www/lab-redes/index.html.new  
root# mv /var/www/lab-redes/index.html.new /var/www/lab-redes/index.html  
 
# Reiniciamos Apache  
root# /etc/init.d/apache2 restart  
 
# Funciona?  
alumno$ firefox localhost &  
alumno$ firefox lab-redes

Ejercicio 4: Realice las anteriores configuraciones y compruebe que funcionan.

Escuchar en una ’unica dirección IP, pero mostrando diferentes objetos:
 
... en funci’on del alias del servidor que utiliza el cliente. El DNS tiene la posibilidad de asignar m’as de un nombre a una dirección IP. A uno de estos nombres se le conoce como nombre can’onico y al resto como aliases. Aprovech’andonos de esta posibilidad, el servidor Apache puede servir un conjunto de objetos Web diferente en funci’on el alias que est’a usando el cliente para reclamar los objetos al servidor.5 De esta forma parecer’a que estamos accediendo a un servidor ejecutado en otra m’aquina diferente, cuando en realidad estamos utilizando el mismo. A esta posibilidad se le conoce como Name-based Virtual Hosting. Un ejemplo:
# A~nadimos un alias del host en el DNS.  
root# sed \  
"s/127.0.1.1\tlab-redes.localdomain\tlab-redes/127.0.1.1\  
\tlab-redes\.localdomain\tlab-redes\talias_lab-redes/g"\  
 /etc/hosts > /etc/hosts.new  
root# mv /etc/hosts.new /etc/hosts  
 
alumno$ ping -c 1 alias_lab-redes  
PING lab-redes.localdomain (127.0.1.1) 56(84) bytes of data.  
64 bytes from lab-redes.localdomain (127.0.1.1): icmp_seq=1 ttl=64 time=0.060 ms  
 
--- lab-redes.localdomain ping statistics ---  
1 packets transmitted, 1 received, 0% packet loss, time 0ms  
rtt min/avg/max/mdev = 0.060/0.060/0.060/0.000 ms  
 
# A~nadimos el host virtual.  
root# cat >> /etc/apache2/apache2.conf << EOF  
 
NameVirtualHost alias_lab-redes  
<VirtualHost alias_lab-redes>  
  DocumentRoot /var/www/alias_lab-redes/  
</VirtualHost>  
EOF  
 
# Si esto no fuciona, probar con:  
cat >> /etc/apache2/apache2.conf << EOF  
NameVirtualHost *:80  
 
<VirtualHost *:80>  
ServerName lab-redes  
DocumentRoot /var/www  
</VirtualHost>  
 
<VirtualHost *:80>  
ServerName alias_lab-redes  
DocumentRoot /var/www/alias_lab-redes  
</VirtualHost>  
EOF  
 
# Creamos el nuevo "site".  
root# cp -rav /var/www/lab-redes/ /var/www/alias_lab-redes  
 
# Lo cambiamos un poco:  
root# sed "s/Funciona/Funciona de nuevo/g" /var/www/\  
alias_lab-redes/index.html\  
 > /var/www/alias_lab-redes/index.html.new  
root# mv /var/www/alias_lab-redes/index.html.new\  
 /var/www/alias_lab-redes/index.html  
 
# Reiniciamos Apache  
root# /etc/init.d/apache2 restart  
 
# Funciona?  
alumno$ firefox alias_lab-redes &

Ejercicio 5: Realice las anteriores configuraciones y compruebe que funcionan.

11 Squid

Squid (http://www.squid-cache.org/) es un proxy Web6 que se distribuye en c’odigo fuente (bajo la licencia GNU).

11.1 Instalaci’on

Debian’s:
 
root# apt-get install squid

Red Hat’s:
 
root# yum -y install squid httpd

Gentoo’s:
 
root# emerge squid

11.2 Configuraci’on

Por defecto, Squid funciona como un proxy Web escuchando en el puerto 3128, pero no atiende a ning’un cliente.

Ejercicio 6: Aunque es una configuraci’on muy abierta, modifique el fichero de configuraci’on de Squid para que escuche a cualquier host. Para ello debe comentar la l’inea que dice “http_access deny all” y escribir otra que diga “http_access allow all”. Esto es suficiente para nosotros y por tanto, no entraremos en detalle sobre el resto de opciones. Para m’as informaci’on, el fichero de configuraci’on est’a debidamente autocomentado.

11.3 Utilizaci’on

Para usar Squid es necesario modificar la configuraci’on de nuestro navegador:

Mozilla Firefox 1.5
Preferencias -> General -> Configuraci’on de Conexi’on -> Configuraci’on manual del proxy. Donde pone Proxy HTTP: poner la dirección IP del host que sirve el proxy y el puerto 3128.
Mozilla Firefox 2.0
Herramientas -> Opciones -> Avanzado -> Red -> Configuraci’on manual del proxy. Donde pone Proxy HTTP: poner la dirección IP del host que sirve el proxy y el puerto 3128.
Microsoft Explorer
Herramientas -> Opciones de Internet -> Conexiones -> Configuraci’on de LAN -> Usar un servidor proxy para la LAN: poner la dirección IP del host que sirve el proxy y el puerto 3128.
Iceweasel
Editar -> Preferencias -> avanzado -> Conexi’on/Configuraci’on: Poner la dirección IP del host que sirve el proxy y el puerto 3128.

Ejercicio 7: Configure su navegador para utilizar el proxy Web que acaba de instalar. Compruebe que puede navegar. Finalmente deshaga dichos cambios en el navegador, pero no desinstale el proxy.

12 An’alisis de las interacciones Web

En esta secci’on vamos a analizar el protocolo HTTP usando la aplicaci’on Wireshark.

12.1 An’alisis de una interacci’on Web b’asica

La interacci’on Web b’asica transfiere un objeto Web por primera vez desde un servidor Web hasta un cliente Web.

  1. Ejecute Wireshark (recuerde, como root) y col’oquelo en modo de captura a trav’es del interface, eth0 por ejemplo.
  2. Ejecute un navegador Web (firefox, preferiblemente) y acceda al objeto Web http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file1.html.
  3. Cuando el objeto Web haya sido mostrado por el navegador, detenga la captura de paquetes. Deber’ia ver (al menos) dos paquetes HTTP, un GET y un OK.

Ejercicio 8: Qu’e versi’on del HTTP est’a usando su navegador? Y el servidor?

Ejercicio 9: Qu’e idiomas acepta el navegador?

Ejercicio 10: Cu’al es la dirección IP del host que ejecuta el navegador? Cu’al es la dirección IP del host que ejecuta el servidor?

Ejercicio 11: Cu’al fue el c’odigo de estado retornado por el servidor?

Ejercicio 12: Cu’anto tiempo ha pasado desde que el GET fue emitido hasta que el OK fue recibido?

Ejercicio 13: Cu’ando fue por ’ultima vez modificado el objeto que se est’a reclamando al servidor? Est’a este fichero constantemente siendo modificado?

Ejercicio 14: Cu’antos bytes de datos ocupa el objeto Web?

Ejercicio 15: Su navegador ha solicitado, adem’as, un objeto llamado favicon.ico? Qu’e contiene dicho objeto?

12.2 An’alisis de una interaci’on Web condicional

Los navegadores utilizan su cach’e para evitar la descarga de objetos Web cacheados y que est’an frescos (que son iguales a los que tiene el servidor). Para esto se utiliza el GET condicional.

  1. Ejecute su navegador Web y aseg’urese de que la cach’e de ’este est’a vac’ia (En Mozilla Firefox: Edit -> Preferences -> Advanced -> Network -> Cache: Clear Now).
  2. Ejecute el packet sniffer.
  3. Acceda al objeto Web (http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file2.html). El browser deber’ia mostrar un fichero HTML.
  4. Re-acceda al mismo objeto (pulse el bot’on de “Reload current page”).
  5. Detenga la captura de paquetes y use el filtro http.

Ejercicio 16: Qu’e cabecera HTTP identifica al GET condicional? En qu’e GET (de los dos que hay en la lista de paquetes capturados) aparece dicha cabecera? Qu’e diferencia existe entre las dos respuestas que ha enviado el servidor?

12.3 An’alisis de una interacci’on Web que transmite un objeto “largo”

El TCP del emisor fragmenta los mensajes largos. El receptor recibe un conjunto de paquetes, cada uno en un segmento diferente.

  1. Ejecute su navegador Web y borre su cach’e.
  2. Ejecute el packet sniffer.
  3. Reclame el objeto Web http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file3.html que contiene la US Bill of Rights.
  4. Detenga la captura de paquetes y use el filtro http.

Ejercicio 17: Cu’antos mensajes de petici’on HTTP ha generado el navegador Web? Cu’antos objetos Web se han transmitido? Cu’antos segmentos TCP se han recibido?

12.4 An’alisis de una interacci’on Web con objetos empotrados

Cuando accedemos a un objeto Web que a su vez referencia a otros objetos Web, el cliente se encarga de ir reclamando cada uno de ellos.

  1. Ejecute su navegador Web y borre su cach’e.
  2. Ejecute el packet sniffer.
  3. Reclame el objeto Web http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file4.html que contiene un corto fichero HTML con dos im’agenes.
  4. Detenga la captura de paquetes y use el filtro http.

Ejercicio 18: Cu’antos mensajes de petici’on HTTP ha generado el navegador Web?

Ejercicio 19: Qu’e servidor Web ha servido cada imagen?

Ejercicio 20: Cu’antos objetos Web se han transmitido?

Ejercicio 21: Especifique si los distintos objetos Web se han descargado en serie o en parelelo e indique por qu’e.

12.5 An’alisis del funcionamiento de Squid

Ejercicio 22: En esta pr’actica ha aprendido a instalar un proxy Web. Realice un experimento que le permita conocer si el proxy Web que acaba de instalar consulta al siguiente servidor en la jerarqu’ia de la Web (otro proxy o el servidor Web original) usando un GET condicional, cuando recibe una petici’on por parte de un cliente Web. Explique en detalle dicho experimento y c’omo ha determinado el anterior comportamiento.