Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Introduccin a la prctica
El sistema nanoP2P est formado por un conjunto de pares (peers) y un servidor central (tracker),
como puede apreciarse en la Figura 1.
Protocolo peer-peer
Nivel de Transporte
TCP
1/8
En el protocolo peer-peer, tanto el formato de sus mensajes como la secuencia de envo de los
mismos, ser el especificado por los alumnos en la anterior entrega.
Protocolo peer-tracker
Nivel de Transporte
UDP
Tipo CONTROL
Tipo FILEINFO
Tipo SEEDINFO
FORMATO CONTROL
1b
+-------+
|opcode |
+-------+
El campo opcode, presente en todos los mensajes, especifica el tipo del mensaje en cuestin. Los
tipos de mensajes de los que consta el protocolo se enumeran a continuacin. Este formato ser
utilizado por los mensajes de confirmacin (acknowledgments) que el tracker enva como respuesta
al peer tras recibir mensajes de peticin de alta/baja de una lista de ficheros, as como para el
mensaje de consulta de la lista de todos los ficheros compartidos.
FORMATO FILEINFO
1b
2b
2b
20b
8b
4b
0 .. long.filename-1
+------------------------------------------------------------------------+
|opcode| port | #files | hash | filesize |filename.len| filename
|
+------+------+---------+-------+----------+------------+----------------+
<----------- file info -------------------------->
2/8
El campo port indica el puerto TCP en el que el peer escucha conexiones para servir los ficheros
que comparte. El campo #files indica cuntas entradas file info contiene el mensaje. Cada
entrada file info contiene, a su vez, cuatro campos con los meta-datos de un fichero: hash
SHA-1 del contenido del fichero, su tamao (en bytes), la longitud del nombre y el propio nombre
del fichero. En algunas circunstancias, #files puede ser 0 indicando que la lista de informacin
sobre ficheros que sigue est vaca.
FORMATO SEEDINFO
1b
20b
2b
4b
2b
4b
2b
+------------------------------------------------------------------------+
|opcode|
hash
| #seeds | IP | Port | IP | Port | ...
|
+------+-----------+----------+------+------+------+------+--------------+
<--- seed 1---><---seed 2--->
<-------- seed list ----------------------->
En todo caso, el campo hash identifica el fichero sobre el que se realiza la consulta. El campo
#seeds indica el nmero de semillas que contiene el mensaje, y es posible que tome el valor 0
(lista de seeds vaca) en el caso de que no exista ninguna semilla para el fichero en cuestin en el
momento de la consulta (por ejemplo, porque todos los pares que lo compartan se han
desconectado). Cada seed viene identificado por una direccin de socket, formada por la
combinacin de direccin IP (IPv4) y nmero de puerto TCP en el que dicho seed escucha
peticiones de otros peers.
Los diferentes tipos de mensajes son los siguientes:
Tipo = 1 (ADD_SEED)
Formato del mensaje: FILEINFO
El par solicita al servidor ser aadido como semilla para una lista de ficheros.
Inicialmente, se tratar de la lista de ficheros a compartir que se encuentran en su
directorio local compartido. Posteriormente, este mensaje se utilizar para notificar al
servidor sobre un fichero recin descargado. El servidor actualizar su base de datos:
Para cada fichero de la lista, el servidor comprobar si su hash existe en la BD, en cuyo
caso aadir al par que se conecta a la lista de pares seed_list que comparten dicho
fichero. Si el hash no existe, insertar una nueva tupla <hash, filesize, filename,
seed_list> en la BD, estableciendo en seed_list que el fichero est compartido
nicamente por este par.
Tipo = 2 (ADD_SEED_ACK)
Formato del mensaje: CONTROL
El servidor responde a un mensaje ADD_SEED con el correspondiente ACK.
Tipo = 3 (QUERY_FILES)
Formato del mensaje: CONTROL
El par solicita al tracker la lista de todos los ficheros compartidos en el sistema.
El tracker responde con un mensaje FILE_LIST
Tipo = 4 (FILE_LIST)
Formato del mensaje: FILEINFO
3/8
El tracker responde a una peticin QUERY_FILES de un par con una lista de todos los
ficheros compartidos actualmente en el sistema. El nmero de ficheros viene dado por
#files. Para cada fichero, el tracker informa de su hash, tamao y nombre mediante
los subcampos de file info.
Tipo = 5 (GET_SEEDS)
Formato del mensaje: SEEDINFO
El par consulta al servidor la lista de semillas para un fichero dado, identificado por su
hash. El campo #seeds se debe establecer a 0, indicando que el campo seed list
est vaco.
Tipo = 6 (SEED_LIST)
Formato del mensaje: SEEDINFO
El tracker responde a una peticin GET_SEEDS de un par con la lista de semillas para el
fichero consultado, identificado por su hash. El campo #seeds indica el nmero de
semillas que contiene el mensaje, y es posible que tome el valor 0 en el caso de que no
exista ninguna semilla para el fichero en cuestin en el momento de la consulta (por
ejemplo, porque todos los pares que lo compartan se han desconectado), en cuyo caso la
lista de semillas est vaca. En todo caso, el campo hash identifica el fichero sobre el
que se realiz la consulta. Cada seed contiene la direccin IPv4 de un par que posee el
fichero.
Tipo = 7 (REMOVE_SEED)
Formato del mensaje: FILEINFO
El par solicita al tracker dar de baja una lista de ficheros que ya no desea compartir en la
base de datos. El tracker actualizar su base de datos, eliminando a este peer de la lista
de semillas en todos los ficheros indicados.
Tipo = 8 (REMOVE_SEED_ACK)
Formato del mensaje: CONTROL
El servidor responde con el correspondiente ACK.
4/8
5/8
query
download <hash>
quit
El programa se conectar al tracker utilizando cualquier puerto UDP disponible en la mquina local.
Tras el establecimiento de la conexin, el programa deber escanear el directorio local de
comparticin suministrado como argumento por la lnea de comandos, y enviar la lista de ficheros
compartidos al tracker. A partir de ese momento, el programa quedar a la espera de que el usuario
introduzca un comando.
La respuesta del tracker ante la orden query consistir en todos los ficheros compartidos por todos
los peers conectados en ese instante, incluidos los del peer que realiza la consulta. Ser
responsabilidad de cada peer filtrar dicha lista para evitar mostrar los ficheros que ya posee. La lista
de ficheros obtenida del tracker incluir el nombre de cada fichero, su tamao y hash, que lo
identificar de manera unvoca independientemente de su nombre.
Para descargar un fichero se utilizar el comando download, indicando como argumento el hash del
archivo a descargar, o una parte del mismo, siempre que subcadena del hash identifique de forma no
ambigua el archivo a descargar. El proceso de descarga consta de tres fases:
6/8
4 Detalles de la entrega
El trabajo que los alumnos debern desarrollar es el siguiente:
Programa del peer de nanoP2P.
Documentacin de la prctica.
Instrucciones detalladas:
Las prcticas deben ser realizadas obligatoriamente por grupos de dos personas.
Los grupos debern subir al Aula Virtual, a la tarea denominada Prctica de
implementacin de protocolos P2P un archivo comprimido que contenga un documento
PDF con los siguientes apartados:
Introduccin.
Diseo del protocolo P2P implementado
Detalles sobre los principales aspectos de implementacin (ver Rbrica)
Manual de uso de la aplicacin peer nanoP2P.
Ejemplos de ejecuciones donde se obtengan ficheros de varios peers, incluyendo la
informacin mostrada en la consola de los peers y del tracker en dichos casos.
Conclusiones.
Dicho archivo comprimido incluir el proyecto con la implementacin de todo el cdigo.
Debe ser un proyecto Eclipse listo para ser importado y ejecutado.
Tambin se incluirn dos archivos .jar que permitan ejecutar tanto el programa del tracker
como el programa del peer.
El da tope de entrega coincidir con el del examen de teora de junio, es decir, el da 27 de
Mayo a las 9.00 horas.
7/8
Peso
Sobresaliente (2)
Alcanzado (1)
Insuficiente (0)
Funcionamiento
El programa se ejecuta
correctamente y es capaz
de obtener al menos 2
ficheros distintos a partir
de dos peers antes de salir
de l, incluso en el caso
de que haya errores en el
canal de comunicacin
con el tracker.
El programa no
cumple con la
funcionalidad
indicada para el
nivel
Alcanzado.
Implementacin
Algunas de las
caractersticas en el
apartado de sobresaliente
no se implementan
correctamente.
Muchas de las
caractersticas en
el apartado de
sobresaliente no
se implementan
correctamente.
Formato
El formato de los
El formato de los
mensajes P2P es correcto, mensajes no se
pero no ptimo.
adapta bien al
protocolo.
La informacin mostrada
por consola se genera
correctamente, pero falta
parte de la informacin
solicitada.
La informacin
mostrada por
consola es
claramente
insuficiente.
Correccin de la
documentacin
presentada
El documento est
estructurado aunque
carece de ciertos aspectos
formales. La estructura es
la correcta y carece de
faltas ortogrficas y
gramaticales.
El documento
carece de
estructura y no
est redactado
correctamente.
IMPORTANTE: Durante la entrevista los dos alumnos deben responder con soltura a las preguntas
formuladas, que pueden incluir cambios en el cdigo y establecen claramente la divisin del trabajo.
8/8