There are many definitions of P2P, some of them are good, some of them are bad, and some of them even wrong. Dictinoray.com has a very concise definition:
p2p
/ˈpētəˈpē/
Abbreviation
Peer-to-peer; denoting a network or data communications in which no dedicated server is involved.
Another more detailed definition is presented by R. Schollmeier
A distributed network architecture may be called a Peer-to-Peer (P-to-P, P2P,...) network, if the participants share a part of their own hardware resources (processing power, storage capacity, network link capacity, printers,...). These shared resources are necessary to provide the Service and content offered by the network (e.g. file sharing or shared workspaces for collaboration). They are accessible by other peers directly, without passing intermediary entities. The participants of such a network are thus resource (Service and content) providers as well as resource (Service and content) requestors (Servent-concept).
And here is a wrong one because P2P is more than just a file sharing mechanism:
Peer-to-Peer is a file sharing mechanism that allows files to be swapped directly between users' computers instead of having the file first stored on a server between them.
This means that when you use P2P services, people are actually connecting directly to your computer to retrieve files, and not a server acting as a middle man.
Based on these definitions, key characteristics can be derived.
Depending on where the P2P system is used, other characteristics may become important such as security or privacy. If deployed in an a local cluster, security may not be as important as if deployed in the Internet.
Peers are often part of an abstract overlay network. This makes indexing and searching easier and makes the peers independent from the physical network. This is especially useful if peers change their underlay network address (e.g. IP address).
Desirable properties for such networks are:
P2P networks can be classified into four categories: centralized P2P, hybrid P2P, pure P2P, and structured P2P. Looking at typical client/server systems, each client communicate with the server directly. There is no communication between the clients.
Centralized P2P system are similar to client/server systems, but if a resource is located with the help of a central server, peers communicate directly with each other.
In a hybrid P2P system, peers communicate with super peers to find peers/resources, but not the other way round. Once a peer/resource is found, peers communicate directly. Super peers communicate with other super peers as well and typically exchange information about other peers/resources.
In pure P2P systems, or unstructured P2P systems, all peers are equal and no coordination server/super peer is present. Peers in such systems typically act as relays until a resource/peer is found. If a resource/peer is found, peers communicate directly with each other.
Structured P2P systems or similar to pure P2P systems in that sense that no central entity is present. However, the peers in the structured P2P system create a structure to better find resources/peers.
In the following an adapted table a comparison is shown between client/server and P2P systems as originally proposed by Minar
Properties | Description | C/S | P2P |
---|---|---|---|
Manageability | How hard is it to keep the system working? | easy | hard |
Information coherence | If a bit of data is found in the system, is that data correct? | yes | maybe |
Fault-tolerance | How well can the system handle failures? | bad/(good) | good |
Scalability | How large can the system grow? | yes/(no) | yes |
Security | How hard is it to subvert the system? | hard | easy |
P2P systems are more difficult to manage since there is no central entity that manages the network. Also development and debugging is more difficult and often requires logfile analysis. The information coherence in a centralized system is easier to achieve, since in distrubted systems, the consistency follows the BASE principle, while in a centralized system it follows the ACID principle. The fault tolerance and scalability are inherent properties of a P2P system, thus in centralized system, mechanisms have to be in place that handles those. With respect to security, a centralized system that is controlled by a single instance is easier to secure than a P2P system, where data and processing may occur by a (maybe even untrusted) third party.