BitTorrent
Bram Cohen invented BitTorrent protocol in 2001 and wrote the first client in Python. It is a peer-to-peer file sharing protocol where those who share a file are called seeders and those who download are called peers. All seeders and peers related to a particular torrent comprise the swarm. The tracker server or tracker serves as a repository for information about peers associated with the same file. Files are downloaded in hashed pieces from multiple seeders to distribute the burden of seeding a file. ^
A Torrent Descriptor file is a hashmap file
Torrent Descriptor property | Description |
---|---|
Announce | URL of the tracker |
Info | dictionary whose keys depend on whether one or more files are being shared, including: Files: list of dictionaries, only exists when multiple files are being shared, each dictionary has two keys and corresponds to a file Length: size of the file in bytes Path: list of strings corresponding to subdirectory names, the last of which is the actual filename |
length | size of the file in bytes (when one file is being shared |
name | suggested file or directory name |
Pieces length | number of bytes per piece; must be a power of 2 and at least 16KiB |
Pieces | list of SHA-1 160-bit hashes calculated on various parts of data |
{
"Announce": "url of tracker",
"Info": {
"Files": [{
"Length": 16,
"path": "/folder/to/path" },
{ "length": 193,
"path": "/another/folder" }]
},
"length": 192,
"name":" Ubuntu.iso",
"Pieces length": 262144,
"Pieces": [AAF4C61DDCC5E8A2DABEDE0F3B482CD9AEA9434D, CFEA2496442C091FDDD1BA215D62A69EC34E94D0]
}
BitTorrent clients
- Deluge ^ ^
- command-line functionality
- open-source with expandable functionalities
- chosen as the best torrent client by Lifehacker
- qBittorrent open-source, ad-free alternative to uTorrent
- Tixati closed-source
- Transmission installed by default on Ubuntu (ca. 2017)
- Tribler
- Vuze has ads and is closed-source
- Frostwire: multiplatform, including Android
- WebTorrent Desktop