Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DISEO E IMPLEMENTACIN DE UN
PROTOCOLO DE REDES
PEER-TO-PEER
Fdo:
Fecha:
Fdo:
Fecha:
DISEO E IMPLEMENTACIN DE UN
PROTOCOLO DE REDES
PEER-TO-PEER
A mi madre y a mi hermana.
Dicen que quien convive con lo que admira termina imitndolo, y la dedicacin y
entrega que mostris cada da en vuestro trabajo ha sido para m todo un ejemplo a
seguir, guindome hacia el ocaso de esta etapa.
AGRADECIMIENTOS
Mi ms sincero agradecimiento a Jos Manuel Muoz Berengena, mi director de
proyecto. Una vez terminado el trabajo, slo me queda decir gracias y perdn. Gracias
por todo el tiempo que me has dedicado, por tu ayuda e inagotable paciencia. Perdn
por los momentos en los que el peso del proyecto me ha superado, y has tenido que
transmitirme tu sosiego y tranquilidad.
Deseo expresar mi agradecimiento a David Contreras Brcena, mi coordinador de
proyecto, y a todos los profesores de la Escuela Tcnica Superior De Ingeniera de la
Universidad Pontificia Comillas de Madrid por su trabajo realizado durante estos aos
de carrera.
A Pilar Balda, Marta Galn y Marta Lozoya por ese da en el que os sentasteis a
mi lado, regalndome as la oportunidad de conoceros. Gracias por todo vuestro cario
y por los momentos que habis compartido conmigo.
Por ltimo, no quisiera olvidarme de mis amigos Beatriz, Juan y Julio. Aunque ya
sabis lo mucho que os quiero, no est de ms agradeceros el cmo sois y el estar, a
pesar de la distancia, tan cerca de m.
II
RESUMEN
Actualmente existe una gran variedad de clientes de redes peer-to-peer con
diferentes finalidades, telefona por Internet, sistemas de ficheros distribuidos, clculo
cientfico y dems. Probablemente, la finalidad con ms uso sea la de bsqueda y
transferencia de archivos.
Haciendo uso de determinadas aplicaciones que cubren esta finalidad, se puede
comprobar que la bsqueda e intercambio de archivos de las actuales aplicaciones de
redes peer-to-peer estn muy condicionadas al servidor al que el cliente se encuentre
conectado, ya que diferentes conexiones entre distintos servidores producen
diferentes resultados. Por lo tanto, se puede concluir que existe un desequilibrio entre
lo que ofrecen este tipo de aplicaciones y lo que demandan los usuarios. Por este
motivo, el objetivo de este proyecto es el diseo e implementacin de un protocolo
peer-to-peer, que mejore el proceso de bsqueda de los archivos entre los usuarios
que se encuentren conectados a la red. Se entiende por mejora la eliminacin de la
dependencia del proceso de bsqueda al servidor al que el usuario se encuentre
conectado.
Para poder desarrollar el proyecto, es necesario que los servidores compartan la
misma informacin acerca de los archivos y de los clientes que se encuentran
conectados a la red peer-to-peer. Dado el gran nmero de clientes de este tipo de
redes, es inviable que un servidor albergue toda sta informacin, ya que manejara
una gran volumen de datos que adems estara duplicado en el resto de servidores.
Por este motivo, la arquitectura propuesta se basa en la conexin de todos los
servidores a una red IP multicast, para as poder distribuir la informacin por medio de
mensajes, sin la necesidad de almacenarla en la base de datos de cada uno de ellos.
Cuando un cliente de la red peer-to-peer desea realizar una bsqueda de un
determinado archivo, enva una solicitud de bsqueda al servidor al que se encuentra
conectado. El servidor procesa la solicitud, realizando una consulta en su base de
datos, en la que estn registrados todos los archivos de los clientes con los que
mantiene una conexin. Al finalizar la consulta, transmite la solicitud de bsqueda del
III
cliente a la red IP multicast para que todos los servidores, que se encuentran
conectados a esta red, reciban dicha solicitud y consulten en sus bases de datos, al
igual que hizo el primer servidor, para obtener los resultados que satisfacen la
peticin. Una vez consultada la base de datos, se envan los resultados al servidor que
los solicit para aadir esos resultados a los que ya tena. Una vez terminado este
proceso, todos los resultados se envan al cliente que inici el proceso de bsqueda.
Dado que el proyecto realizado tiene caractersticas de un sistema distribuido, el
protocolo se ha implementado bajo el lenguaje de programacin Java, para asegurar la
portabilidad en entornos heterogneos, con hardware y sistemas operativos diversos.
El protocolo implementado aporta una serie de mejoras tanto en los servidores
como en los clientes. El nmero de archivos encontrados en el proceso de bsqueda, el
nmero de comentarios de los usuarios que califican los archivos y el nmero de
fuentes encontradas que tienen disponible el archivo para compartir son mayores, ya
que se elimina la dependencia de la conexin con el servidor. Dado que el nmero de
fuentes encontradas es mayor, se reduce considerablemente el tiempo de
transferencia del archivo, ya que la posibilidad de conexin a un mayor nmero de
pares se incrementa.
Al no existir una dependencia con el servidor, en los clientes no se requiere un
mantenimiento de una lista de servidores en la que elegir sus favoritos y su prioridad
en el proceso de conexin, por lo que se le libera de una tarea innecesaria. Al eliminar
una preferencia de conexin entre un servidor u otro, las conexiones de los clientes
entre los distintos servidores de la red estn ms equilibradas y por lo tanto el reparto
de carga de trabajo entre estos y las solicitudes de bsqueda de un archivo entre los
usuarios de la red estarn ms equilibradas.
En el presente proyecto, se ha realizado un exhaustivo anlisis sobre los sistemas
actuales peer-to-peer de transferencia de archivos, detallando sus caractersticas,
funcionamiento y mejoras con respecto a otros sistemas y, conjuntamente, se ha
introducido el problema de las bsquedas de archivos en este tipo de redes. Sobre esa
IV
ABSTRACT
Currently there is a wide variety of clients on peer-to-peer networks, with
different determinations, such as telephony through internet, distributed file systems,
scientific calculation and so on. Most likely, the determinations most widely used are
search and file transfers.
Using specific applications that cover this determination, it is clear that the
search and exchange of files using the current applications of the peer-to-peer
networks are highly conditioned by the server being used by the client, as different
connections between different servers produce different results. Therefore, one
comes to the conclusion that there is an imbalance between what this type of
applications offers and what the users need. For this reason, the objective of this
project is to design and install a peer-to-peer protocol to improve the search process
of files between the users that are connected to the network. Improvement is
understood to be the elimination of the dependence of the search process to the
server that the user is connected to.
To develop the project, the servers must share the same information on the files,
as well as on the clients that are connected to the peer-to-peer network. Given the
large number of clients on these networks, it is unviable that one server would store all
of this information, as it would handle a large volume of data that would be duplicated
in the rest of the servers. For this reason, the architecture proposed is based on the
connection of all the servers to an IP multicast network, to be able to distribute the
information through messages without the necessity of storing it in the database of
each one.
When a client on the peer-to-peer network wants to initiate a search for a
certain file, he sends a search request to the server he is connected to. The server
processes the request, consulting its database, in which all of the files of the clients
that maintain a connection are registered. When the consulting process is finished, the
search request is transmitted from the client to the IP multicast network so that all of
the servers that are connected to this network receive the request and consult their
VI
database, just like the first server did, to obtain the results that satisfy the request.
Once the database has been consulted, the results are sent to the server that
requested them, to add them to already existing information. Once concluded this
process, all of the results are sent to the client that initiated the search process.
Given that the project carried out has the characteristics of a distributed system,
the protocol has been set up under Java language programming, to assure the
portability in heterogeneous settings, with hardware and several operative systems.
The protocol installed provides a series of improvements in both the servers and
the clients. Since the dependence of the connection with the server is eliminated, the
number of files found in the search process, the number of comments of the users that
describe the files y and the number of sources found that have the file available to
share are greater. Considering that the number of sources found is greater, the time to
transfer the file is reduced, as the possibility of connecting to a larger number of peers
is increased.
Eliminating the dependence with the server, the clients are not required to
maintain a list of servers to choose their favourites and their priority in the connecting
process, saving them from an unnecessary task. Eliminating a connection preference
between one server or another, the connections of the clients between the different
servers of the network are more balanced and, as a result, the distribution of work
load among them, as well as the file search requests among the users of the network,
are more balanced.
In this project, an exhaustive analysis on the current peer-to-peer systems of file
transfers has been carried out, detailing its characteristics, its performance and
improvements over other systems, together with the introduction of the problem of
file searches in this type of network. Using this as a base, the design and installation of
an independent protocol of the server to which the user is connected to have been
carried out.
VII
The system developed could be kept within the structured peer-to-peer systems,
since the exact location of the resources is known, but without the necessity of the
clients maintaining a hash table to calculate where each resource is located, as in the
networks Pastry, CAN o Chord, providing a deterministic search mechanism that
always lets you know where the resource is and when it is on the network, efficiently
channelling the messages.
This project has supplemented some of the deficiencies of the current search
applications and file transfers in peer-to-peer networks, such as the search of sources
or comments of a determined file. Furthermore, other characteristics and functions of
these applications are optimized, such as the previsualization of files in an unloading
state and the procedure of space for temporary files.
VIII
NDICE
1. INTRODUCCIN .................................................................................................. 13
1.1. INTRODUCCIN A LAS REDES PEER-TO-PEER.................................................................... 2
1.1.1. REDES PEER-TO-PEER ................................................................................................ 2
1.1.2. ELEMENTOS DE UNA RED PEER-TO-PEER ................................................................. 4
1.1.3. ARQUITECTURA DE LAS REDES PEER-TO-PEER ......................................................... 5
1.1.4. CLASIFICACIN DE LAS REDES PEER-TO-PEER........................................................... 7
1.1.5. APLICACIONES DE REDES PEER-TO-PEER .................................................................. 9
1.1.6. PROBLEMAS DE LAS REDES PEER-TO-PEER ............................................................. 10
1.2. TECNOLOGAS ................................................................................................................. 11
1.2.1. JAVA ........................................................................................................................ 11
1.2.2. MYSQL ..................................................................................................................... 12
TABLA DE FIGURAS
IDENTIFICADOR
DESCRIPCIN
PGINA
Figura 1
Figura 2
Figura 3
Figura 4
Figura 5
Figura 6
Figura 7
Figura 8
Figura 9
Figura 10
Figura 11
Figura 12
Figura 13
Figura 14
Figura 15
Figura 16
Figura 17
Figura 18
Figura 19
Figura 20
Figura 21
Figura 22
Figura 23
Figura 24
Figura 25
Figura 26
Figura 27
Figura 28
Figura 29
Figura 30
Figura 31
Figura 32
Figura 33
Figura 34
Figura 35
Figura 36
Figura 37
Figura 38
Figura 39
Figura 40
Arquitectura P2P
Arquitectura cliente-servidor
Modelo centralizado
Modelo totalmente descentralizado
Modelo semicentralizado
Arquitectura de Hotline Connect
Arquitectura de Napster
Arquitectura de eDonkey
Clientes de eDonkey
Cantidad de contenido compartido de BitTorrent
Enjambre de BitTorrent
Clientes BitTorrent
Resultados en la conexin con el servidor 212.63.206.35
Resultados en la conexin con el servidor 195.22.108.26
Arquitectura propuesta
Red IP multicast
Contexto general del sistema
Conexiones entre clientes de la red
Capas de la aplicacin cliente
Capas de la aplicacin servidor
Diagrama de dominio del sistema
Diagrama de casos de uso del usuario de la aplicacin cliente
Diagrama de paquetes
Clases del paquete gui
Clases del paquete client
Clases del paquete constants
Clases del paquete util
Clases del paquete packets
Clases del paquete data
Clases del paquete server
Clases del paquete dao
Solicitud de conexin a la red P2P
Solicitud de bsqueda de archivos
Solicitud de bsqueda de comentarios
Solicitud de bsqueda de comentarios
Solicitud de sincronizacin de archivos
Solicitud de desconexin a la red P2P
Solicitud de conexin a la red IP multicast
Solicitud de bsqueda de archivos a la red IP multicast
Solicitud de bsqueda de comentarios a la red IP multicast
2
3
6
6
7
17
18
20
21
27
28
31
37
37
40
42
44
45
48
49
53
54
56
58
59
60
61
62
63
64
65
69
69
70
71
71
72
72
73
74
XI
IDENTIFICADOR
DESCRIPCIN
PGINA
Figura 41
Figura 42
Figura 43
Figura 44
Figura 45
Figura 46
Figura 47
Figura 48
Figura 49
Figura 50
Figura 51
74
75
76
83
83
84
85
86
86
88
89
XII
Captulo 1
Introduccin
Frente a este tipo de redes, se encuentran las que se basan en una arquitectura
cliente-servidor, en la que los clientes solicitan recursos a uno o ms servidores. En
este tipo de arquitectura, segn se aaden ms usuarios a la red, la tasa de
Los aspectos fundamentales que caracterizan una red P2P son los que se
muestran a continuacin.
Escalabilidad. El alcance de las redes P2P es mundial, con un gran nmero de
usuarios potenciales. A diferencia de las redes basadas en una arquitectura
cliente-servidor, cuantos ms usuarios estn conectados a la red, mayor
rendimiento se obtiene.
Descentralizacin. Por definicin, estas redes son descentralizadas y los
usuarios se comportan, simultneamente como clientes y servidores, lo que
hace que ningn nodo sea imprescindible.
Robustez. La naturaleza distribuida y descentralizada de las redes P2P
incrementan la robustez, ya que en el caso de fallo de un nodo, este no es
imprescindible.
Seguridad. Es la caracterstica menos implementada, aunque existen
mecanismos de cifrado de clave, comunicaciones seguras, gestin de
derechos de autor, firmas digitales y dems mtodos de seguridad.
El trmino tasa de transferencia se refiere al nmero de bits que se transmiten durante un tiempo
determinado entre dos dispositivos digitales. Mide la velocidad de transferencia de datos.
El trmino DRM (Digital Rights Management) se refiere al conjunto de tecnologas de control para la
limitacin del uso de medios o dispositivos digitales. Tambin se puede referir a las restricciones
asociadas a instancias especficas de obras digitales o dispositivos.
El trmino escalabilidad se refiere a una propiedad deseable en un sistema, que indica su habilidad
para poder hacerse ms grande sin perder calidad en sus servicios.
4
El trmino robustez se refiere a una propiedad deseable de un sistema, que indica su habilidad para
poder funcionar o continuar funcionando correctamente bajo situaciones inesperadas.
El trmino tabla hash se refiere a una estructura de datos que asocia claves con valores, cuya operacin
fundamental es la bsqueda, permitiendo el acceso a los valores almacenados a partir de una clave
generada.
est cada recurso es calculado mediante una funcin hash6 aplicada sobre la tabla, la
cual indica que par de la red conoce la localizacin del recurso. Algunos ejemplos de
este tipo de redes son Pastry, CAN y Chord.
Este tipo de redes proporcionan un mecanismo de bsqueda determinista, de tal
forma que asegura la localizacin de un recurso siempre y cuando se encuentre en la
red. Adems los mensajes de bsqueda son encaminados de forma eficiente, de tal
forma que el recurso es encontrado en saltos, donde es el tamao de la
red. Sin embargo, estas redes son ineficientes para realizar bsquedas por palabras
clave, ya que el usuario debe conocer el nombre exacto del recurso para poder aplicar
la funcin hash y as poder enrutar la bsqueda de forma eficaz. Adems en este tipo
de redes, los usuarios deben organizar sus tablas hash cada vez que otro usuario se
conecta o desconecta, lo que provoca un proceso bastante complejo y un gran nmero
de mensajes de sincronizacin, lo que puede dar lugar a un colapso de la red.
En las redes P2P no estructuradas, la localizacin de los recursos no est
determinada en pares concretos, sino que a cada nodo se le asignan enlaces
arbitrariamente. No existe garanta alguna de encontrar el recurso, aunque ste est
en la red, ya que la bsqueda no es determinista. Un ejemplo de este tipo de redes es
Gnutella.
Existen distintos mecanismos de bsqueda dentro de las redes no estructuradas,
pero los ms utilizados son el de inundacin y el de paseos aleatorios. En el primero,
cuando un nodo recibe un mensaje de solicitud de bsqueda de un recurso, si no
conoce el recurso buscado, reenva el mensaje a todos los pares con los que tiene una
conexin. El inconveniente de este mtodo de bsqueda es que introduce mucho
trfico en la red. En el segundo mecanismo, los mensajes no se envan a todos los
pares con los que se tiene conexin, sino que slo es enviado a uno ellos elegido
aleatoriamente. El alcance del mensaje est limitado por medio de la utilizacin de un
El trmino funcin hash se refiere a un algoritmo para la generacin de claves que representen de
forma unvoca un determinado valor.
mecanismo basado en TTL7 (Time To Live). Este mtodo introduce mucho menos
trfico en la red que el primero, sin embargo, reduce la probabilidad de encontrar el
recurso debido a la limitacin de la distribucin del mensaje de bsqueda.
Aunque no se han detallado, existen muchas ms clasificaciones de las redes
P2P, atendiendo a su generacin y a sus caractersticas de anonimidad.
1.1.5 APLICACIONES DE REDES PEER-TO-PEER
Aunque, como se ha detallado anteriormente, una mayor capacidad de
almacenamiento y un rpido incremento del ancho de banda disponible han ayudado
al desarrollo de las redes P2P, estos recursos son costosos. Aquellos servicios y
aplicaciones que requieran un uso considerable de estos recursos pueden utilizarse las
redes P2P.
Algunos ejemplos de aplicacin de estas redes son los siguientes.
Sistemas de intercambio de archivos. Posiblemente sea la aplicacin ms
extendida en este tipo de redes. Los propsitos de este tipo de aplicacin son
muy variados, desde el uso particular hasta el mbito educativo. Algunos
ejemplos son LionShare, eDonkey2000 y BitTorrent.
Sistemas de telefona por Internet. Sistemas basados en VoIP8 (Voice over
Internet Protocol) que permite la transmisin en tiempo real de seales de voz
por la Red. Algunos ejemplos de este tipo de aplicacin son Skype y Gizmo5.
Sistemas de archivos distribuidos. Sistema de datos distribuido en los que la
informacin se almacena en nodos de la red y se permite el acceso de otros
pares a la misma. Algunos ejemplos de este tipo de aplicacin son Freenet y
CFS.
Sistemas de P2PTV. Sistemas para la transmisin y difusin de contenidos
audiovisuales a travs de Internet. En este tipo de sistemas, los nodos se
El trmino TTL (Time To Live) se refiere al nmero de veces que puede ser enrutado un paquete antes de
ser descartado o devuelto al origen.
8
El trmino VoIP (Voice over Internet Protocol) se refiere al conjunto de recursos que hacen posible
enviar la voz en forma digital a travs de Internet, utilizando para ello el protocolo IP.
conectan a sus pares para recibir los streams9 de video y audio, en lugar de
conectarse con un servidor central en la televisin basada en IP (Internet
Protocol), IPTV10 (Internet Protocol Television). Algunos ejemplos de este tipo
de aplicacin son SopCast y CoolStreaming.
Sistemas de clculo cientfico. Sistemas que tienen que manejar grandes
cantidades de datos y tienen una gran carga computacional, como es el caso
de sistemas de administracin autnoma para la bioinformtica. Un ejemplo
de este tipo de aplicacin es Chinook.
1.1.6 PROBLEMAS DE LAS REDES PEER-TO-PEER
Como ya se ha detallado anteriormente, uno de los problemas de las redes P2P
radica en el proceso de bsqueda de los nodos. El problema de encontrar un par que
se encuentre conectado a la red P2P es, comnmente, solucionado realizando una
conexin con un servidor, en el que la direccin IP es conocida. Este servidor es el
encargado de mantener una lista con las direcciones de los nodos que se encuentran
conectados a la red.
Otro problema es el de la conexin de pares sin direccin IP pblica. La solucin
que se suele aplicar es la conexin de otro nodo que cumple la funcin de proxy11. El
resto de los pares se conectan a este proxy el cual enva la informacin que llega de
uno al otro. Cualquier nodo que est conectado a la red P2P y tenga una direccin IP
pblica puede ser elegido para que cumpla con el cometido de proxy. En este caso, es
de implementacin obligatoria el desarrollo de mecanismos de seguridad para evitar
que los proxies puedan acceder a la informacin que se comunican dos pares de la red.
El trmino stream se refiere a un elemento software que permite un flujo de informacin entre un
origen y un destino.
10
El trmino IPTV (Internet Protocol Television) se refiere a una tecnologa basada en video streaming de
distribucin de seales de televisin y video, que usa conexiones de banda ancha sobre el protocolo IP.
11
El trmino proxy se refiere a un dispositivo de red que realiza una accin en representacin de un
equipo perteneciente a esa red. Su finalidad ms usual es permitir el acceso a Internet a todos los
equipos de una organizacin.
10
1.2 TECNOLOGAS
En este apartado se realizar una breve explicacin sobre las principales
tecnologas del proyecto y el motivo de su eleccin.
1.2.1 JAVA
Java fue desarrollado en 1990 por Sun Microsystems, como parte de un proyecto
de investigacin para el desarrollo de una amplia variedad de dispositivos de red, con
el fin de que fuera independiente de la arquitectura del dispositivo. El propsito era
crear una nueva plataforma operativa que, adems de ser independiente de la
arquitectura del dispositivo, fuera sencilla, portable, fiable, distribuida y en tiempo
real. Este lenguaje de programacin toma mucha de su sintaxis de otros lenguajes
como C, C++, Eiffel y SmallTalk, pero el modelo de objetos que utiliza es ms simple y
elimina accesos de bajo nivel. El resultado es un lenguaje que se ha mostrado ideal
para desarrollar aplicaciones de usuario final seguras, distribuidas y basadas en red en
un amplio rango de entornos desde los dispositivos de red embebidos hasta los
sistemas de sobremesa e Internet.
Las caractersticas principales de Java [MUO04] son las que se muestran a
continuacin.
Sencillo, orientado a objetos y familiar: Sencillo, para que no requiera
grandes esfuerzos de entrenamiento para los desarrolladores. Orientado a
objetos, porque la tecnologa de objetos se considera madura y es el enfoque
ms adecuado para las necesidades de los sistemas distribuidos y clienteservidor. Familiar, porque aunque se rechaz C++, se mantuvo Java lo ms
parecido posible a C++, eliminando sus complejidades innecesarias, para
facilitar la migracin al nuevo lenguaje.
Robusto y seguro: Robusto, simplificando la gestin de memoria y eliminando
las complejidades de la gestin explicita de punteros y aritmtica de punteros
de C. Seguro para que pueda operar en un entorno de red.
Independiente de la arquitectura y portable: Java est diseado para
soportar aplicaciones que sern instaladas en un entorno de red heterogneo,
11
El trmino ODBC (Open Database Connectivity) se refiere a un estndar de acceso a bases de datos
desarrollado por Microsoft con el objetivo de hacer posible la comunicacin entre una aplicacin y el
sistema gestor de bases de datos.
13
El trmino backend se refiere a un tipo de abstraccin que engloba las diferentes partes finales de un
sistema o proceso.
13
14
Captulo 2
Estado del Arte de
las Aplicaciones
Peer-to-Peer
El trmino UUCP (Unix to Unix Copy) se refiere a un conjunto de programas y protocolos que permiten
la ejecucin remota de comandos y transferencia de archivos, emails y netnews entre los ordenadores de
una red.
16
Hotline se distribua como shareware15 junto con los servicios de IRC bajo una
arquitectura cliente-servidor. Este hecho obligaba a que en caso de que un servidor
cerrase, la descarga se tena que cancelar y empezar de nuevo desde otro servidor del
cual seguir descargando el archivo, ya que no exista ningn otro lugar del cual
descargar el archivo.
Existen varias versiones open source de Hotline que no se basan en el cdigo
original de Hinkley, y que incluyen mejoras al protocolo y al servicio IRC, como IRC
bridge o KDX bridge [HAXI01].
Las aplicaciones de las que constaba Hotline eran las que se detallan a
continuacin.
Hotline Client. La aplicacin que se utilizaba para poder acceder a los usuarios
que ejecutaban la aplicacin servidora conociendo la direccin IP de estos.
Hotline Server. La aplicacin que ejecutaban los clientes para gestionar el
acceso a los recursos.
Hotline Tracker. Un servidor de nombres que mantena las direcciones IP de
17
enlaces
para
identificar
un
archivo
es
la
siguiente.
16
El trmino RIAA (Recording Industry Association of America) se refiere a una asociacin americana que
representa a la industria discogrfica.
19
los
enlaces
para
identificar
un
servidor
es
la
siguiente.
ed2k://|server|IP|PUERTO|/
Deteccin de errores. Divisin de los archivos transmitidos en bloques de
9500 KB generando un hash, por medio del algoritmo MD417, por cada bloque
y luego de la suma del resto, conocido como raz o root, para comprobar los
datos transmitidos y evitar la corrupcin de los bloques.
El funcionamiento de la red era el siguiente. Cuando un cliente se conecta a la
red, se realiza un proceso de handshake entre ste y el servidor, para anunciar los
archivos que se comparten. En el proceso de las bsquedas, el cliente enva la peticin
al servidor, el cual se encarga de buscar el archivo en la informacin que los clientes le
proporcionaron durante el handshake. Cuando la peticin es aceptada, el servidor
establece una conexin entre los dos clientes y comienza la descarga.
El trmino algoritmo MD4 se refiere a un algoritmo de funcin hash diseado Ronald Rivest para el uso
en comprobaciones de integridad de mensajes que produce un identificador de 128 bits.
20
REDES
ANNIMO
LICENCIA
PLATAFORMA
LENGUAJE
aMule
eDonkey
Kad
No
GPL
Windows, Linux
MAC OS
C++
eMule
eDonkey
Kad
No
GPL
Windows
C++
BitTorrent
eDonkey
FastTrack
MLDonkey
Gnutella
Gnutella2
Kad
No
GPL
Windows, Linux
MAC OS
Ocaml
Lphant
BitTorrent
eDonkey
No
Freeware con
Adware
Windows, Linux
MAC OS
C#
Shareaza
BitTorrent
eDonkey
Gnutella
Gnutella2
No
GPL
Windows
C++
TrustyFile
BitTorrent
eDonkey
FastTrack
Gnutella
Gnutella2
Overnet
No
Cdigo
cerrado
Windows
Desconocido
21
22
18
El trmino hashtree se refiere a una estructura de datos que contiene los valores hash de un rbol y
que se utiliza para verificar su contenido.
23
2
2
2
Al terminar el clculo, ambos ratios son comparados y el sistema de crditos
elige el menor como ratio de modificacin al algoritmo de gestin de la cola de
descarga. Existen tres restricciones a este clculo, que son las siguientes.
El ratio de modificacin al algoritmo de gestin de colas es un nmero entre 1
y 10.
Si el total subido es menor que 1 MB, entonces el ratio de modificacin
permanece a 1.
Si el cliente no ha descargado nada, el ratio de modificacin es fijado a 10.
Una excepcin a esta regla se aplica slo cuando un par es asignado como amigo
despus de la agregacin a la lista de amigos del cliente. Esto automticamente asigna
una posicin en la cola de descarga para que se pueda comenzar a descargar,
independientemente de la calificacin de los anteriores ratios. Slo se puede reservar
una posicin para un amigo, para impedir cualquier forma de abuso.
Otra de las caractersticas de distincin es la ofuscacin del protocolo. Esta
funcin evita que las conexiones sean detectadas y, posteriormente, bloqueadas por
los ISPs (Internet Service Provider). La ofuscacin del protocolo es una caracterstica
que hace que eMule encubra su protocolo al comunicarse con un servidor u otros
clientes. Sin ofuscacin, cada comunicacin de eMule tiene una estructura
predeterminada que puede ser fcilmente identificada por un packet sniffer, programa
24
25
26
27
19
El trmino tit for tat se refiere a un estrategia en teora de juegos, propuesta por Anatol Rapoport para
el dilema del prisionero, que consiste en repetir lo que el oponente hizo en la ronda anterior.
28
Los archivos que se distribuyen entre los pares son tratados en bloques,
normalmente, de entre 32 KB y 4 MB. El par aplica una funcin hash, usando el
algoritmo SHA120, y almacenndolo en el archivo torrent. Cuando otro par recibe un
bloque del archivo que se est descargando, se le aplica la funcin hash, y el valor
obtenido es comparado con el almacenado, para comprobar que se encuentra libre de
error. El valor de comprobacin que se encuentra contenido en el archivo torrent,
depende de la versin del protocolo BitTorrent utilizado. Por convencin, los archivos
torrent tiene un apartado llamado anuncio, en el cual se especifica la URL (Uniform
Resource Locator) del servidor de bsqueda, y una seccin de informacin, la cual
contiene los nombres de los archivos, sus tamaos, longitud, y el valor hash SHA1 por
cada uno de los bloques. Toda esta informacin es usada por los clientes para verificar
la integridad de los datos recibidos.
Una vez creado el archivo torrent, este es publicado en algn sitio web o en otra
parte, y registrado en el servidor de bsqueda. El servidor de bsqueda mantiene una
lista de clientes que se encuentran participando sobre el archivo torrent.
Alternativamente, en un sistema descentralizado, cada par acta como un servidor de
bsqueda, caracterstica implementada por clientes como Torrent, BitComet y
KTorrent a travs de mtodos de tablas de hash distribuidas.
A pesar de la eficacia y el alto rendimiento de las transferencias, el protocolo
BitTorrent tiene unas cuantas limitaciones, que se pasaran a detallar a continuacin.
El protocolo no ofrece anonimato a los clientes, haciendo posible que se puedan
obtener las direcciones IP de los clientes que se encuentran en un enjambre. Esto
puede exponer a los usuarios a posibles ataques de agentes externos o propios de la
red.
Un usuario BitTorrent, a menudo, puede decidir dejar el enjambre en cuanto
tenga una copia completa del archivo descargado, a este usuario se le conoce
comnmente con el nombre de leecher o sanguijuela. Si un nmero considerable de
20
El trmino algoritmo SHA1 se refiere a un algoritmo de funcin hash diseado por NIST (National
Institute of Standards and Technology) y NSA (National Security Agency) para el uso en comprobaciones
de integridad de mensajes que produce un identificador de 160 bits.
29
usuarios siguen esta conducta, el nmero de semillas se reduce hasta que llegar a cero
y por lo tanto el archivo desaparece. Algunos sitios web BitTorrent han intentado
solventar este problema mediante el seguimiento de los ratios de subida y descarga de
archivos. En caso de existir una diferencia considerable entre ambos ratios, los clientes
obtendrn velocidades de descarga inferiores hasta que los ratios se compensen.
Ya que el protocolo BitTorrent es open source, al igual que sus clientes, han
proliferado una gran cantidad de clientes basndose en el cdigo original, disponibles
en cualquier plataforma e implementados en una larga lista de lenguajes de
programacin. El cliente oficial de BitTorrent, BitComet, Vuze y Torrent son los ms
populares entre los usuarios de este protocolo.
Algunos clientes, como Torrentflux y TorrentVolve, se pueden ejecutar
directamente desde un servidor, lo que permite a empresas de hosting ofrecer
velocidades superiores a los usuarios. BitLet permite a los usuarios descargar torrents
directamente desde su navegador, usando un applet de Java.
Existen versiones propietarias del protocolo que implementan DRM, como es el
caso de Pando.
Algunos clientes del protocolo BitTorrent son los que se muestran a
continuacin.
NOMBRE
PLATAFORMA
LENGUAJE
TRACKER
ADMITE
DHT
TORRENTS
ACTIVOS
ABC
Windows Linux
Python
No
No
Ares Galaxy
Windows
Delphi
BitComet
Windows
C++
BitTornado
BitSpirit
Ktorrent
Lphant
Windows, Linux
MAC OS
Windows
Linux, MAC OS
Windows, Linux
MAC OS
Python
No
C++
C++
No
No
S
S
8
8
C#
Desconocido
30
Windows, Linux
Ocalm
MAC OS
Linux, MAC OS
C++
Windows
C++
Windows, Linux
Java y SWT
MAC OS
Windows, Linux
C++
MAC OS
No
No
No
No
No
S
8
10
Integrado
Sin lmite
Integrado
NOTA: En la tabla anterior no se han incluido todos los clientes, ya que el tamao
de la tabla habra aumentado considerablemente. Slo se han mostrado los ms
populares.
El sistema de ms reciente aparicin ha sido Omemo, un sistema de
almacenamiento virtual distribuido open source, basado en tablas de hash distribuidas,
distribuido por la firma espaola MP2P Technologies y desarrollado por Pablo Soto.
La diferencia fundamental de Omemo con el resto de los sistemas P2P radica en
que no se comparten archivos, sino espacio libre de almacenamiento. Con el hecho de
aportar parte de espacio al disco, se obtienen dos beneficios a cambio, el primero, el
derecho de escritura persistente en el disco y el segundo, el derecho de lectura de
todos los contenidos del disco. El derecho de escritura es calculado en base a la
cantidad de espacio que se aporta y al tiempo durante el que se contribuye. La
principal novedad es la persistencia, no es necesario que el usuario est conectado
para que los que dispone archivos estn accesibles para el resto de la red. Omemo
ofrece muchas ms novedades, tantas que sus creadores lo denominan P2P 2.0.
Las caractersticas de Omemo son las siguientes [SOTO06].
Persistente. Se puede copiar algo en l, y luego desconectarse. A diferencia de
los P2P actuales, el contenido que se comparte sigue disponible en Omemo
cuando el usuario se desconecta.
31
Se
puede
crear
destruir
carpetas
para
organizar
32
34
35
Captulo 3
Motivacin y
Objetivos del
Proyecto
38
Como ya se detall en el estado del arte, algunas aplicaciones P2P permiten que
los usuarios califiquen la calidad de un archivo mediante la escritura de comentarios
sobre ese determinado archivo para que otros usuarios puedan leerlos, y as saber de
antemano si el archivo tiene la calidad esperada o si est corrupto. El problema es que
para leer los comentarios de un usuario, es necesario el inicio de la descarga de un
archivo y la conexin a usuarios que tenga disponible este archivo para compartir y
que hayan escrito comentario sobre l. Adems, no todos los comentarios de la red
son accesibles ya que en este tipo de aplicaciones se suelen limitar el nmero de
conexiones y por lo tanto, indirectamente, afectan a la cantidad de comentarios a los
que se puede acceder.
Despus de haber analizado y detallado algunas de las carencias de los actuales
clientes de bsqueda y transferencia de archivos de redes P2P, se puede concluir que
existe un desequilibrio entre lo que ofrecen este tipo de aplicaciones y lo que
demandan los usuarios. Por este motivo, el objetivo de este proyecto es el diseo e
implementacin de un protocolo P2P, que mejore el proceso de bsqueda de los
archivos entre los usuarios que se encuentren conectados a la red. Se entiende por
mejora la eliminacin de la dependencia del proceso de bsqueda al servidor al que el
usuario se encuentre conectado, obteniendo de esta forma las siguientes mejoras
tanto en los servidores como en los clientes.
Aumento del nmero de resultados. Al eliminar la dependencia de la
conexin con el servidor, el nmero de archivos encontrados en el proceso de
bsqueda, el nmero de fuentes encontradas que tienen disponible el archivo
para compartir y el nmero de comentarios de los usuarios que califican los
archivos, sern mayores.
Reduccin del tiempo de transferencia del archivo. Dado que el nmero de
fuentes encontradas es mayor, se reducir considerablemente el tiempo de
transferencia del archivo, ya que la probabilidad de conexin a un mayor
nmero de pares se incrementa.
39
40
Captulo 4
Anlisis del
Sistema
43
4.1.3 RESTRICCIONES
No existe ningn tipo de restriccin de tipo econmica, ya que estas no son
considerables en el desarrollo del proyecto.
Sin embargo, s existen restricciones de carcter temporal, ya que el proyecto ha
de ser presentado en Junio del 2009, la planificacin de este est condicionada a esta
fecha.
Con respecto a restricciones tecnolgicas, dado que el lenguaje a utilizado para
la implementacin del protocolo ha sido Java, las mquinas en las que se ejecute tanto
el cliente como el servidor, han de tener instaladas una implementacin de la Mquina
Virtual Java. Con respecto al sistema operativo, al haber elegido un lenguaje
multiplataforma, no existe ninguna restriccin en lo referente al entorno de ejecucin
de la aplicacin.
realizar una bsqueda, enva una solicitud al servidor al que se encuentra conectado. El
servidor procesa la solicitud, consultando en su base de datos, en la que estn
registrados todos los archivos de los clientes con los que mantiene una conexin. Al
finalizar la consulta, transmite la solicitud del cliente a la red IP multicast para que
todos los servidores, que se encuentran conectados a esta red, la reciban y consulten
en sus bases de datos, al igual que lo hizo el primer servidor, para obtener de esta
forma ms resultados que satisfacen la peticin. Una vez consultada la base de datos,
envan los resultados al servidor que los solicit para aadir esos resultados a los que
ya tena. Una vez terminado este proceso, todos los resultados se envan al cliente que
inici el proceso de bsqueda.
El proceso anterior, se realiza tanto para las bsquedas de archivos, como para
las bsquedas de comentarios de los archivos que comparten los clientes, como para
las bsquedas de los clientes que tienen el archivo que el usuario desea descargarse.
Despus de que el cliente obtenga los resultados de los clientes que tienen un
determinado archivo disponible para su transferencia, ste realiza una conexin con
cada uno de ellos para obtener las partes del archivo que necesite.
46
47
Las capas identificadas en el mbito del cliente son las que se muestran a
continuacin.
48
49
estas dos clases est en el uso del protocolo de transporte, mientras Socket hace uso
del protocolo TCP (Transmission Control Protocol), DatagramSocket hace uso de UDP.
TCP proporciona una cantidad considerablemente mayor de servicios a las
aplicaciones que UDP, ya que se trata de un protocolo orientado a conexin, a
diferencia de UDP.
Las principales caractersticas de este protocolo son las que se detallan a
continuacin [GARC05].
Control de flujo. Mediante el uso de ventanas de envo y la identificacin de
paquetes transmitidos, se proporciona un modo para que dos sistemas
cooperen activamente en la transmisin de paquetes para evitar exceso de
flujo y prdida de paquetes y adaptarse a la congestin de la red.
Deteccin y correccin de errores. Mediante una utilidad de cdigo de
paridad,
checksum21,
nmeros
de
secuencia,
confirmaciones
21
El trmino acknowledgement se refiere a un mensaje enviado por el receptor al emisor indicando bien
que ste est listo para recibir una transmisin o que una transmisin fue recibida sin error.
50
El trmino RIPEMD se refiere a un algoritmo de funcin hash diseado por Hans Dobbertin, Antoon
Bosselaers y Bart Preneel para el uso en comprobaciones de integridad de mensajes que produce un
identificador de un archivo de 128 bits.
51
4.3 METODOLOGA
Para la realizacin del proyecto se ha aplicado la metodologa UML (Unified
Modeling Language) en su versin 2.0, ya que se utiliza un lenguaje que permite de
forma grfica visualizar, especificar, construir y documentar un sistema [OMG09].
Adems, ofrece un estndar para describir el modelo de un sistema, incluyendo
aspectos conceptuales como reglas de negocio y funciones del sistema, y aspectos
concretos como expresiones de lenguajes de programacin, modelos de bases de
datos y componentes reutilizables.
4.3.1 DIAGRAMA DE DOMINIO
Un diagrama de dominio muestra los conceptos bsicos del dominio, sus
propiedades ms importantes y las relaciones entre dichos conceptos.
El diagrama de dominio del sistema es el que se muestra a continuacin.
52
53
Conectar a la red
P2P
Buscar archivos en
la red P2P
Buscar comentarios
de un archivo
Eliminar resultados
de una bsqueda
Descargar archivo
de la red P2P
Previsualizar
archivo
Usuario
Aadir comentario
a un archivo
Ver comentarios de
un archivo local
Eliminar comentario
de un archivo local
Recargar archivos
locales
54
55
REGLAS DE NEGOCIO.
- RN01. Prioridad de partes de un archivo. Con la finalidad de que el archivo
pueda ser previsualizado, es necesario que la primera parte, y en algunos
casos la ltima, est completamente descargada. Por este motivo, esta
primera parte tendr mayor prioridad, seguida de la ltima y a
continuacin del resto.
4.3.3 DIAGRAMA DE PAQUETES
Los diagramas de paquetes reflejan la organizacin de los subsistemas en que se
descompone el sistema y las dependencias entre ellos. Representa una visin
fundamental para el control de alto nivel de un sistema.
El diagrama de paquetes es el que se muestra a continuacin.
56
57
58
Las clases del paquete client son las que se muestran a continuacin.
59
Las clases del paquete constants son las que se muestran a continuacin.
60
Las clases del paquete util son las que se muestran a continuacin.
61
Las clases del paquete packets son las que se muestran a continuacin.
62
Las clases del paquete data son las que se muestran a continuacin.
63
Las clases del paquete server son las que se muestran a continuacin.
64
Las clases del paquete dao son las que se muestran a continuacin.
65
EXTENSION: varchar(6)
TYPE: varchar(8)
TABLA SHARES.
- Descripcin: contiene los archivos de los usuarios conectados a la red.
- Relacin con: ninguna tabla.
-
TABLA CLIENTS.
- Descripcin: contiene la informacin de los clientes conectados a la red.
- Relacin con: COMMENTS.
- Sentencia de creacin: CREATE TABLE DELPHIC.CLIENTS(
IP VARCHAR(15) NOT NULL,
HASH CHAR(40) NOT NULL,
NAME VARCHAR(256) NOT NULL,
PRIMARY KEY(IP,HASH)
)ENGINE=INNODB DEFAULT CHARSET=latin1;
66
TABLA COMMENTS.
- Descripcin: contiene los comentarios de los usuarios conectados a la red.
- Relacin con: CLIENTS.
-
COMMENTS
PK
NCOMMENT: int
FK1,I1
FK1,I1
CLIENTIP: varchar(15)
HASH: char(40)
COMMENT: varchar(120)
EVALUATION: tinyint
67
Captulo 5
Protocolo del
Sistema
PAQUETE REQUEST_CONNECT.
- Implementado por la clase: ConnectPacket.
- Datos. La direccin IP del cliente y los archivos que pone a disposicin
de la red P2P.
PAQUETE REPLY_ CONNECT.
- Implementado por la clase: StandardPacket.
- Datos. Sin datos. El tipo de paquete transmitido es la propia
confirmacin del protocolo.
5.1.2 SOLICITUD DE BSQUEDA DE ARCHIVOS
Cuando un cliente solicita una bsqueda de archivos, se enva un paquete a la
direccin IP del servidor al que se encuentra conectado para que consulte su base de
datos. El servidor contesta con los resultados que satisfacen los requisitos de bsqueda
del archivo, tanto los suyos como los que provienen de la red IP multicast.
69
PAQUETE REQUEST_SEARCH.
- Implementado por la clase: RequestSearchPacket.
- Datos. La secuencia de la cadena de bsqueda y el tipo de archivo a
buscar.
PAQUETE REPLY_SEARCH.
- Implementado por la clase: ReplySearchPacket.
- Datos. Los archivos que satisfacen los requisitos de bsqueda.
5.1.3 SOLICITUD DE BSQUEDA DE COMENTARIOS
Cuando un cliente solicita una bsqueda de comentarios de un archivo
determinado, se enva un paquete a la direccin IP del servidor al que se encuentra
conectado para que consulte su base de datos. El servidor contesta con los resultados
que satisfacen los requisitos de bsqueda de la solicitud, tanto los suyos como los que
provienen de la red IP multicast.
PAQUETE REQUEST_COMMENTS.
- Implementado por la clase: RequestCommentsPacket.
- Datos. El valor de la funcin hash que identifica un archivo en la red
P2P.
PAQUETE REPLY_ COMMENTS.
- Implementado por la clase: ReplyCommentsPacket.
- Datos. Los comentarios que satisfacen los requisitos de bsqueda.
5.1.4 SOLICITUD DE BSQUEDA DE CLIENTES
Cuando un cliente solicita una bsqueda de otros clientes que tienen disponible
un archivo determinado para su transferencia, se enva un paquete a la direccin IP del
servidor al que se encuentra conectado para que consulte su base de datos. El servidor
70
contesta con las direcciones IP de los clientes que satisfacen los requisitos de
bsqueda de la solicitud, tanto las que tiene registradas en sus base de datos como las
que provienen de la red IP multicast.
PAQUETE REQUEST_COMMENTS.
- Implementado por la clase: RequestIPsPacket.
- Datos. El valor de la funcin hash que identifica un archivo en la red
P2P.
PAQUETE REPLY_ COMMENTS.
- Implementado por la clase: ReplyIPsPacket.
- Datos. Las direcciones IP de los clientes que tienen disponible un
archivo determinado para su transferencia.
5.1.5 SOLICITUD DE SINCRONIZACIN
Cuando un cliente ha terminado de descargar completamente un archivo de la
red P2P, se enva un paquete a la direccin IP del servidor al que se encuentra
conectado para que aada a la disponibilidad del archivo a este cliente.
PAQUETE REQUEST_SYNCHRONIZE.
- Implementado por la clase: SynchronizePacket.
- Datos. El archivo descargado del cliente.
71
PAQUETE REQUEST_COMMENTS.
- Implementado por la clase: StandardPacket.
- Datos. La direccin IP del cliente que se desconecta de la red P2P.
PAQUETE REPLY_ COMMENTS.
- Implementado por la clase: StandardPacket.
- Datos. Sin datos. El tipo de paquete transmitido es la propia
confirmacin del protocolo.
72
DATAGRAMA REQUEST_JOIN.
- Implementado por la clase: RequestJoinData.
- Datos. La direccin IP y el puerto asignado a la red IP multicast del
servidor que solicita la conexin.
DATAGRAMA REPLY_JOIN.
- Implementado por la clase: ReplyJoinData.
- Datos. La direccin IP y el puerto asignado a la red IP multicast del
servidor que contesta a la solicitud de conexin.
5.2.2 SOLICITUD DE BSQUEDA DE ARCHIVOS
Cuando un servidor solicita una bsqueda de archivos, se enva un datagrama a
la direccin de la red IP multicast para que el resto de los servidores consulten sus
bases de datos. El resto de los servidores contestan con los resultados que satisfacen
los requisitos de bsqueda del archivo.
DATAGRAMA REQUEST_SEARCH.
- Implementado por la clase: RequestSearchData.
- Datos. La secuencia de la cadena de bsqueda y el tipo de archivo a
buscar.
DATAGRAMA REPLY_ SEARCH.
- Implementado por la clase: ReplySearchData.
- Datos. Los archivos que satisfacen los requisitos de bsqueda.
5.2.3 SOLICITUD DE BSQUEDA DE COMENTARIOS
Cuando un servidor solicita una bsqueda de comentarios de un archivo
determinado, se enva un datagrama a la direccin de la red IP multicast para que el
73
resto de los servidores consulten sus bases de datos. El resto de los servidores
contestan con los resultados que satisfacen los requisitos de bsqueda de la solicitud.
DATAGRAMA REQUEST_SEARCH.
- Implementado por la clase: RequestCommentsData.
- Datos. El valor de la funcin hash que identifica un archivo en la red.
DATAGRAMA REPLY_ SEARCH.
- Implementado por la clase: ReplyCommentsData.
- Datos. Los comentarios que satisfacen los requisitos de bsqueda.
5.2.4 SOLICITUD DE BSQUEDA DE CLIENTES
Cuando un servidor solicita una bsqueda de clientes que tienen disponible un
archivo determinado para su transferencia, se enva un datagrama a la direccin de la
red IP multicast para que el resto de los servidores consulten sus bases de datos. El
resto de los servidores contestan con las direcciones IP de los clientes que satisfacen
los requisitos de bsqueda de la solicitud.
DATAGRAMA REQUEST_IPS.
- Implementado por la clase: RequestIPsData.
- Datos. El valor de la funcin hash que identifica un archivo en la red.
74
PAQUETE START.
- Implementado por la clase: StandardPacket.
- Datos. Sin datos. El tipo de paquete transmitido es la propia
sincronizacin del protocolo.
PAQUETE CHUNK_1.
- Implementado por la clase: ChunkPacket.
- Datos. El identificador de la parte del archivo.
PAQUETE CHUNK_2.
- Implementado por la clase: ChunkPacket.
Datos. El identificador de la parte del archivo y los datos de esa parte.
Posteriormente, el cliente que recibe la parte del archivo solicitado, indica
inmediatamente despus al cliente que se la ha servido que la transferencia a de
finalizarse, porque ya tiene el archivo completo, o bien a de continuar. Este mensaje es
75
necesario para que el cliente que sirve el archivo elimine o vuelva a insertar la peticin
en la cola de descargas.
PAQUETE CONTINUE.
- Implementado por la clase: StandardPacket.
- Datos. Sin datos. El tipo de paquete transmitido es la propia
sincronizacin del protocolo.
PAQUETE END.
- Implementado por la clase: StandardPacket.
- Datos. Sin datos. El tipo de paquete transmitido es la propia
sincronizacin del protocolo.
76
Captulo 6
Programacin y
Pruebas del
Sistema
6.1 PROGRAMACIN
6.1.1 INTRODUCCIN
El objetivo de esta etapa es alcanzar la transformacin del sistema en un
conjunto de programas que puedan ser ejecutados correctamente bajo los criterios de
calidad definidos. La dificultad radica en la manera de realizar esta transformacin de
la mejor forma posible, ya que dependen de factores como el lenguaje de
programacin y las herramientas y utilidades software utilizadas.
Esta etapa recoge los detalles de la programacin empleada para realizar la
aplicacin con explicaciones de los lenguajes utilizados en todos los componentes.
6.1.2 LENGUAJES DE PROGRAMACIN
Para la implementacin del protocolo se ha utilizado Java como lenguaje de
programacin, puesto que el proyecto tiene caractersticas de un sistema distribuido,
y este ha de ser independiente tanto del hardware como del sistema operativo en el
que se ejecute. Adems la arquitectura planteada se ajusta muy bien a las
caractersticas del lenguaje de programacin anteriormente mencionadas.
Para la implementacin de la base de datos de los servidores se ha utilizado el
sistema gestor de bases de datos relacionales MySQL, unos de los ms utilizados, ya
que las caractersticas de este sistema gestor, detalladas anteriormente, se ajustan a
los requisitos del proyecto, tales como multi-thread, rapidez y fiabilidad. Adems
MySQL est bajo licencia GPL, un valor aadido al producto final que hoy en da es
bastante valorado en algunos proyectos.
6.1.3 MANUAL DE USUARIO
En esta etapa es donde, por ltimo, se ha procedido a la realizacin del manual
de usuario, incluido en el anexo I para el cliente y en el anexo II para el servidor. La
realizacin de estos manuales est orientada a las funciones que puede realizar el
usuario sobre cada uno de los controles del sistema, ya que depender del uso que se
haga del mismo y de la determinacin del usuario de cmo utilizarlo.
78
79
80
81
Captulo 7
Planificacin del
Proyecto
83
84
Captulo 8
Valoracin
Econmica del
Proyecto
COSTE
800,00
200,00
315,00
1.315,00
COSTE
700,00
800,00
1.500,00
86
COSTE
1.315,00
1.500,00
2.815,00
87
ACTIVIDAD
Reunin de lanzamiento
Anexo A
Estudio de clientes actuales
Anexo B
Reunin de seguimiento
Interfaz del servidor
Lgica del servidor
Programacin del servidor
Diseo de la BBDD
Implementacin de la BBDD
Reunin de seguimiento
Interfaz del cliente
Lgica del cliente
Programacin del cliente
Pruebas unitarias
Pruebas de integracin
Pruebas de aceptacin
Reunin de seguimiento
Documentacin
Anexos
Reunin de finalizacin
DIRECTOR DE
PROYECTO
1
1
--1
2
----------2
------------2
4
--2
JEFE DE
ANALISTA PROGRAMADOR
PROYECTO
1
----1
----2
20
--1
----2
------1
2
--5
15
--25
55
--2
3
----5
2
------10
25
--10
20
--30
75
--5
15
--5
15
--5
15
2
----10
30
30
--2
10
4
-----
88
NMERO DE HORAS
15
25
150
285
COSTE/HORA
100,00
80,00
60,00
40,00
Total
COSTE
1.500,00
2.000,00
9.000,00
11.400,00
23.900,00
DETALLE
Costes de hardware
Costes de software
Director de proyecto
Jefe de proyecto
Analista
Programador
COSTE
Otros gastos
1.315,00
1.500,00
1.500,00
2.000,00
9.000,00
11.400,00
150,00
Total
26.865,00
Costes de tecnologa
Costes de implantacin
89
Captulo 9
Conclusiones y
Futuras Lneas de
Desarrollo
91
El trmino PKI (Public Key Infrastructure) se refiere a la combinacin de hardware, software y polticas
de seguridad para permitir la ejecucin de cifrados y firmas digitales en operaciones electrnicas.
92
comunicaciones, que los contenidos que estn bajo derechos de autor sean
compatibles con las transferencias. De esta forma, existira una compatibilidad con los
derechos de autor y las licencias de los archivos.
Con el objetivo de dotar de una mayor estabilidad a las conexiones de los
clientes, se podra realizar un proceso de reconexin de estos a otros servidores de la
red P2P, en caso de que el servidor al que se encuentren conectados dejara de estar
accesible por cualquier motivo. De esta forma se garantizara un rpido retorno de la
disponibilidad de los recursos en caso de fallo de algn servidor de la red.
Con el fin de encontrar el equilibrio con otras aplicaciones que se ejecuten en el
cliente y que hagan uso de una conexin a Internet, se podra dar la posibilidad al
usuario de elegir los rangos de velocidades mximas de subida y descarga de archivos.
De esta forma, la aplicacin cliente no copara todo el ancho de banda disponible y el
usuario podra ejecutar otras aplicaciones que necesiten de conexin a Internet.
Ampliando la propuesta anterior, la aplicacin cliente podra aadir un sistema
de filtrado de paquetes, aplicando tcnicas de traffic shaping25, para otorgar mayor
prioridad a los paquetes, protocolos o servicios que decida el usuario. El resultado de
la aplicacin de este sistema de filtrado, sera una navegacin por Internet mucho ms
fluida, un menor valor del ping y mejores rendimientos en lo referente a servicios de
streaming26 o VoIP.
Ya que los archivos que se suelen transferir en las redes P2P son de un tamao
considerable y por lo tanto el tiempo de transferencia suele ser alto, se podra aadir
una aplicacin web para la gestin y monitorizacin remota por parte del cliente, para
as ofrecer la posibilidad de gestionar sus transferencias, sin la necesidad de estar
delante del equipo de trabajo desde el cual ha iniciado las transferencias de los
archivos.
25
El trmino traffic shaping se refiere a una tcnica de catalogacin del trfico para optimizar el
rendimiento de una red.
26
93
Bibliografa y
Referencias
BIBLIOGRAFA DE CONSULTA
[MILL06]
[TAVE08]
[STEV02]
[BARR01]
[ESQU08]
[ECKE02]
[RUST04]
[MYSQ09]
[MICR03]
[GOME02]
95
REFERENCIAS BIBLIOGRFICAS
[AFAN06]
[SANT07]
[RODE05]
[MUO04]
[MYSQ09]
[HAXI01]
http://www.haxial.com/products/kdx/index2.html
[MONK03]
[COHE01]
Cohen
B.
http://finance.groups.yahoo.com/group/decentralization/
message/3160
[ISOH08]
http://isohunt.com/forum/viewtopic.php?t=145853
[AMIL06]
[SOTO06]
Soto P. http://www.pablosoto.com/2006/11/omemo.html
[GARC05]
96
[MICRO04]
[WANG04]
Wang X., Feng D., Lai X., Yu H. Collisions for Hash Functions MD4, MD5,
HAVAL-128 and RIPEMD. http://eprint.iacr.org/2004/199.pdf
[OMG09]
Object
Management
Group.
http://www.omg.org/gettingstarted/
what_is_uml.htm
97
Anexo I
Manual de Usuario
de la Aplicacin
Cliente
NDICE
1. INTRODUCCIN ............................................................................................... 101
1.1. OBJETIVO DEL MANUAL DE USUARIO ........................................................................... 101
1.2. OBJETIVO DE LA APLICACIN ........................................................................................ 101
TABLA DE FIGURAS
IDENTIFICADOR
DESCRIPCIN
PGINA
Figura 1
Figura 2
Figura 3
Figura 4
Figura 5
Figura 6
Figura 7
Figura 8
Figura 9
Figura 10
Figura 11
Figura 12
Figura 13
Figura 14
Figura 15
Figura 16
Figura 17
Figura 18
Figura 19
Figura 20
Figura 21
101
102
102
104
104
105
105
106
106
106
107
108
108
111
111
111
112
112
113
113
113
1. INTRODUCCIN
1.1 OBJETIVO DEL MANUAL DE USUARIO
El objetivo del presente manual es facilitar al usuario el aprendizaje y uso de la
de la aplicacin cliente que se ha desarrollado. Contiene descripciones y detalles de
todos los componentes de la aplicacin, as como las especificaciones de las posibles
opciones que se ofrecen.
1.2 OBJETIVO DE LA APLICACIN
El objetivo de la aplicacin cliente es ofrecer una aplicacin que se conecte a una
red P2P en la que se ha mejorado el proceso de bsqueda de los archivos entre los
usuarios. Se entiende por mejora la eliminacin de la dependencia del proceso de
bsqueda al servidor al que el usuario se encuentre conectado. Adems la aplicacin
ofrece la posibilidad de gestin de archivos, en lo que respecta la bsqueda y
transferencia de estos as como de la gestin de los recursos locales que se ponen a
disposicin de la red P2P.
2. ENTORNO DE LA APLICACIN
2.1 REQUISITOS HARDWARE
Para una correcta ejecucin de la aplicacin, los requisitos hardware son los
especificados por Sun Microsystems para el entorno de ejecucin de Java 5.0 JRE (Java
Runtime Environment).
Los requisitos para sistemas Solaris son los que se describen a continuacin.
PLATAFORMA
VERSIN
Sistema operativo
Sistema operativo
Solaris AMD64/EM64T
Solaris 10
MEMORIA
ESPACIO EN DISCO
64 MB
Instalacin de 32 bits en 53 MB
Instalacin de 64 bits en 23 MB
101
Los requisitos para sistemas Windows son los que se describen a continuacin.
PLATAFORMA
Intel de 32 bits
VERSIN
Windows XP Professional
SP1
Windows XP Home
Windows 2000 Professional
SP3 o posterior
Windows 98 2 edicin
Windows ME
Windows Server 2003 Web
Edition
MEMORIA
ESPACIO EN DISCO
64 MB
64 MB
64 MB
64 MB
64 MB
128 MB
98 MB
128 MB
128 MB
128 MB
128 MB
98 MB
128 MB
110 MB
Los requisitos para sistemas Linux son los que se describen a continuacin.
PLATAFORMA
VERSIN
MEMORIA
64 MB
ESPACIO EN DISCO
64 MB
64 MB
64 MB
64 MB
SuSE 8.2
SLEC 8
SLES 8
TurboLinux 8.0
64 MB
64 MB
64 MB
64 MB
64 MB
58 MB
102
64 MB
58 MB
58 MB
SLES 8
Red Hat Enterprise
Linux AS 3.0
56 MB
SLES 8
Figura 3.
3 Requisitos para sistemas Linux
3. INSTALACIN DE LA APLICACIN
El archivo dee instalacin se distribuye con la extensin jar.. Si el sistema operativo
instalado reconoce esta extensin, pinchar repetidamente sobre el icono del archivo
para su ejecucin. En caso de que el sistema operativo no reconozca este tipo de
extensin, ser necesario asociar la extensin jar con el programa java..
4. EJECUCIN DE LA APLICACIN
4.1 CONEXIN A LA RED P2P
Para conectar el cliente a la red P2P, pulsar el botn con
con el icono
localizado
103
localizado en la
Figura 4.
4 Parmetros de bsqueda de archivos
Figura 5.
5 Tabla de resultados de una bsqueda
104
, se podr iniciar
Figura 6.
6 Ventana de comentarios de un archivo
4.3 TRANSFERENCIAS
Para acceder a la ventana que muestra las actuales descargas del cliente, pulsar
sobre el icono
Figura 7.
7 Tabla de descargas actuales del cliente
En la parte superior
rior izquierda se encuentran las acciones que se pueden realizar
sobre los archivos que se encuentran descargando.
105
Figura 10.
10 Ventana de comentarios de un archivo
106
La previsualizacin
ualizacin del un archivo es un proceso complejo, ya que hay que unir
las partes descargadas del archivo, por lo que el tiempo que transcurre desde la
seleccin de esta opcin hasta la reproduccin del archivo puede ser considerable.
Figura 11.
11 Previsualizacin de un archivo de vdeo
107
108
109
6. INCIDENCIAS MS FRECUENTES
La resolucin adecuada para la ejecucin del cliente es 1152 por 864 pxeles. Si al
ejecutar la aplicacin no se ven todos los componentes o se ve partes de stos, es que
la resolucin actual no es la indicada anteriormente. Para solucionar el problema,
cambiar la resolucin de la pantalla a 1152 por 864 pxeles o en su defecto a la ms
aproximada.
El proceso de conexin del cliente al servidor de la red P2P, es un proceso largo,
por lo que tiempo que transcurre desde que se inicia la conexin hasta que el cliente
se conecta, puede ser considerable. Si despus de unos minutos el cliente no se ha
conectado a la red, comprobar la conexin a Internet, ya que el problema es de la
conexin y no del cliente. En caso de tener instalado en el sistema un firewall, aplicar
las polticas de seguridad adecuadas para permitir la ejecucin de la aplicacin cliente.
La previsualizacin de los archivos que se encuentran en estado de descarga,
dependen del reproductor multimedia que se tenga instalado en el sistema. Si al
previsualizar un archivo de video o msica, no se ve la imagen o no se escucha sonido
alguno, es por la falta de instalacin de algn cdec en el sistema. Se recomienda la
instalacin del reproductor VideoLAN VLC media player, disponible en la pgina web
http://www.videolan.org/
7. MENSAJES DE AVISO
La aplicacin maneja diversos tipos de mensajes de aviso para advertir al usuario
de las distintas incidencias que ocurren en tiempo de ejecucin por la accin que se ha
realizado. A continuacin se describe cada unos de estos mensajes de aviso.
7.1 AVISO DE NO CONEXIN
Este aviso aparece cuando el cliente no se encuentra conectado a la red P2P.
Mientras el cliente no se encuentre conectado, no se podrn realizar bsquedas en la
red, ni tampoco transferencia alguna. Tampoco se iniciarn las descargas pendientes
en el sistema.
110
localizado en la
Figura 14.
14 Aviso de desconexin del cliente
Figura 15.
15 Aviso de archivo no seleccionado
Figura 16.
16 Confirmacin de cierre de la aplicacin
111
8. MENSAJES DE ERROR
La aplicacin maneja diversos tipos de mensajes de error para advertir al usuario
de las distintas
istintas incidencias que ocurren en tiempo de ejecucin por la accin que se ha
realizado. A continuacin se describe cada unos de estos mensajes de aviso.
8.1 ERROR EN LA CONEXIN
Este aviso aparece cuando por algn motivo ajeno al cliente, no se ha podido
realizar la conexin con el servidor de la red.
red Para solucionar el problema, vuelva a
intentar la conexin del cliente, pulsando el botn con el icono
Figura 17.
17 Aviso de error en la conexin
Figura 18.
18 Error en la bsqueda de archivos
112
9. GLOSARIO DE TRMINOS
Red P2P. Conjunto de equipos conectados por medio de un mtodo de
transporte de datos en el que se comparten recursos y en el que no estn definidos ni
clientes ni servidores fijos.
113
114
Anexo II
Manual de Usuario
de la Aplicacin
Servidor
NDICE
1. INTRODUCCIN ................................................................................................ 118
1.1. OBJETIVO DEL MANUAL DE USUARIO ........................................................................... 118
1.2. OBJETIVO DE LA APLICACIN ........................................................................................ 118
TABLA DE FIGURAS
IDENTIFICADOR
Figura 1
Figura 2
Figura 3
Figura 4
DESCRIPCIN
Requisitos para sistemas Solaris
Requisitos para sistemas Windows
Requisitos para sistemas Linux
Fichero de registro de errores
PGINA
118
118
119
123
1. INTRODUCCIN
1.1 OBJETIVO DEL MANUAL DE USUARIO
El objetivo del presente manual es facilitar al usuario el aprendizaje y uso de la
de la aplicacin servidor que se ha desarrollado. Contiene descripciones y detalles de
todos los componentes de la aplicacin, as como las especificaciones de las posibles
opciones que se ofrecen.
1.2 OBJETIVO DE LA APLICACIN
El objetivo de la aplicacin servidor es ofrecer una aplicacin que gestione las
bsquedas que demandan los clientes que se encuentran conectados a l.
2. ENTORNO DE LA APLICACIN
2.1 REQUISITOS HARDWARE
Para una correcta ejecucin de la aplicacin, los requisitos hardware son los
especificados por Sun Microsystems para el entorno de ejecucin de Java 5.0 JRE (Java
Runtime Environment).
Los requisitos para sistemas Solaris son los que se describen a continuacin.
PLATAFORMA
VERSIN
Sistema operativo
Sistema operativo
Solaris AMD64/EM64T
Solaris 10
MEMORIA
ESPACIO EN DISCO
64 MB
Instalacin de 32 bits en 53 MB
Instalacin de 64 bits en 23 MB
Los requisitos para sistemas Windows son los que se describen a continuacin.
PLATAFORMA
VERSIN
Intel de 32 bits
Windows XP Professional
SP1
Windows XP Home
Windows 2000
Professional SP3 o
posterior
Windows 98 2 edicin
Windows ME
MEMORIA
ESPACIO EN DISCO
64 MB
64 MB
64 MB
98 MB
64 MB
64 MB
118
128 MB
128 MB
128 MB
128 MB
98 MB
128 MB
110 MB
Intel de 32 bits
98 MB
Los requisitos para sistemas Linux son los que se describen a continuacin.
PLATAFORMA
VERSIN
MEMORIA
64 MB
64 MB
64 MB
64 MB
ESPACIO EN DISCO
64 MB
58 MB
64 MB
64 MB
64 MB
64 MB
64 MB
64 MB
58 MB
58 MB
SLES 8
Red Hat Enterprise
Linux AS 3.0
56 MB
SLES 8
Figura 3. Requisitos para sistemas Linux
119
3. BASE DE DATOS
3.1 DRIVER MYSQL CONNECTOR/J
A travs del driver Connector/J, MySQL proporciona conectividad para
aplicaciones cliente desarrolladas en el lenguaje de programacin Java.
Este driver es del tipo JDBC (Java Database Connectivity) 4, lo que convierte las
llamadas JDBC directamente en el protocolo usado por el sistema gestor de bases de
datos. Este hecho permite llamadas directas desde la mquina del cliente al servidor
del gestor de bases de datos.
El uso de este tipo de driver aporta una serie de ventajas como las que se
describen a continuacin
Independencia de la plataforma. Al utilizar un driver 100% Java, se consigue
una independencia de la plataforma utilizada.
Rapidez. Ya que no es necesario ningn tipo de traduccin al lenguaje
soportado por el sistema gestor de bases de datos, la ejecucin de las
sentencias es ms rpida.
Facilidad de despliegue. Ya que no se utilizan libreras adicionales ni se
requiere la instalacin de software intermediario, el despliegue es mucho ms
sencillo.
El driver tipo 4, tambin denominado native-protocol all-Java, no requiere
instalacin en los clientes y es suministrado por la aplicacin en el archivo mysqlconnector-java-5.1.7-bin.jar.
Para ms informacin visitar la pgina web http://dev.mysql.com/downloads
/connector/j/5.1.html
120
EXTENSIONS
PK
EXTENSION: varchar(6)
TYPE: varchar(8)
TABLA SHARES.
- Descripcin: contiene los archivos de los usuarios conectados a la red.
- Relacin con: ninguna tabla.
-
121
TABLA CLIENTS.
- Descripcin: contiene la informacin de los clientes conectados a la red.
- Relacin con: COMMENTS.
- Sentencia de creacin: CREATE TABLE DELPHIC.CLIENTS(
IP VARCHAR(15) NOT NULL,
HASH CHAR(40) NOT NULL,
NAME VARCHAR(256) NOT NULL,
PRIMARY KEY(IP,HASH)
)ENGINE=INNODB DEFAULT CHARSET=latin1;
TABLA COMMENTS.
- Descripcin: contiene los comentarios de los usuarios conectados a la red.
- Relacin con: CLIENTS.
-
COMMENTS
PK
NCOMMENT: int
FK1,I1
FK1,I1
CLIENTIP: varchar(15)
HASH: char(40)
COMMENT: varchar(120)
EVALUATION: tinyint
122
4. INSTALACIN DE LA APLICACIN
El archivo de instalacin se distribuye con la extensin jar. Si el sistema operativo
instalado reconoce esta extensin, pinchar repetidamente sobre el icono del archivo
para su ejecucin. En caso de que el sistema operativo no reconozca este tipo de
extensin, ser necesario asociar la extensin jar con el programa java.
Descripcin
del
error
<DIRECCIN_IP_CLIENTE>.
123
6. ARCHIVOS DE LA APLICACIN
Los diferentes archivos que maneja la aplicacin son lo que se detallan a
continuacin.
Delphic.sql. Archivo que contiene las sentencias DDL (Data Definition
Language) para la creacin de las base de datos y las sentencias DML (Data
Manipulation Language) para la insercin de los datos.
Mysql-connector-java-5.1.7-bin.jar. Archivo que contiene el driver del
sistema gestor de bases de datos, suministrado por MysqL AB.
Log.log. Archivo que contiene los errores que se producen durante el proceso
de registro de los clientes y durante el proceso de las bsquedas.
7. GLOSARIO DE TRMINOS
JRE. (Java Runtime Environment). Conjunto de utilidades que permiten la
ejecucin de aplicaciones realizadas bajo el lenguaje de programacin Java sobre todas
las plataformas soportadas.
Sistema gestor de bases de datos. Conjunto de utilidades que sirven de interfaz
entre la base de datos y las aplicaciones y el usuario y que sirven para definir, construir y
manipular los datos almacenados.
124
125