1 / 22

Bittorrent Protocol Implementation

Bittorrent Protocol Implementation. Bittorrent. Bittorrent is a widely used peer-to-peer network used to distribute files, especially large ones It has a number of legal uses which separate it from other P2P. Traditional vs. Bittorrent. One server provides many clients.

degarmo
Download Presentation

Bittorrent Protocol Implementation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bittorrent Protocol Implementation

  2. Bittorrent Bittorrent is a widely used peer-to-peer network used to distribute files, especially large ones It has a number of legal uses which separate it from other P2P

  3. Traditional vs. Bittorrent One server provides many clients • Many clients provide many clients • Images from sitepoint.com

  4. Explanation The .torrent file provides info about tracker URL, filename, size, and more Client connects to tracker through URL Tracker gives client a list of other clients Client then downloads file from other clients (not a centralized server) Periodic update with tracker for new client list

  5. Purpose Create a Bittorrent client and make the underlying libraries and utilities available for further improvement and usage

  6. Goals Analyze the Bittorrent protocol and create a workable implementation that can be used to download files through the Bittorrent network Complete internet publishing solution using Bittorrent (torrent file, tracker, client)

  7. Expected Results Utility to create .torrent metadata files Parse .torrent files and connect to tracker Tracker <==> Peer communication Peer <==> Peer communication

  8. Similar Projects Mainline Bittorrent client Azureus Bittorrent client Rakshasa libtorrent Rasterbar libtorrent python-libtorrent

  9. Mainline Bittorrent Client Official client by creator of Bittorrent Python Open source Sets the standard and extensions to the Bittorrent protocol

  10. Azureus Bittorrent Client Very popular alternative client Java Open source Lots of features, plugins, options High memory usage and load on system

  11. Rakshasa libtorrent Bittorrent development library C++ Open source Used to write rtorrent, high performance terminal client Not very widespread usage

  12. Rasterbar libtorrent Bittorrent development library C++ Open source Used by a number of Bittorrent clients Mature and stable

  13. python-libtorrent Python wrapper for Rasterbar libtorrent Developed for Deluge Bittorrent client Beta software No documentation

  14. libtorrent Attempted using Rakshasa and Rasterbar libtorrent Lack of documentation and online help Not as mature as desired Overall slow progress

  15. .torrent File Specification Official document on bittorrent.org Details the storage format of metadata in .torrent files “Bencoded” strings, integers, lists, dictionaries to store metadata Unicode and ASCII

  16. Bencoding Integer: 6 => “i6e” String: “hello” => “5:hello” List: [“hello”,”world”] => “l5:hello5:worlde” Dictionary: {“hello”:”world”} => “d5:hello5:worlde”

  17. Bencoding implementation Python, good string manipulation Structure of a .torrent file is a dictionary containing string keys and integer, string, list, and dictionary values Recursion to encode Stack to unencode

  18. Download Client Attempted writing a client using both Rakshasa and Rasterbar libtorrent Could download file based on proper .torrent file with Rakshasa Could not compile Rasterbar Lack of documentation hinders further progress

  19. Future of the Client Continue work without documentation with either Rakshasa or Rasterbar libtorrent Write own torrent library, which increases “research” aspect of project

  20. Possible tests Create a .torrent and see if it can be used to download the file Read in an external .torrent and see if is parsed correctly Tracker <==> Peer communication is forthcoming, check of exchanged bencoded dictionaries

  21. Preliminary Results Bencoded .torrent file creation and reading is very possible through the use of Python Client using Rakshasa libtorrent can download, but future progress will be slow

  22. Summary Bencoding torrent files Torrent file structure and info Libtorrent (Rakshasa, Rasterbar) clients are hard to implement Probably will write own Bittorrent library in Python

More Related