Desarrollo De Una Aplicación Bittorrent (En Pharo-Smalltalk)

Desarrollo De Una Aplicación Bittorrent (En Pharo-Smalltalk)

Desarrollo de una aplicación BitTorrent (en Pharo-Smalltalk) Trabajo Final de Grado David Gracia Celemendi Director: Jordi Delgado Pin Departamento de Ciencias de la Computación (CS) Fecha de defensa: octubre de 2015 Titulación: Grado en Ingeniería Informática Especialidad: Computación Facultad de Informática de Barcelona (FIB) página en blanco 1 Resumen Desde principios del 2000, el uso de redes peer-to-peer ha experimentado un gran crecimiento. Gran parte del tráfico de Internet lo generan las apli- caciones BitTorrent. BitTorrent especifica un protocolo para el intercambio de ficheros usando un modelo peer-to-peer que se caracteriza por su gran escalabilidad y robustez. Este proyecto consiste en el desarrollo de una apli- cación BitTorrent desde cero con el sistema Pharo-Smalltalk. Primero se hace un repaso a la historia del intercambio de ficheros desde sus inicios hasta la actualidad. Después se comparan las redes cliente-servidor con las redes peer-to-peer, y se distingue dentro de éstas últimas entre redes estruc- turadas y redes no estructuradas. Se da una explicación del funcionamiento de BitTorrent y, por último, se profundiza en el diseño y la implementación de la aplicación. Abstract Since 2000 peer-to-peer networks use has increased very fast. Most Internet traffic is generated by BitTorrent applications. BitTorrent specify a file sharing protocol over peer-to-peer model whose strength is scalability and robustness. This project is about developing a BitTorrent application from scratch with Pharo-Smalltalk system. First of all, a file sharing history review is done from beginning up to now. Next, client-server and peer- to-peer models are compared, and peer-to-peer networks are classified in unstructured and structured. A brief summary of BitTorrent operation is done and, at the end, report go into detail about design and implementation of the application. Keywords. peer-to-peer, p2p, bittorrent, swarming, smalltalk, pharo. Agradecimientos Gracias a Jordi Delgado por su ayuda durante el desarrollo del proyecto y en la elabora- ción de la memoria. 2 Índice 1. Introducción 7 1.1. Formulación del problema . .7 1.2. Actores implicados . .8 1.3. Objetivos generales . .8 1.4. Objetivos técnicos . .8 1.5. Sobre el proyecto y el formato de la memoria . .9 2. Contexto 10 2.1. Redes peer-to-peer ........................... 10 2.1.1. Descubrimiento de recursos . 12 2.1.2. Aplicaciones . 14 2.2. Historia del intercambio de ficheros . 15 2.3. BitTorrent . 19 2.3.1. Funcionamiento . 19 2.3.2. Implementaciones existentes y últimos avances . 21 3. Metodología 22 3.1. Seguimiento . 22 3.2. Estilo de programación . 23 3.3. Validación del software ......................... 23 4. Visión global de la aplicación 23 5. Diseño e implementación 26 5.1. Bencoding . 26 5.2. Los metadatos . 28 5.3. Acceso físico a los torrents ....................... 29 5.4. Los nodos de la red . 31 5.5. Descubrimiento de peers . 31 5.5.1. Tracker HTTP . 31 5.5.2. Tracker UDP . 34 5.5.3. La clase BtMultitracker ................... 40 5.6. Control de las piezas . 41 5.7. Comunicación peer-to-peer ....................... 42 5.7.1. Mensajes . 42 5.7.2. Sistema de colas . 46 5.7.3. La clase BtRemotePeer ..................... 47 3 5.8. Piezas temporales . 49 5.9. Algoritmo de bloqueo . 50 5.10. Algoritmo de selección de piezas . 51 5.10.1. Rarest first . 51 5.10.2. Random . 51 5.10.3. Most common first . 52 5.10.4. Lower first . 52 5.11. End Game . 52 5.12. Conteo de las piezas en la red . 52 5.13. La clase BtRemotePeerCollection .................. 53 5.14. La clase BtTorrent ........................... 55 5.14.1. Proceso: Validación incial . 56 5.14.2. Proceso: Tracker requesting . 56 5.14.3. Proceso: Choking . 57 5.14.4. Proceso: Optimistic Choking . 58 5.14.5. Proceso: Tratamiento de mensajes entrantes . 59 5.14.6. Proceso: Petición de bloques . 60 5.15. La clase BtLocalPeer ......................... 62 5.15.1. Proceso: Escucha de puerto . 63 5.15.2. Proceso: Gestión de torrents .................. 64 5.15.3. Justificación de la necesidad de BtLocalPeer ......... 65 6. Planificación 66 6.1. Planificación inicial . 66 6.2. Modificaciones a la planificación inicial . 69 7. Presupuesto y sostenibilidad 69 7.1. Identificación de recursos y estimación de costes . 69 7.2. Viabilidad económica . 70 7.3. Impacto social y ambiental . 70 8. Conclusiones 71 9. Posibles ampliaciones 71 Adenda 73 A. Manual de usuario 73 A.1. Instalación de Pharo . 73 A.2. Ejecución de Pharo . 73 4 A.3. Importación de la librería . 74 A.4. Pruebas . 76 A.4.1. Pruebas unitarias . 76 A.4.2. Prueba global . 77 Acrónimos 80 Glosario 81 Referencias 88 5 Índice de figuras 1. BitTorrent. Proceso que siguen las propuestas de ampliación . .9 2. Comparación entre las arquitecturas cliente-servidor y peer-to-peer . 11 3. En Freenet, backtracking usado para encontrar un recurso . 12 4. Comparación topológica. Red peer-to-peer no estructurada. Red peer-to-peer estructurada . 13 5. Amiexpress . 15 6. Jerarquía de warez scene ........................ 16 7. Usenet . 17 8. Funcionamiento de una red BitTorrent . 19 9. Perspectiva del peer local en el enjambre . 20 10. Diagrama de clases simplificado de la aplicación . 24 11. Ejemplo de colección de ficheros de un torrent............. 30 12. Jerarquía de clases de los nodos de la red . 32 13. Jerarquía de clases de los paquetes UDP . 36 14. Diagrama de Gantt del proyecto . 68 15. Selección de imagen en Pharo (Linux Mint) . 74 16. Menú global de Pharo . 75 17. Añadir un repositorio HTTP público a Pharo . 75 18. Exploración del paquete BitTalk en Pharo . 76 19. Captura de imágen de Pharo mostrando cómo ejecutar todas las pruebas unitarias de una vez . 77 20. Ejecución del código de la prueba global . 78 Índice de tablas 1. Características. Redes no estructuradas y estructuradas . 14 2. Planificación de las tareas . 67 3. Presupuesto . 70 6 1. Introducción 1.1. Formulación del problema Este Trabajo de Fin de Grado (TFG) consiste en el desarrollo de una aplicación BitTorrent1 en el sistema Pharo-Smalltalk. BitTorrent es un protocolo diseñado para el intercambio de ficheros sobre una red peer-to-peer (P2P) que se usa para distribuir gran cantidad de información por Internet. Smalltalk es un estándar, públicamente disponible desde 1980[4], que define las especificaciones de un sistema computacional que dispone de una biblioteca (generalmente grande) de objetos que viven dentro del sistema y se comunican mediante mensajes; un fichero llamado «imagen» que contiene el estado del sistema; un lenguaje de programación (también llamado Smalltalk) completamente orientado a objetos, con tipado dinámico y reflexivo; un entorno de desarrollo, compilación y ejecución; y una máquina virtual que se encarga de interpretar todos los mensajes y actualizar el estado del sistema y los objetos. Se puede considerar a un sistema Smalltalk como un mundo virtual donde existen objetos «vivos» que se comunican. Estos objetos pueden ser creados, modificados y eliminados sin necesidad de detener o reiniciar el sistema. Una implementación de Smalltalk es cualquier sistema que cumpla las especi- ficaciones del estándar. La implementación que se va a usar en este proyecto es Pharo (versión 3.0). 1La expresión común para referirse a este tipo de programas es «cliente BitTorrent», pero es incorrecta porque en estas redes no existen los roles exclusivos de cliente y servidor: solo existen peers. En este documento se reserva el uso de «peer» para el concepto abstracto de nodo participante en la red, y el de «aplicación BitTorrent» para el programa que ejecutan los peers 7 1.2. Actores implicados Las siguientes personas están implicadas o se ven afectadas por el desarrollo del proyecto: Autor del proyecto: David Gracia Celemendi. Director del proyecto: Jordi Delgado Pin. Miembro del Consejo de Di- rección del European Smalltalk User Group (ESUG) y Coordinador de l’Associació Smalltalk.cat. Se encargará de supervisar los aspectos técnicos del proyecto. Comunidad de usuarios y desarrolladores de Pharo-Smalltalk. Se beneficiarán de la primera librería que implementa BitTorrent en esta co- munidad. La librería supondrá una base para desarrollar otros proyectos relacionados con BitTorrent y redes P2P. 1.3. Objetivos generales Los objetivos principales del proyecto son: Diseñar e implementar el conjunto de clases que representen la naturaleza y el funcionamiento de las redes BitTorrent. El diseño y la implementación deben ser fácilmente comprensibles y amplia- bles por cualquier desarrollador de Pharo-Smalltalk que conozca el funcio- namiento de BitTorrent. 1.4. Objetivos técnicos BitTorrent está compuesto por una serie de documentos llamados BitTorrent En- hancement Proposal (BEP) que detallan el funcionamiento del protocolo. Un BEP es una propuesta de ampliación de alguna parte de BitTorrent, que especifica una nueva funcionalidad o comportamiento de la red o de los actores implicados. Todos los BEP pueden encontrarse en http://www.bittorrent.org/beps/bep_0000. html. Estas propuestas están sujetas a un proceso de ampliación que establece que una propuesta debe pasar por unas fases antes de ser considerada definitiva por el Benevolent Dictator for Life (BDFL) y creador de BitTorrent, Bram Cohen. 8 Figura 1: Proceso que siguen las propuestas de ampliación Existen varios BEP utilizados por muchas aplicaciones BitTorrent que todavía se encuentran en fase de borrador (Draft) o solo han sido aceptados (Accepted) sin llegar a ser definitivos (Final). Incluso hay otros que, a pesar de no tener siquiera borrador, son utilizados en las aplicaciones BitTorrent más populares. Los objetivos técnicos del proyecto son implementar los siguientes BEP: BEP3 Núcleo de BitTorrent, en fase definitiva. BEP5 Implementa distributed hash table (DHT) para aumentar la descentraliza- ción de BitTorrent, en fase de borrador. 1.5. Sobre el proyecto y el formato de la memoria El desarrollo de la aplicación carece de análisis y especificación de requisitos ya que el protocolo ya está especificado y definido.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    90 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us