El servicio Web
Vicente González Ruiz
December 26, 2013
Contents
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’asico
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” ,
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” ,
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:
- Cargar el m’odulo “userdir”:
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
- 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.
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
Web
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.
- Ejecute Wireshark (recuerde, como root) y col’oquelo en modo de captura
a trav’es del interface, eth0 por ejemplo.
- Ejecute un navegador Web (firefox, preferiblemente) y acceda al objeto
Web http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file1.html.
- 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.
- 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).
- Ejecute el packet sniffer.
- Acceda al objeto Web (http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file2.html).
El browser deber’ia mostrar un fichero HTML.
- Re-acceda al mismo objeto (pulse el bot’on de “Reload current page”).
- 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.
- Ejecute su navegador Web y borre su cach’e.
- Ejecute el packet sniffer.
- Reclame el objeto Web http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file3.html
que contiene la US Bill of Rights.
- 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.
- Ejecute su navegador Web y borre su cach’e.
- Ejecute el packet sniffer.
- 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.
- 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.