Redes de ordenadores

5º de Ingeniería de Telecomunicación. Curso 2002/2003

Práctica 3 - Transferencia de ficheros sobre TCP (1 punto)

En esta práctica se va a implementar un servicio de transferencia de ficheros por Internet y se analizará el tráfico producido por el mismo.

1.- Cliente-Servidor (0.5 ptos)

El sistema se va a basar en un típico paradigma de cliente-servidor empleando TCP como protocolo de transporte. El servidor será la aplicación que esté corriendo permanentemente en las máquinas y sirva los ficheros y el cliente el programa que utilizará el usuario para comunicarse con el servidor mediante el protocolo que se haya definido para este servicio (similar a un servidor de Web y un cliente/navegador de Web).

En el caso que nos ocupa en esta práctica el cliente que hay que desarrollar establecerá una conexión TCP con el servidor en la máquina especificada y sobre dicha conexión podrán intercambiar los comandos y respuestas del protocolo que definiremos a continuación. La funcionalidad que se va a proveer mediante dichos comandos será muy simple. Se podrá:

  1. Listar los ficheros existentes en un directorio de la máquina donde se ejecuta el servidor
  2. Descargar un fichero desde la máquina donde se encuentra el servidor a la máquina donde se ejecuta el programa cliente
De los dos programas que componen este sistema, en esta práctica se implementará solo el cliente. El programa servidor ya se encuentra corriendo en ciertas máquinas del laboratorio. Así pues, el objetivo de esta primera parte de la práctica es construir un programa cliente que sepa comunicarse con el servidor y ofrecernos las funcionalidades mencionadas.

1.1.- Protocolo

El funcionamiento del protocolo se basa en una estructura de Pregunta->Respuesta. Es decir, una vez establecida la conexión TCP, uno de los dos extremos de la comunicación (el cliente) enviará un comando de Pregunta a lo que el otro extremo (el servidor) contestará con una Respuesta y cerrará la conexión. Para enviar un nuevo comando el cliente deberá establecer una nueva conexión con el servidor. El puerto TCP sobre el que acepta la conexión el servidor es el 12215.


Figura 1.- Esquema básico del protocolo

Las aplicaciones cliente y servidor se van a intercambiar comandos siempre siguiendo el formato que se ve en la figura 2. Las PDUs que intercambian tienen siempre una parte de tamaño constante y otra variable que dependerá del tipo de PDU que sea. El significado de los campos es el siguiente:


Figura 2.- PDU

Veamos a continuación el formato para cada tipo de PDU:

PDU de Listado

El comando que llamaremos list tiene como objetivo obtener la lista de los ficheros que hay en un directorio en concreto del servidor. Para ello se envía al servidor una PDU con código 1 y en la parte de datos se incluye una cadena con el PATH completo al directorio cuyo contenido se desea listar (véase un ejemplo en la figura 3).


Figura 3.- PDU de pregunta de Listado

La respuesta que envía el servidor contiene un conjunto de estructuras. Cada una contiene el nombre de un fichero (o directorio u otro tipo) que se ha encontrado así como información de su tipo y tamaño


Figura 4.- PDU de respuesta de Listado

Los campos de cada estructura tienen el siguiente significado:

PDU de Descarga de fichero

El comando que llamaremos get sirve para solicitar al servidor que envíe un cierto fichero al cliente. Para ello se envía al servidor una PDU con código 2 y en la parte de datos se especifica el PATH completo al fichero que se desea descargar (cadena de texto acabada en 0).


Figura 5.- PDU de pregunta de Descarga

La respuesta del servidor contiene la cabecera y los datos del fichero especificado (figura 6).


Figura 5.- PDU de respuesta de Descarga

Errores

Si alguno de los comandos (listado o get) da error en el servidor (por ejemplo porque el directorio/fichero especificado no exista o no se tenga permiso para acceder a él) el servidor devuelve una PDU que contiene sólo la cabecera donde el campo de Código valdrá 0.

1.2.- Especificación del cliente

Como se ha indicado, en esta práctica se debe implementar un programa que haga de cliente de este servicio. El programa será:

