Peer-to-Peer (P2P) Networks
Peer-to-Peer (P2P) networks is a class of distributed systems in which peers (computers or "nodes") work together without a central server to coordinate the peers (computers) in the network.
In P2P, the Network is the Service
In a normal client / server application, the server typically provides a service to the client, which is said to "consume" the service. In a P2P network however, each peer both provides and consumes the service. You could be tempted to say, that " The Network is the Service ".
Existing P2P Networks and P2P Technologies
There are already many active P2P networks out there, and several P2P technologies. Networks like BitTorrent, LimeWire, Kazar (file sharing), Skype (VoIP), Joost (TVoIP), Hamachi (VPN) etc. And technologies like JXTA, Jini, OpenP2P etc.
Each of these P2P networks and P2P technologies have their own purposes and technology stacks. Some are open, some are not. Some are for global scale networks (millions of peers), and some are for smaller work groups (10-20 peers).
Global Scale P2P Networks
In this tutorial I will focus on global scale P2P networks - on how to get millions of peers to work together, without a central server. Such P2P networks can also be used for smaller workgroups, but small workgroup P2P technologies are not always good for global scale P2P networking.
I will try to cover both the P2P theory, and as much of the practical P2P network implementation as I possibly can. It's a big topic, however, so I may have to break the topic into several minor tutorials.
The theory part will be based on the P2P network "algorithms" called Pastry, Tapestry, Chord, and Kademlia. You can look these network systems up in Wikipedia if you want more information about them.
P2P Tutorial Video
I have created a shortened version of this tutorial as a video. Here it is:
Feel Free to Contact Me
If you disagree with anything I write here about Peer-to-Peer (P2P) networks, or just have comments, questions, etc, feel free to send me an email. You wouldn't be the first to do so. You can find my email address on the about page.