Definition

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.

Characteristics

Based on these definitions, key characteristics can be derived.

  1. Self-organization: peers organize themselves, typically based on local observation. Thus, a global optimum is difficult to achieve and algorithms and mechanisms need to be found to come close to the optimum.
  2. Equality: peers have similar rights, they are both client and server, also called servent. That means any peer can request resources / services and any peer can reply to such requests.
  3. Decentralization: since peers are self-organizing, there is no need for a central coordination entity.
  4. Direct interaction: peers communicate directly with other peers. The exception is with communication relays. Such relays are used for workarounds with NAT/firewall issues (no direct communication between peers) where a third party relays messages from one peer to another.
  5. Resource sharing: peers share resources such as storage / bandwidth, CPU, sensors, ...

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.

Overlay Networks

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:

Classification

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.

Client/server vs. P2P

In the following an adapted table a comparison is shown between client/server and P2P systems as originally proposed by Minar

PropertiesDescriptionC/SP2P
ManageabilityHow hard is it to keep the system working?easyhard
Information coherenceIf a bit of data is found in the system, is that data correct?yesmaybe
Fault-toleranceHow well can the system handle failures?bad/(good)good
ScalabilityHow large can the system grow?yes/(no)yes
SecurityHow hard is it to subvert the system?hardeasy

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.