| • Science | • People | • Locations | • Timeline |
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.
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:
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.)
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.