P2P
P2P stands for Peer-to-peer networking, popularized in late 1990s by Napster.
Unlike regular network, where all the clients make requests to one specific central server (like you all do, when you request pages from our domain, you request the pages from one specific server), the P2P network model makes the download requests to other clients. Basically once an user logs into P2P network he/she is immediately a client and a server simultaneously. User can download files from other users and other users can download files from the user.
P2P network model can also be used in various other ways other than distributing just files. One of the best-known P2P networking projects (although it is not pure P2P network, because clients don't communicate with each other -- maybe we should speak of distributed computing instead, but we mention this anyway :-) is called SETI@Home where users use their own home computers to calculate portions of massive data amount received by radiotelescopes from outer space, in order to find extraterrestial life.
Also, we should mention that original Napster network wasn't pure P2P network either, because all download requests were passed through a centralized server maintained by Napster -- this ultimately was one of the aspects which lead to closure of Napster in early third millennium. Shortly after Napster gained its peak popularity, several pure P2P networks emerged, most important of those new-breed P2P networks is/was definately a network called Gnutella.
Another prominent P2P network now is that of BitTorrent. BitTorrent is a peer-to-peer (P2P) protocol and tool originally developed by Bram Cohen. It is currently developed and distributed by Cohen's company BitTorrent, Inc.. The original BitTorrent client is written in Python and released under the BitTorrent Open Source License. BitTorrent has led to the easy distribution of movies and other large files over the Internet.
Transferring a file or files over BitTorrent involves three steps:
- creating a .torrent file
- distributing the .torrent file to other users
- "seeding" the torrent.
Seeding the torrent means acting as a node which has all the parts of the file(s) being transferred. When other BitTorrent clients connect to a seed node it distributes fragments of the files in a random order the downloading nodes (peers). As fragments of the file start spreading to peer nodes they can start transferring data from each other and finding the fastest connections available. The BitTorrent client verifies the integrity of each fragment transferred, and if a corrupt fragment is detected it is transferred again.
The network of seed and peer nodes is sometimes referred to as a swarm.
BitTorrent discourages people from trying to limit their upload speeds by giving best download performance to those that upload the most.
Once a peer node has downloaded and verified all the fragments specified in the .torrent file it changes its role from a peer to a seed, and starts serving fragments to peers that are still requesting fragments. In order for BitTorrent to work efficiently the client should be left open after the transfer is complete. It is considered good etiquette to upload at least the amount of the size of the file (e.g. if you download a 100MB file you should leave your client open at least as long as your client has uploaded 100MB to other users). With broadband connections this isn't usually a problem. For example Azureus BitTorrent Client lets you adjust the maximum upload speed so that running BitTorrent will not affect the performance of other network traffic.
To download files from BitTorrent P2P network you need to have a BitTorrent -compatible client installed on your computer.
Related Guides and Links
Information about the .torrent filesBitTorrent FAQ
ABC guide
Azureus guide
BitComet guide
BitTornado guide
G3 Torrent guide
AfterDawn's P2P forum