On Tuesday, I downloaded a 700MB file off a P2P application in less than four hours. There were no lineups, and no interruptions.
I was using a program called BitTorrent, which offers many advantages over standard file distribution systems.
The Internet has always been plagued by a disproportional ratio of content downloaders and content distributors. In a way, it comes down to human laziness; it takes effort to create content and upload it, but it often takes only one mouse click to grab content and download it.
Before the Internet became popular, incessant downloaders who never offered their own content were known as leeches. To prevent leeching, many BBSs and FTP sites used login authentication and enforced download/upload ratios; for example, you had to upload 100KB for every 400KB you took from the community.
Today, the static and anonymous nature of web surfing has encouraged leeching. Hence, if you want a file, you often have to enter long wait queues ala FilePlanet, scrounge around for a link to a mirror copy which a good Samaritan decided to put up, and often tolerate extremely slow transfer rates. It has become so endemic that game developers often shy away from offering game demos on their own websites, for fear of server crashes and high bandwidth costs. There are too many hungry people, and not enough cooks.
BitTorrent combats this leech problem by attempting to enforce pareto efficiency. When one person provides content for download, people can link up by clicking on its Torrent announcement file. As these people download each byte, they also become content providers by sharing the partial file to others. The more downloaders that join this group or “swarm”, the more uploaders there are to download from. Users can download from multiple sources at once. A person with a generous upload rate is generally guaranteed a handsome download rate. Because supply increases with demand, you get a really scalable file transferring system.
While traditional P2P networks act like flea markets (some vendors, many consumers), BitTorrent acts like a swap meet. Downloaders cease to be leeches; they become peers.
Unlike KaZaa, BitTorrent does not have its own special interface or network to join. Torrents are HTTP-based. You click on a file with a TORRENT extension on a website, and the BitTorrent client does the rest. I recommend TheSHAD0W’s Experimental BitTorrent Client, because it provides more statistics. As you can see, the UI still is pretty fugly, but more functional than the one from the original client.
It resembles your browser’s download dialog box, but with some more information. Your “share rating” is the ratio of downloaded to uploaded bytes. According to this dialog, the swarm consisted of 36 peers or downloaders like myself. When a peer has completed their download 100%, they become a “seed” or a new downloadable source of the complete file. The user remains a seed, uploading the file to peers, until he/she closes their download box. According to the dialog, there were 2 complete seeds and at least 6 entire copies of the file spread amongst the peers. Therefore, even if these two seeds should disappear, the remaining peers should be able to complete their file transfers by swapping file fragments among themselves.
It is good form to keep the download window open until a ratio of 1 or higher is reached, even after you have finished your own download, to give back to the community what you have taken.
There are a few flaws, most which stem from the asymmetrical throughput of most broadband solutions. For DSL and cable users, their download speed is often many times larger than their upload. Therefore, one’s share ratio is often less than 1, and (due to laziness again) most people will close their download windows as quickly as possible to recover their lost upload throughput. Swarms often last a few days before dissipating, but if you arrived late to the party, there will be less seeds and you may not even be able to finish your own download. Since it is on a static webpage, the existence of a Torrent link does not guarantee there is a healthy swarm present, or any swarm at all.
However, it still beats waiting 2 hours in a queue of a traditional P2P app and spending another 15 hours downloading off a DSL user at 2KB/s, only to have the user log off halfway through.