Servidor de pesaje de páginas Web

 

 

-        Descripción:

 

El objetivo es registrar el número de conexiones y la cantidad total de bytes transferidos a un cliente cuando este solicita una página Web, ya sea mediante un Browser o el programa alimentador.  Para llevar a cabo esta tarea se usa el programa ppw, que es un servidor que corre en aragorn.elo.utfsm.cl, el cual recibe como parámetros de entrada el puerto local de aragorn sobre el que aceptarán conexiones de clientes, además de la IP y puerto del proxy que contactará para satisfacer los requerimientos de páginas Web.

 

Para este caso en particular, el proxy utilizado posee la IP 200.1.28.8 y se usará el puerto 3128. Este proxy se encuentra ubicado en el ATMLAB.

 

-         Salida:

 

Habiendo ejecutado el servidor ppw, después de cada retorno de carro ingresado por teclado, el programa retornará cuatro valores.  Estos son: el número de bytes transferidos desde el último retorno de carro, el número de conexiones nuevas establecidas, el número total de bytes desde el inicio y el número total de conexiones establecidas desde el inicio (se incluyen las que ya no están activas).  Los datos son visualizados en este orden.

 

            El cliente que está navegando a través de su Browser obtendrá la página Web solicitada.  El proceso de comunicación es transparente para él, pero internamente toda la conexión se realiza a través del Proxy.

 

            Cuando se llama al alimentador, este no retorna ningún valor a la consola desde el cual fue llamado.  Su función es solicitar la página a través del servidor ppw para que éste pueda pesarla.

 

 

-         Funcionamiento:

 

 

Este servidor (ppw) realizará una conexión con el proxy por cada conexión que un cliente le solicite.  Su función es traspasar los paquetes TCP de un lado a otro, sin realizar modificaciones sobre ellos.  Así podrá obtener el número de conexiones y la cantidad de bytes transferidos desde el proxy, datos que pueden ser solicitados en cualquier momento vía teclado mediante un retorno de carro.   Esto se logra implementando la comunicación a través de sockets.  Usando la función select se monitorean los descriptores creados, de manera de poder saber cuándo se solicitan nuevas conexiones de parte de los clientes o cuándo el Proxy devuelve las páginas solicitadas.  Como es el servidor ppw el que se encarga de traspasar los datos de un lado a otro, es en este proceso cuando realiza la contabilidad del número de bytes transferidos y el número de conexiones establecidas (ver figura 1).

            Por otro lado, alimentador es un cliente encargado de solicitar la página definida en el URL dado.  Esto lo
realiza contactando al servidor de pesaje, especificando la IP y Proxy, tal como si el servidor actuara como un proxy para él (ver figura 2). A través de este mecanismo el servidor de pesaje obtendrá nuevamente las estadísticas mencionadas
anteriormente.   La implementación del alimentador resulta bastante sencilla.  Se construyó un fichero script, en el cual se hace uso del comando wget para descargar el URL requerido.   Puesto que es necesario pasar primero por Proxy, wget dispone de una variable de ambiente llamada http-proxy, en la cual se le puede especificar la IP y el puerto del host que actuará de Proxy para él (wget -p http_proxy=200.1.17.195:2345).  Con la opción –p se descarga la página,  junto con los demás agregados que la componen, tales como imágenes, sonido, etc.  Por último se usaron las opciones --directory-prefix=./dir y --output-file=logfile, para indicar el directorio y el archivo en que se copiará la página Web y la salida del comando, respectivamente.  Esto con el fin de poder eliminar todo lo que se haya bajado producto del pesaje y dejar “limpio” el directorio de trabajo.

 

 

 

 

-         Consideraciones:

 

Es importante especificar el directorio actual ./ para la ejecución del programa si este no se encuentra en el PATH.
Cuando se abre un cliente para contactar una página Web a través de un Browser, éste debe ser configurado para realizar la conexión a través de Aragorn. Por ejemplo, para el caso de Mozilla (navegador en el cual se probó este programa), los pasos son los siguientes. 
Menú Edit -> Preferences -> Advanced -> Proxies. En el campo HTTP proxies escribir la dirección de  aragorn (200.1.17.195) y en "Port" el puerto que se usará para la conexión (ej. 2345).Este puerto debe ser el mismo que se especifica en el parámetro <puerto_local> al invocar a ppw.

 

La idea de esta tarea es pesar una página Web a la vez, por lo que su uso se debe restringir a abrir una página, esperar que esta sea cargada completamente, y ahí verificar las estadísticas devueltas por ppw.  Después de esto se puede abrir una página Web distinta y repetir el proceso anterior.  El abrir múltiples Browsers con páginas distintas en forma simultánea arrojará resultados inciertos.  Este aspecto no es cubierto por los requerimientos de la tarea.