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.
Most notably, BitTorrent allows many people to download the same file without slowing down everyone else's download. It does this by having downloaders swap portions of a file with one another, instead of all downloading from a single server. This way, each new downloader not only uses up bandwidth but also contributes bandwidth back to the swarm. Such contributions are encouraged because each client tries to upload to the clients it gets the fastest downloads from.
How it works
Let's say you want to share a home movie you made via BitTorrent. First, you need to create a .torrent file. This file includes two things:
- the file's name, size, and the hash of each block in the file (which allows users to make sure they're downloading the real thing)
- the address of a "tracker" server (which we'll discuss in a moment)
Once you've used the BitTorrent software to create this torrent file, you then distribute it, for example by putting it on a website or sending it to people by email. At the same time, you'll also have to start what's called a "seed" node, a BitTorrent client that already has the full file and is willing to share it with everyone. (Otherwise there'd be no way for the process to get started!) If other people finish downloading the whole file and begin seeding it, you can turn off your seed node, but if all the seed nodes get turned off there will be no way to download the file anymore.
Each person who wants to download your movie first grabs the torrent and opens it in the BitTorrent client software. The client then gets the address of the tracker from the file and tells the tracker that it's ready to download the file. The tracker acts as a sort of matchmaker, keeping track of who's downloading the file and matching them up with others who are doing the same. The tracker will give you back a list of people who have portions of the file, who you can start downloading from. At the same time, the tracker will give your address out to people who have copies of the file and want to share. The client will check in with the tracker every once in a while to get more people to share with and update it on how its download is coming.
Now that your client has a list of people, it tries to connect to them and start downloading from them. It asks them what blocks of the file they have and then requests a random block it doesn't have yet. (The client doesn't begin by requesting the first block of the file, since this would mean that almost all downloaders would have pretty much the same blocks, making it hard for them to swap anything.) As soon as the client finishes a block it hashes it to make sure that the block matches what the .torrent file said it should be. Then it begins looking for someone to upload the block to.
Since there are almost always more prospective downloaders than you have bandwidth for, your client has to choose which ones to share with. It picks by giving preference to the people who share the most with it. This means the people who upload the most get the fastest downloads, a property known as "leech resistance", since it discourages "leeches" from trying to download the file without uploading it to anyone.
(Although, confusingly, when used in opposition to "seeds" or "seeders" as in "S/L ratio" (meaning "seed/leech ratio"), "leecher" only means someone who hasn't downloaded the full file yet.)
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. While the original eDonkey2000 client provided little "leech resistance", most new clients have some sort of system to encourage uploaders. eMule, for example, has a credits system whereby a client stores the amount of data it has uploaded and downloaded from every client and gives clients that have net upload to it a higher priority in the queue. However, the nature of the eDonkey2000 concept means download speeds tend to be much more variable, although the number of available files is far greater.
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 P2P protocol predominantly officially adopted for legal uses, especially for distribution of various Linux distributions. It should be noted that many legal files, including Linux distributions are typically available on other networks such as eDonkey2000 and Gnutella, however these are placed there by users and not generally part of the official distribution mechanism.
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 system adopted by KaZaA is flawed as it relies on the client accurately reporting their Participation Level and therefore it is easy to cheat.
Legal issues
While initially created to distribute files legally, such as GNU/Linux distributions or large movie trailers, BitTorrent is also being used by some to download music, movies, and software illegally, similar to many other peer-to-peer networks. 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, as well as the World of Warcraft beta.
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. (Naturally, however, ensuring that the same data reaches all nodes neglects the possibility that the original, source file may be corrupted or incorrectly labelled.)
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 (http://www.grumet.net/weblog/).
Another solution exists here: TV RSS (http://tvtrss.sourceforge.net/)
Also adding that anime fansub communities often use Bittorrent for their releases and the most popular announce sites like animesuki, Tokyo Toshokan (http://www.tokyotosho.com/)and 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 (http://ipodder.sourceforge.net/) supports BitTorrent for the RSS 2.0 enclosures that power podcasting. Also X Hollywood (http://www.xhollywood.com/) aggregates RSS feeds from Bittorrent sites.
WebTorrent
WebTorrent is an application (pesce d'aprile) 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. Furthermore, the nature of websites requires low latency however this is difficult when a suitable host must first be found to deliver the 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
- Official website (http://bittorrent.com/) and home of Bram Cohen's original client and tracker.
Software
- ABC (Another BitTorrent Client) [1] (http://pingpong-abc.sourceforge.net/) - ABC is an improved client for the Bittorrent peer-to-peer file distribution solution.
- Azureus Java BitTorrent Client [2] (http://azureus.sourceforge.net/) - 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] (http://www.bitcomet.com/) - 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] (http://www.bytelinker.com/intl/bs.htm) - 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] (http://bittornado.com/) has a user interface similar to the original client, with many added features. It allows for the real-time display of peer & seed connections, pausing a torrent download, and adjustment of port range.
- G3torrent [6] (http://g3torrent.sourceforge.net/) - G3Torrent is a Python based client. Offers a built-in web interface to control the client.
- ctorrent [7] (http://ctorrent.sourceforge.net/) - CTorrent is a BitTorrent client written in the C programming language.
- eDonkey2000 [8] (http://edonkey.com/) - P2P Client that supports eDonkey and BitTorrent as well as other protocols.
- libtorrent [9] (http://libtorrent.sf.net) - 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 [10] (http://libtorrent.rakshasa.no) - rtorrent is a powerful and efficient text-based client for *nix. It uses the libtorrent (http://libtorrent.rakshasa.no) library which is written in C++. (Not the same one as above)
- Shareaza [11] (http://www.shareaza.com/) - 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.
- Qtorrent [12] (http://thegraveyard.org/qtorrent.php) - Multi-torrent client using Qt widget set for use in the X window manager.
- TorrentStorm [13] (http://www.torrentstorm.com/) - Features piece files and a built in tracker.
- The MST3K Bittorrent Guide (http://mst3k.booyaka.com/bittorrent_guide.shtml) - Quick overview of the best Windows / Mac / Linux clients.
- More BitTorrent Clients... (http://a.scarywater.net/torrent/clients/)
Torrent creators
- Azureus (http://azureus.sourceforge.net/)
- BitComet (http://www.bitcomet.com/)
- BitSpirit (http://www.bytelinker.com/intl/bs.htm)
- completedir (http://bitconjurer.org/BitTorrent/)
- MakeTorrent2 (http://krypt.dyndns.org:81/torrent/maketorrent/)
- Torrent Aid (http://www.torrentaid.com/) — Excellent tool for creating decentralized and normal .torrent files.
Torrent sites
General collections
- Kedora TV (http://www.kedora.net/) - Directory of videos using RSS feeds.
- Suprnova.org (http://www.suprnova.org/) (light mirror (http://project-2501.net/php-scripts/suprnova-lite/), unofficial RSS feeds (http://varchars.com/rss/))
- Yotoshi.com (http://www.yotoshi.com/)
- Youceff Torrents (http://torrent.youceff.com/)
- Torrentreactor.net (http://www.torrentreactor.net/index.php) - Categorized list format
- Bittorrent.org.uk (http://www.bittorrent.org.uk/) - Index site of bit torrent links
- isoHunt.com (http://isohunt.com/) - IRC and BitTorrent search engine, P2P releases system
- Torrentbits.org (http://www.torrentbits.org/) - Categorised torrent tracker with leech resistance
- X Hollywood (http://www.xhollywood.com/) - Index and news of BitTorrent sites
- ThinkTorrent.com: BitTorrent Search Engine (http://www.thinktorrent.com/)
Forums
- Btorrents.com (http://www.btorrents.com/) - large BitTorrent community
- Digital Update (http://www.digital-update.com/)
- Filesoup.com (http://www.filesoup.com/)
Specific content
- f.scarywater.net - Slashdot effect victims
- Anime:
- AnimeYume.org (http://www.animeyume.org) - also has non-english releases
- AnimeSuki (http://www.animesuki.com/) - keeps track of almost all (unlicensed) Anime torrents
- Frozen-Layer Network (http://bittorrent.frozen-layer.net) - Spanish Anime distribution page
- a.scarywater.net
- Computer games:
- Filerush.com (http://www.filerush.com/)
- GNU/Linux:
- The Linux Mirror Project (http://www.tlm-project.org/) - Loads of Linux distribution ISO images as downloadable torrents
- ShareGroundz.info (http://www.sharegroundz.info/) - Linux iso's, games and apps, all legal (Like free MMORPG's)
- SolidZ.com (http://www.solidz.com/) - Linux torrents and various other open source apps
- Music:
- caffeinated music (http://caffeinated.homelinux.net/) - trade friendly music. most in ogg vorbis.
- etree.org (http://bt.etree.org/) - trade friendly live recordings. lossless formats.
- Television shows:
- TvTorrents.net (http://www.tvtorrents.net/)
- BTEfnet (http://www.btefnet.com/)
- TVTorrents.com (http://tvtorrents.com/) (requires registration, enforces upload requirements)
Other
- LokiTorrent (http://www.lokitorrent.com/)
- Lucky Ark (http://kov4eg.net/) - A russian bittorent project and community
- mafiotzii.ro (http://bittorrent.mafiotzii.ro) - The first Romanian Bittorrent community
- Nabasu's BitTorrent Bookmarks (http://strikingcomic.com/torrents.html)
- The Pirate Bay (http://trackerwww.prq.to/) - Created by piratbyrån, they document (http://static.thepiratebay.org/legal/) all legal threats received
- WebTorrent (http://sourceforge.net/projects/webtorrent/) - A PHP Frontend for Bittorrent, serving as a centralised BitTorrent download server
In the news
- NYT: File Sharing's New Face (http://www.nytimes.com/2004/02/12/technology/circuits/12shar.html)
Other
- BitTorrent Simulator Visualization (http://aphid.org/btsim/)
- Animation of BitTorrent in action (MNG format, not supported by all browsers.)
- Bit Torrent Download Tutorial (http://www.btorrents.com/forum/index.php?showtopic=73)
- Unofficial, but more complete documentation of BitTorrent (http://wiki.theory.org/index.php/TitleSearch?auto_redirect=1&s=bittorrent)
- Unofficial but lengthy tutorial on the usage of BitTorrent (http://pcpages.com/idolcrash/Tutorial.html)
- Tutorials (http://weblog.zaeleus.org/tutorials/) - Full image and description guides on how to create torrents with various torrent creators and upload torrents to a tracker.
- WebTorrent: a BitTorrent Extension for High Availability Servers (PDF) (http://www.pdos.lcs.mit.edu/6.824/reports/jwolfe.pdf)
- NPR feature on BitTorrent (http://www.npr.org/templates/story/story.php?storyId=4186201)
de:BitTorrent es:BitTorrent fr:BitTorrent it:BitTorrent nl:BitTorrent ja:BitTorrent no:BitTorrent ru:BitTorrent fi:BitTorrent sv:BitTorrent
