Stay Signed In
Do you want to access your site more quickly on this computer? Check this box, and your username and password will be remembered for two weeks. Click logout to turn this off.
Stay Safe
Do not check this box if you are using a public computer. You don't want anyone seeing your personal info or messing with your site.
BitTorrent is a peer-to-peer (P2P) file distribution protocol. The protocol was originally designed and created by programmer Bram Cohen, and is now maintained by BitTorrent, Inc.
BitTorrent is a method of distributing large amounts of data widely without the original distributor incurring the whole of the corresponding costs of hardware, hosting and bandwidth resources. Instead of the distributor alone servicing each recipient, under BitTorrent the recipients each also supply data to newer recipients, thus significantly reducing the cost and burden on any given individual source as well as providing redundancy against system problems, and reducing dependence upon the original distributor.
CableLabs, the research organization of the North American cable industry, believes that BitTorrent could represent 55% of the upstream traffic on the cable company's access network.[1] CacheLogic puts that number at roughly 35% of all traffic on the Internet.[2] Another paper states that some 18% of all broadband traffic carries torrent files needed to initiate BitTorrent downloads.[3] The large discrepancies in these numbers could be caused by dissenting opinions on the methodology to measure P2P traffic on the Internet.[4]
The original BitTorrent client was written in Python. Its source code, as of version 4.0, has been released under the BitTorrent Open Source License, which is a modified version of the Jabber Open Source Licence. There are numerous compatible clients, written in a variety of programming languages, and running on a variety of computing platforms.
Torrents
A BitTorrent client is any program which implements the BitTorrent protocol. Each client is capable of preparing, requesting, and transmitting any type of computer file over a network, using the protocol. A peer is any computer running an instance of a client.
To share a file or group of files, a peer first creates a "torrent." This is a small file which contains metadata about the files to be shared, and about the tracker, the computer that coordinates the file distribution. Peers that want to download the file first obtain a torrent file for it, and connect to the specified tracker which tells them from which other peers to download the pieces of the file.
Creating and publishing torrents
BitTorrent greatly reduces the load on seeders, because clients for the most part download files from each other. In this animation, the coloured bars beneath all of the clients represent individual pieces of the file. After the initial pieces transfer from the seed, the pieces are individually transferred from client to client. This demonstrates how the original seeder only needs to send out one copy of the file for all the clients to receive a copy.
BitTorrent greatly reduces the load on seeders, because clients for the most part download files from each other. In this animation, the coloured bars beneath all of the clients represent individual pieces of the file. After the initial pieces transfer from the seed, the pieces are individually transferred from client to client. This demonstrates how the original seeder only needs to send out one copy of the file for all the clients to receive a copy.
The peer distributing the file breaks it down into a number of identically-sized pieces, typically between 64 kB and 1 MB each. Pieces over 512 kB are used to reduce the size of torrent files for very large payloads, but also reduce the efficiency of the protocol[1]. The peer creates a checksum for each piece, using a hashing algorithm, and records it in the torrent file. When a peer receives the piece, it compares the recorded checksum to the actual checksum of the received piece to make sure that it is error-free. [5] Peers that provide the complete file are called seeders, and the peer providing the initial copy is called the initial seeder.
The exact information contained in the torrent file depends on the version of the BitTorrent protocol. By convention, the name of a torrent file has the suffix .torrent. Torrent files contain an "announce" section, which specifies the URL of the tracker, and an "info" section which contains (suggested) names for the files, their lengths, the piece length used, and a SHA-1 hash code for each piece, which clients should use to verify the integrity of the data they receive.
The peer places a link to the file on a website or elsewhere, and registers it with a tracker. The tracker maintains lists of the clients currently participating in the torrent.[5] Alternatively, in a trackerless system (decentralized tracking) every peer acts as a tracker. It is implemented by the BitTorrent, µTorrent, BitComet and KTorrent clients through the distributed hash table (DHT) method. Azureus also supports a trackerless method but it is incompatible with the DHT offered by all other supporting clients.
In November 2006, BitTorrent Inc released a service that automatically creates a torrent file and tracks a download based on a website object. The service is located at https://www.bittorrent.com/publish and requires a client that supports web-seeding (currently only the official client, Azureus, and μTorrent).
Downloading torrents and sharing files
Users browse the web to find a torrent file of interest, download it and open it with a BitTorrent client program. The client connects to the tracker specified in the torrent file, which sends it a list of other peers currently downloading pieces of the file to be downloaded. The client connects to those peers to obtain the various pieces. Such a group of peers connected to each other to share a torrent is called a swarm. If the swarm contains only the initial seeder, the client connects directly to it and begins to request pieces. As peers enter the swarm, they begin to trade pieces with one another, instead of downloading directly from the seeder.
Clients incorporate mechanisms to optimize their download and upload rates; for example they download pieces in a random order, to increase the opportunity to exchange data, which is only possible if two peers have different pieces of the file.
The effectiveness of this data exchange depends largely on the policies that clients use to determine to whom to send data. Clients may prefer to send data to peers that send data back to them (a tit for tat scheme), which encourages fair trading. But strict policies often result in suboptimal situations, where newly joined peers are unable to receive any data (because they don't have any pieces yet to trade themselves) and two peers with a good connection between them do not exchange data simply because neither of them wants to take the initiative. To counter these effects, the official BitTorrent client program uses a mechanism called “optimistic unchoking,” where the client reserves a portion of its available bandwidth for sending pieces to random peers (not necessarily known-good partners, so called preferred peers), in hopes of discovering even better partners and to ensure that newcomers get a chance to join the swarm.[6]