BitTorrent
|
BitTorrent is a peer-to-peer (P2P) file distribution tool written by programmer Bram Cohen and debuted at CodeCon 2002. The reference implementation is written in Python and is released under the BitTorrent Open Source License (a modified version of the Jabber Open Source License), as of version 4.0.
With BitTorrent, files are broken into smaller fragments, typically a quarter of a megabyte each. As the fragments get distributed to the peers, they can be reassembled on a requesting machine in a random order. Each peer takes advantage of the best connections to the missing pieces while providing an upload connection to the pieces it already has. This scheme has proven particularly adept in trading large files such as videos and software source code. In conventional downloading, high demand leads to bottlenecks as demand surges for bandwidth from the host server. With BitTorrent, high demand can actually speed throughput as more bandwidth and additional “seeds” of the completed file become available to the group. Cohen claims that for very popular files, BitTorrent can support about a thousand times as many downloads as HTTP.
Contents |
Sharing files
To share a file using BitTorrent, a user creates a .torrent
file, a small "pointer" file which contains:
- the filename, size, and the hash of each block in the file (which allows users to make sure they are downloading the real thing)
- the address of a "tracker" server (which is discussed below)
- and some other data.
The torrent file can then be distributed to other users, often via email or placed on a website. The BitTorrent client is then started as a "seed node", allowing other users to connect and commence downloading. When other users finish downloading the entire file, they can optionally "reseed" it--becoming an additional source for the file. One outcome of this approach is that if all seeds get taken offline, the file may no longer be available for download, even if the torrent file is possessed. However, even if there are no seeds, as long as there is at least one distributed copy of the file everyone can eventually get the complete file.
Downloading with BitTorrent is straightforward. Each person who wants to download the file first downloads the torrent and opens it in the BitTorrent client software. The torrent file tells the client the address of the tracker, which, in turn, maintains a log of which users are downloading the file and where the file and its fragments reside. For each available source, the client considers which blocks of the file are available, then requests the rarest block it does not yet have. This makes it more likely that peers will have blocks to exchange. As soon as the client finishes importing 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.
BitTorrent gives the best download performance to the people who upload the most, 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.)
Though BitTorrent is a good protocol for a broadband user, it is less effective for dial up connections, where disconnections are common.
Comparison to other file sharing systems
BitTorrent_download.jpg
BitTorrent.PNG
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. This can be visualised as a pyramid, with the people who have the most upload bandwidth available at the top and people with less bandwidth on progressively lower levels. This is the most efficient way to distribute a file to a large number of users: it is probable that even the people at the bottom of the pyramid will get the file faster than if the file was served by a non P2P method. Unfortunately the system adopted by KaZaA is considered by some to be flawed as it relies on the client accurately reporting their Participation Level and therefore it is easy to cheat with the many "unofficial" clients.
Etiquette
Because BitTorrent relies on the upstream bandwidth of its users—and the more users, the more aggregate bandwidth is available for sharing the files—it is considered good etiquette to leave one's BitTorrent client open after downloading has completed so that others may continue to gain from the file that has been distributed.
It is not clear, however, how long one should leave their client open after downloading has finished. Many clients report the byte traffic upstream as well as down, so the user can see how much they have contributed back to the network. It is generally considered good form to at least share back the equivalent amount of traffic as the original file size.
It is worth noting that the requirement of a "1.00 ratio" (uploading as much data as you have downloaded) is rather hotly contested given its relative impossibility to achieve for every person. On any given torrent, the best possible out come is the original seeder with an infinite ratio (having only uploaded data and never downloaded any data), a number of peers with 1.00 ratios (having downloaded the file, uploaded just as much data, and then promptly logged off), and two users with a .50 ratio (the last two having each downloaded a seperate half of the file and then shared their half with the other). This highly unlikely to be achieved due to the very small chance of the last two peers downloading completely opposite halves and finishing just as the last seeder logged off and the fact that not all people will upload the same amount of data they downloaded as some will upload less and others will upload more. Additionally, this means that those who give back more data than they downloaded are hurting everyone else and since most torrents rely on users uploading more than they have downloaded to counteract users who logged off too early discouraging them from uploading is usually a bad idea. Ultimately, a perfect torrent would leave two end users with only a .50 ratio for the torrent which means every user would have to provide new content at least equal to the portion of data they did not get to upload in the last torrent to maintain an overall ratio of 1.00.
While a 1.00 ratio per torrent is not feasible as a rule for all users who download that file, it is more of a guideline to encourage the average upstream of a given network. One network, for example, only allows access to torrents for the first 24-48 hours to people who have an overal ratio of 1.00.
The amount of time the client is left open may be more important than the amount of traffic contributed, since new users attempting to download a file will first need to find peers hosting the file.
Many advanced trackers now track stats such as how many seeders and how many downloaders were on a torrent at the time of a users disconnect as many consider this information more important than just the user's ratio of downloaded/uploaded.
New developments
The BitTorrent protocol is still under development and therefore may still acquire new features and other enhancements such as improved efficiency.
Alternative approaches
The BitTorrent protocol provides no way to index torrent files. As a result, a comparatively small number of websites have hosted the large majority of torrents, rendering those sites especially vulnerable to lawsuits. In response, some developers have sought ways to make file publishing more anonymous while still retaining BitTorrent's speed advantage. The Shareaza client, for example, provides three alternatives to BitTorrent: eDonkey2000, Gnutella, and Shareaza's native network, Gnutella2. BitTorrent also inspired the privately held company InmateMediaGroup: eXeem. It is backed by Andrej Preston, the administrator of the now defunct Suprnova BitTorrent website. eXeem is supposed to decentralize BitTorrent and eliminate the need for web-based trackers (easy targets for the RIAA or the MPAA). Unlike BitTorrent (the protocol and the official client), eXeem is closed-source and owned by a corporation. Distributed trackers is also one of the goals for Azureus 2.3.0.2 and BitTorrent 4.1.2. Another interesting idea which has surfaced recently in Azureus is virtual torrent. This idea is based on the distributed tracker approach and is used to describe some web resource. Right now it is used for instant messaging. It is implemented using special messaging protocol and requires an appropriate plugin.
BitTorrent search / Trackerless
A new BitTorrent online search was recently implemented (Betanews article (http://www.betanews.com/article/BitTorrent_Creator_Opens_Online_Search/1117065427)). One can search content provided by BT. A new beta "trackerless" client was also released. This eliminates the need for a tracker.
Web seeding
One recently implemented feature of BitTorrent 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
Another proposed feature combines RSS and BitTorrent to create a 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 former Tech TV host Chris Pirillo, for example). In an interview Scott Raymond explained:
- "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 Linspire, 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, the first practical applications of this idea have 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 [1] (http://www.grumet.net/weblog/).
- TV RSS (http://tvtrss.sourceforge.net/) is another solution.
- SwarmTV (http://intmainvoid.nl/?swarmtv) yet another BitTorrent + XML television system.
- Undercurrents (http://www.undercurrents.org/), a UK based video activist group are working on an offline TV service using RSS and BitTorrent. It can be seen at beyondTV (http://beyondtv.blogspot.com/).
- Thinkingest (http://www.thinkingest.com/) is providing commercial broadcatching and pro-bono consulting for community projects, such as OurMedia [2] (http://www.ourmedia.org/).
- 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.
- X Hollywood (http://www.xhollywood.com/) aggregates RSS feeds from BitTorrent websites.
And also,
- Azureus also has an RSS feedreader plug-in which can be used in conjunction with the sites mentioned above.
- Blog Torrent (http://blogtorrent.com) offers a simplified BitTorrent tracker to enable bloggers and non-technical users to run a tracker off their site with the added functionality of letting visitors download a file even if they do not have a BitTorrent client installed by automatically installing a client and the desired file. (GrepLaw interviews makers of Blog Torrent (http://grep.law.harvard.edu/article.pl?sid=04/08/26/0236209).)
- WritTorrent (http://writtorrent.sf.net/) offers a blog posting plugin for Azureus, as well as RSS feeds for the built-in Azureus tracker.
- TvM (http://darkar.free.fr/tvmistress/) is another BT/RSS feedreader for Windows designed to be as simple as possible.
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.
See also
- Magnet link
- Super seeding
- List of BitTorrent clients
- BitTorrent Sites (http://torrentsites.org)
External links
- Official website (http://bittorrent.com/) and home of Bram Cohen's original client and tracker. A Torrent search engine created by Bram Cohen, with a simple interface similar to Google.
- Magoo's Complete Guide to BitTorrent (http://guides.radified.com/magoo/guides/bittorrent/bittorrent_01.html)
- Brian's BitTorrent FAQ (http://dessent.net/btfaq/)
- InfoAnarchy site (http://www.infoanarchy.org/wiki/index.php/BitTorrent)
- Animation of BitTorrent in action (MNG format, not supported by all browsers.)de:BitTorrent
es:BitTorrent fr:BitTorrent id:BitTorrent it:BitTorrent he:ביטורנט nl:BitTorrent ja:BitTorrent no:BitTorrent pl:BitTorrent pt:BitTorrent ru:BitTorrent fi:BitTorrent sv:Bittorrent uk:Бітторент zh:BitTorrent协议 th:BitTorrent