clientep3 direccion_servidor comando [...opciones...]
Ejemplo 1:
%> clientep3 tlm11.net.tlm.unavarra.es list /opt3/ro/ficheros/ifacesim/ejemplos 
d [1024] .
d [1024] ..
- [1310] simrouter.c
- [228] Makefile
- [3055] hostenvia.c
En el resultado de un comando list debe haber una línea por cada fichero donde la primera columna será: La segunda columna es el número de bytes del fichero y la tercera el nombre del mismo.

Ejemplo 2:

%> clientep3 tlm11.net.tlm.unavarra.es get /opt3/ro/ficheros/ifacesim/ejemplos/simrouter.c local.c
Transferencia completada con exito. Tiempo total: 12.489000 msegs.
En el caso de comandos get la aplicación indica el tiempo transcurrido en milisegundos desde que se hizo la solucitud hasta que terminó de descargar el fichero.

En cualquiera de los comandos, si se produce un error el programa lo indicará por pantalla y terminará.

Como indicación del funcionamiento del programa clientep3 se deja una versión similar a la que se debe crear en el directorio /opt3/ro/ficheros/bin . Igualmente se coloca el servidor en las máquinas tlm11.net.tlm.unavarra.es, RouterC y pcvw2.maqueta.tlm.unavarra.es

1.3.- Formato de entrega

Los resultados de este apartado de la práctica 3 deben encontrarse dentro del directorio practica3_1 dentro del $HOME del grupo de prácticas. En dicho directorio deben dejar los ficheros fuente y el makefile para obtener con solo hacer make el programa clientep3.

2.- Estudio de tráfico TCP (0.5 ptos)

Es este apartado vamos a analizar las conexiones TCP que establece el programa clientep3. Para ello emplearemos el programa tcpdump (o su versión tcpdump_ro).

Desde una máquina del laboratorio solicite con clientep3 el fichero /bin/ipcalc a la máquina tlm11. Capture estos paquetes con el programa tcpdump_ro, que con la opción -w los guarda en un fichero en disco.

Estudie la evolución de la conexión TCP en esta traza:

Repita el proceso de captura de traza solicitando esta vez el fichero a la máquina pcvw2.maqueta.tlm.unavarra.es desde una de las máquinas que tienen a 1.1.1.3 como router por defecto.

Compare el resultado de la transferencia con el caso anterior.

Nota: No se preocupe si los ficheros creados por tcpdump_ro con la opción -w son del usuario root, mientras estén en uno de sus directorios podrá borrarlos si lo desea. Igualmente no se extrañe si los datos de todos los paquetes TCP en la traza están a 0, el programa tcpdump_ro los cambia a 0 antes de guardarlos en disco.
Nota: Puede ver con tcpdump el contenido de una traza en fichero con la opción -r. Estudie las posibilidades de filtrado de tcpdump. Puede por ejemplo filtrar el contenido de un fichero de traza y crear otro nuevo empleando -r para especificar la traza original, luego las opciones de filtrado y -w para indicar el fichero en que grabar la traza tras aplicar el filtrado.
Nota: Se instalarán algunos programas que puedan facilitar la tarea del análisis de trazas. Se anunciarán en la página de las prácticas de la asignatura.

2.1.- Formato de entrega

Los resultados de este apartado de la práctica 3 deben encontrarse dentro del directorio practica3_2 dentro del $HOME del grupo de prácticas. En dicho directorio deben dejar las dos trazas que se ha pedido capturar. Use las capacidades de filtrado de tcpdump (vea su página del manual) para dejar en esas trazas solo los paquetes de la conexión del programa clientep3.

Escriba una memoria analizando y comparando esas dos trazas. En el guión ya se han comentado algunos temas a tratar. Estudie también la dependencia del tiempo total de transferencia de los ficheros con el retardo entre el cliente y el servidor, así como con el tamaño de los ficheros transferidos. La longitud máxima de la memoria será de 5 páginas y podrá entregarla en formato papel o electrónico. En caso de entregarla en formato electrónico coloque el fichero en el directorio practica3_2 y también envíelo por e-mail a la dirección daniel.morato@unavarra.es. Espere a recibir una confirmación de que no hay problemas leyendo su fichero. Puede emplear formatos HTML, PS, PDF, TXT, RTF, DOC.


Estas páginas pueden sufrir modificaciones frecuentes
Última actualización 10:51 5/5/2003