BitTorrent
BitTorrent is a peer-to-peer (P2P) file distribution tool written by programmer Bram Cohen which was debuted at CodeCon 2002. It is written in Python and is released under the MIT License.
Brief background
BitTorrent earned its fame by allowing many people to download the same files without slowing down the transfer for each other. It accomplishes this by forcing all downloaders to also upload the pieces of the files that they have to other downloaders, so that each member of a swarm is contributing to the distribution of its contents.
How it works
Unlike traditional file sharing systems, its primary intention is to provide an efficient way to distribute the same file to a large group of people by having everybody that downloads a file also upload it to others. First, a small file with a .torrent extension is distributed via conventional means. This file is static, so it is often placed on regular websites or even distributed by e-mail. The .torrent file contains hashing information for blocks of the file, so the size of it depends on the size of the file or group of files that it refers to. It also contains, hardcoded, the address of a so-called "tracker server" (often called simply "tracker") which is used to locate sources that have the file or parts of it.
The list of trackers is fixed for any one .torrent file. It also provides statistics about the number of transfers, number of nodes who have a complete copy of the file and number of nodes who only have a partial copy.
The desired file or collection of files is downloaded from the sources provided by the tracker server, and while it is downloaded, it is also uploaded to other sources, with the client utilizing the amount of bandwidth available to it unless a limit is set by the user. By uploading parts of the file while it is downloading, each node inevitably contributes to the distribution of the file — in fact, nodes with high upload bandwidth are also automatically connected to more nodes to download the file from. This is referred to as "leech resistance". As the name implies, leech resistance reduces the impact of people who wish to download the file as quickly as possible and then disconnect without helping to upload the file to others.
When a user begins downloading a file, BitTorrent does not necessarily start at the beginning of the file. Random pieces of the file are initially downloaded by all users. Then, users connect with one another to share pieces of the file. If enough users are connected to one another, all will eventually obtain the entire file. Of course, initially someone must possess the entire complete file to begin the process. This method has the effect of causing download speeds to increase when more users connect to download/upload a file. When there are no longer any nodes connected to the tracker server who possess the complete file (so-called "seeds" or "seeders"), the nodes cannot finish the download if they do not have a complete copy distributed amongst themselves.
BitTorrent vs. other P2P clients
The method used by BitTorrent to distribute files parallels to a large extent the one used by the eDonkey2000 network, but nodes in this file sharing network usually share and download a much larger number of files, making the bandwidth available to each transfer much smaller. BitTorrent transfers are typically very fast, because all nodes in a group concentrate on transferring a single file or collection of files. Furthermore, the standard eDonkey2000 protocol provides little "leech resistance".
There are two major differences between BitTorrent and the better-known peer-to-peer file-trading systems, which advocates suggest make it less useful to copyright violators. First, BitTorrent does not offer a search facility to find files by name. A user must find the initial .torrent file by other means, such as a Web search. Second, BitTorrent makes no attempt to conceal the host ultimately responsible for a given file's availability: a person who wishes to make a file available must run a tracker on a specific host or hosts and distribute the tracker address(es) in the .torrent file. While it is possible to simply operate a tracker on a server that is located where the copyright holder cannot take legal action, this feature of the protocol does imply some degree of accountability that other protocols lack. It is far easier to request that the server's internet service provider shut the site down than it is to find and identify every user sharing a file on a traditional peer-to-peer network.
BitTorrent also seems to be the only P2P protocol to be widely adopted for legal uses, especially for distribution of various Linux distributions. Following the success of the BitTorrent protocol, its creator was hired to develop a means of distributing patches and other content for online video games in 2004, proving that there are some less controversial reasons for the development of this technology.
A similar method to BitTorrent was the Participation Level introduced in KaZaA in 2002. The Participation Level would increase when you upload and decrease when you download. Then when you upload a file to someone else the person with the highest Participation Level gets it first, then they upload it on to the person with the next highest Participation Level, and so on. Think of a pyramid, with the people who have the most upload bandwidth available at the top and on each level down you have people with slightly less bandwidth until you get to the bottom. This is the most efficient way to distribute a file to a large number of users: even the people at the bottom of the pyramid probably get the file faster than if the file was served by a non P2P method.
Unfortunately the Participation Level was easily cheated by using the unofficial KaZaA Lite which is almost as popular as the official client.
Copyright issues
While initially created to distribute legal files, such as GNU/Linux distributions or large movie trailers, BitTorrent is also being used by some to download copyrighted music, movies, and software, similar to many other peer-to-peer networks. It is still contested whether or not this is legal; see peer-to-peer for more information. BitTorrent was allegedly used to distribute high-quality bootlegs of the movie The Matrix Reloaded created from film prints just days after the movie was released in theaters. There were BitTorrent links on Slashdot to the Half-Life 2 source code (soon after it was leaked in October 2003), as well as to the (incomplete) Windows NT and Windows 2000 source trees in February 2004 (amidst rumored third-party leaks).
However, BitTorrent can also be used for legal purposes by software developers who want to ease the bandwidth strain on their servers. If a developer offers a large file for download, the bandwidth limit of their server may be exceeded if a large number of people download the file. By offering the file via BitTorrent, they transfer much of the bandwidth burden to downloaders of the file. For example, the demo of the flight sim X-Plane is offered via BitTorrent.
New Developments
The BitTorrent protocol is still under development and therefore may still acquire new features and other enhancements such as improved efficiency.
Web seeding
One recently-implemented feature is web seeding. The advantage of this feature is that a site may distribute a .torrent for a particular file or batch of files and make those files available for download from that same web server application; this can simplify seeding and load balancing greatly once support for this feature is implemented in the various BitTorrent clients. In theory, this would make using BitTorrent almost as easy for a web publisher as simply creating a direct download while allowing some of the upload bandwidth demands to be placed upon the downloaders (who normally use only a very small portion of their upload bandwidth capacity). This feature is an unofficial one, created by the author of a specific third-party client.
"Broadcatching" — Where BitTorrent meets RSS
Another proposed feature combines RSS and BitTorrent to create the perfect content delivery system, dubbed broadcatching. Since a Steve Gillmor column for Ziff-Davis in December 2003, the discussion has spread quickly among many bloggers (Techdirt, Ernest Miller, and ex-Tech TV host Chris Pirillo, for example). However it's Scott Raymond whose entry best explains what has everyone excited:
- "I want RSS feeds of BitTorrent files. A script would periodically check the feed for new items, and use them to start the download. Then, I could find a trusted publisher of an Alias RSS feed, and 'subscribe' to all new episodes of the show, which would then start downloading automatically — like the 'season pass' feature of the TiVo."
While potential illegal uses abound as is the case with any new distribution method, this idea lends itself to a great number of ideas that could turn traditional distribution models on their heads, giving smaller operations a new opportunity for content distribution. Similar to Lindows, the system leans on the cost-saving benefit of BitTorrent, where expenses are virtually non-existent; each downloader of a file participates in a portion of the distribution.
RSS feeds layered on top keep track of the content, and because BitTorrent does cryptographic hashing of all data, subscribers to the feed can be sure they're getting what they think they're getting, whether that winds up being the latest Sopranos episode, or the latest Sveasoft firmware upgrade.
Despite ample discussion, one of the first practical applications of this idea has only surfaced recently. Programmer Andrew Grumet has announced the release of a beta version of an RSS and BitTorrent integration tool for Radio Userland's news aggregator, available here.
Another solution exists here: TV RSS
Also adding that anime fansub communities often use Bittorrent for their releases and the most popular announce sites like animesuki, Tokyo Toshokanand downloadanime.org have RSS feeds.
Azureus has also an RSS feedreader plug-in which can be used in conjunction with the sites mentioned above.
Podcasting is starting to integrate BitTorrent to help podcasters deal with the download demands of their MP3 "radio" programs. Specifically, iPodder supports BitTorrent for the RSS 2.0 enclosures that power podcasting.
WebTorrent
WebTorrent is an application of BitTorrent proposed for websites. WebTorrent would use the BitTorrent solution on webservers, so as to minimize the Slashdot effect on websites. In a few words, a small site would not suffer or go offline because it suddenly grew with too many visitors. It has been estimated that large sites like Wikipedia, which live on donations and apply almost all their funds to more server power could save thousands of dollars.
Achieving content high-availability is one of the most important goals of a webserver system. In order to achieve high-availability in the traditional server-client setting, the server must have the bandwidth and the hardware needed to handle any peak load that might occur. However, this is a very costly and rarely practical solution, especially for servers that are subjected to the Slashdotting effect. We propose a WebTorrent system that is based on BitTorrent and will leverage the resources of the clients to help the server make the content more available. Such a system will alleviate the load on the server and reduce the client download times.
One current obstacle for WebTorrent is that the existing BitTorrent infrastructure is not suitable for use on this level; BitTorrent was designed for efficient transfer of single large files, where the content that WebTorrent tries to enable is more likely to be a large number of smaller text and image files. WebTorrent attempts to bundle web content in order to make larger files and to modify BitTorrent to operate more efficiently on smaller file sizes.
External links
BitTorrent Clients — Dedicated BitTorrent Clients
- The Official BitTorrent Home Page - The home of Bram Cohen's original client.
- ABC ( Yet Another Bittorrent Client ) [1] - ABC is an improved client for the Bittorrent peer-to-peer file distribution solution.
- Azureus Java BitTorrent Client [2] - Azureus offers multiple torrent downloads, queuing/priority systems (on torrents and files), start/stop seeding options and instant access to numerous pieces of information about your torrents.
- BitComet [3] - BitComet is a closed-source Windows native client with torrent creation features, a queuing/priority system, and a large amount of information available to the user. Written in C++, this client is extremely quick even on slower machines.
- BitSpirit [4] - BitSpirit is a powerful and easy-to-use BitTorrent client which provides not only full BitTorrent protocol implementation but also many personalization features.
- BitTornado [5]
- ctorrent [6] - CTorrent is a BitTorrent client written in the C programming language.
- eDonkey2000 [7] - P2P Client that supports eDonkey and BitTorrent as well as other protocols.
- libtorrent [8] - libtorrent is a C++ library that aims to be a good alternative to all the other bittorrent implementations around. It is a library and not a full featured client, although it comes with a working example client.
- rtorrent [9] - rtorrent is a powerful and efficient text-based client for *nix. It uses the libtorrent library which is written in C++. (Not the same one as above)
- Shareaza [10] - P2P Client that supports Gnutella2, Gnutella, eDonkey and BitTorrent. Torrent files become automatically decentralized by being shared through the the other P2P networks. Was banned from some Trackers in the past, with the reason being 'poor implementation' or 'bad behavior'. A few bans linger, but many have been lifted.
- TorrentStorm [11] - Features piece files and a built in tracker.
- More BitTorrent Clients...
Torrent Sites
Search engines or categories
- Suprnova.org (light mirror)
- Bitoogle.com
- Torrentreactor.net - Categorized list format
- isoHunt.com - IRC and BitTorrent search engine, P2P releases system
- Torrentbits.org - Categorised torrent tracker with leech resistance
Forums
- Btorrents.com - large BitTorrent community
- Digital Update
- Filesoup.com
Specific content
- TvTorrents.net - Tracker with RSS feed, focused mainly on tv-series.
- Anime:
- AnimeYume.org - also has non-english releases
- AnimeSuki - keeps track of almost all (unlicensed) Anime torrents
- Caffeinated Music - Trade Friendly Music Torrents
- Frozen-Layer Network - Spanish Anime distribution page
- GNU/Linux:
- The Linux Mirror Project - Loads of Linux distribution ISO images as downloadable torrents
- ShareGroundz.info - Linux iso's, games and apps, all legal (Like free MMORPG's)
- SolidZ.com - Linux torrents and various other open source apps
- Music:
- caffeinated music - trade friendly music. most in ogg vorbis.
Other
- LokiTorrent
- Lucky Ark - A russian bittorent project and community
- mafiotzii.ro - The first Romanian Bittorrent community
- Nabasu's BitTorrent Bookmarks
- The Pirate Bay - Created by piratbyrån, they document all legal threats received
- WebTorrent - A PHP Frontend for Bittorrent, serving as a centralised BitTorrent download server
Torrent Creation Tools
- Azureus
- BitComet
- BitSpirit
- completedir
- MakeTorrent2
- Torrent Aid — Excellent tool for creating decentralized and normal .torrent files.
- How to create a torrent - Full image and description guides on how to create torrents with various torrent creators.
- BitTorrent Files for Slashdot effect victims
WebTorrent
Other Links
- BitTorrent Simulator Visualization
- Animation of BitTorrent in action (MNG format, not supported by all browsers.)
- Bit Torrent Download Tutorial
- File Sharing's New Face - New York Times article.
- Unofficial, but more complete documentation of BitTorrent
- Unofficial but lengthy tutorial on the usage of BitTorrent
- The MST3K Bittorrent Guide - Quick overview of the best Windows / Mac / Linux clients.
- ThinkTorrent.com : BitTorrent Search Engine