BitTorrent is a distributed, decentralised P2P network that leverages not only the downstream, but also the upstream of participants. While the initial protocol and official client were developed by Bram Cohen, many developers from across the globe are working to develop both client side software and server side software (e.g. trackers, which (rather surprisingly) track information about individual torrent?s and the clients connected to them) in a variety of programming languages and for a variety of platforms. BitTorrent is best suited to mass distribution of large amounts of data (like CD images for free operating systems), but can be used to distribute smaller files, too.

The key concepts of BitTorrent data distribution are the tracker?, seed?s, peer?s (referred to collectively as swarm?s), and individual .torrent? files. In most typical configurations, a server admin will install some sort of tracker software (I've yet to see anything in Perl, unfortunately) that provides a Web-based search engine used to find individual torrent? files for download. Upon downloading one or more such files to their computer, the client (hereafter a peer) loads this file into their client. Traditional implementations of BitTorrent feature the client communicating with the tracker at this point to retrieve a list of seeds and peers distributing this particular torrent, though several advanced clients (like Azureus?) offer a decentralised tracking system, truly making BitTorrent a decentralised network.

Before the peers can download the .torrent files, one particular user has to create that file using torrent creation software. Some advanced clients offer this functionality in addition to downloading and seeding?. This user then uploads the .torrent file to the tracker, and sets their client software to seed this torrent -- to distribute it to peers requesting its data. As peers complete the download, they, too, take on the role of seeder?, easing the original seed's bandwidth requirement and simultaneously allowing this particular torrent to handle more users.

BitTorrent is different from many other network-based data distribution protocols in that even before a peer's download is complete, the protocol is designed such that the peers can upload to one another. This shared bandwidth methodology allows for dramatic reduction in hardware and service costs for the entities distributing data through BitTorrent; however, the system has been abused, and there's nothing stopping a client from disconnecting as soon as they've retrieved the bits they want, skipping the seeding stage.

See also: Wikipedia article for BitTorrent