1 / 22

The BitTorrent Protocol

The BitTorrent Protocol. www.bittorrent.org http://wiki.theory.org/BitTorrentSpecification. What is BitTorrent?. Efficient content distribution system using file swarming. A BitTorrent file distribution consists of these entities:. A static 'metainfo' file A BitTorrent tracker

Download Presentation

The BitTorrent Protocol

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. The BitTorrent Protocol www.bittorrent.org http://wiki.theory.org/BitTorrentSpecification

  2. What is BitTorrent? Efficient content distribution system using file swarming.

  3. A BitTorrent file distribution consists of these entities: • A static 'metainfo' file • A BitTorrent tracker • An 'original' downloader • The end user downloaders

  4. To start serving, a host goes through the following steps: • Start running a tracker • Start running an ordinary web server. • Generate a metainfo (.torrent) file using the complete file to be served and the URL of the tracker. • Put the metainfo file on the web server. • Link to the metainfo (.torrent) file from some other web page. • Start a downloader which already has the complete file (the 'origin').

  5. To start downloading: • Get a BitTorrent client • Find a .torrent file. • Select where to save the file locally. • Wait for download to complete. • Tell downloader to exit (it keeps uploading until this happens).

  6. Bencode • All data passed in BT is bencoded (BEE –Encoded). • This is a representation convention used to avoid interoperability problems.

  7. Data in .torrent files • The URL of the tracker. • Suggested name to save the file. • piece length maps to the number of bytes in each piece the file is split into. • pieces maps to a string whose length is a multiple of 20. It is to be subdivided into strings of length 20, each of which is the SHA1 hash of the piece at the corresponding index.

  8. Tracker <> Peer communication Actual packet structure

  9. Peer > Tracker:GET requests has following keys • info_hash – hash of the .torrent. • peer_id – My unique ID. • My IP / Port • uploaded / Downloaded • left – Can not be calculated from Downloaded, because of errors / restart. • event - Why I do the GET.

  10. GET events • Reasons for calling the GET: • Started • Completed • Stopped  • Empty - done at regular intervals

  11. Tracker > Peer :tracker GET responses • failure  • interval – next time to GET • List of peers

  12. Peer <> Peer communication Actual packet structure

  13. Peers protocol • operates over TCP • Peer connections are symmetrical • Refers to pieces by index from .torrent • Connections contain : choked and interested

  14. Peer messages • Handshake • Keep alive (0 size, every 2 minutes) • 0 - choke • 1 - unchoke • 2 - interested • 3 - not interested • 4 - have • 5 - bitfield • 6 - request • 7 - piece • 8 - cancel

  15. Change connection state • 'choke', 'unchoke', 'interested', and 'not interested' have no payload. • Data transfer takes place: • one side is interested, other side is not choking • state must be kept up to date at all times • This is a precondition for upload / download – REQUEST / PIECE

  16. BITFIELD • Only ever sent as the first message. •  bitfield - a bit for each piece – • 1 – Have • 0 – Don’t have • May skip if has 0 pieces.

  17. HAVE • Single number, the index which that downloader just completed and checked the hash of.

  18. REQUEST • Contain - index, begin, and length •  Length is generally a power of two unless it gets truncated by the end of the file.

  19. PIECE • Getting the actual data from a peer • Correlates to a REQUEST.

  20. CANCEL • same payload as request messages. • generally only sent  during what's called 'endgame mode'.  • Try to download whole piece from multiple sources.

  21. Choking reasons • TCP congestion control is poorly with many connections • choking lets each peer use a tit-for-tat-ish algorithm

  22. Choking Algorithm • Criteria (Recommended) • Cap the number of simultaneous uploads for good TCP performance. • It should avoid choking and unchoking quickly, known as 'fibrillation'. • Reciprocate to peers who let it download. • try out unused connections once in a while known as optimistic un choking.

More Related