Main Page | See live article | Alphabetical index


BitTorrent is a peer-to-peer (P2P) file distribution tool written by San Francisco programmer Bram Cohen, debuted at the CodeCon conference.

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" which is used to locate sources that have the file or parts of it.

This tracker server 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 assigned to it. By uploading parts of the file while it is downloaded, 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".

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"), however, it can happen that the complete file can no longer be obtained.

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 no benefits in providing upload bandwidth, just a UL:DL speed ratio when the upload speed is below 10 Kb/s.

While initially created to distribute legal files, such as 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 was (reportedly) a BitTorrent link to the Half-Life 2 source code on Slashdot soon after the code was stolen.

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 fixed address and distribute that tracker's address in the .torrent file.

BitTorrent is written in Python.

External Links