Im Abschnitt Kommunikationsarten wurde bereits ein denkbare Aufgabenteilung in Netzwerken beschrieben: Die Client-Server Architektur.
Ein Server ist ein Programm, das Dienste zur Verfügung stellt, häufig wird es auf einem Server (Gerät) dauerhaft im Hintergrund ausgeführt.
Ein Client ist ein Programm, das auf die Dienste eines Serverprogramms zugreift. Es wird meist auf dem Clientgerät ausgeführt, z.B. dem Laptop oder Smartphone, mit dem ein Benutzer mit Netzwerkdiensten in Interaktion tritt.
"Client" und "Server" sind also mehrdeutige Begrifflichkeiten, sie können sowohl die Programme als auch die Geräte bezeichnen.
Für zahlreiche Anwendungsfälle ist es sinnvoll, eine Client-Server-Architekur anzustreben: Beispielsweise möchte man jederzeit Mails empfangen können, auch wenn man gerade nicht am Laptop sitzt. Es macht daher Sinn, diese Aufgabe an einen Mailserver zu delegieren, mit dem der Clientcomputer nur dann interagiert, wenn er prüft, ob neue Mails angekommen sind.
Andere Beispiele sinnvoller Client-Server Anwendungen sind:
Nachteile:
Anders als innerhalb einer Client-Server-Architektur sind in einem Peer-to-Peer Netz alle Geräte "gleichberechtigt": Auf allen Geräten werden Programme ausgeführt, die sowohl Dienste zur Verfügung stellen als auch diese Dienste nutzen. Jedes Gerät ist also Client und Server zugleich.
Beispiele für Dienste und Programme die eine Peer-to-Peer Architektur verwenden sind:
In einem P2P Netz sind die Teilnehmenden Geräte meist sehr unterschiedlich was Rechenleistung, Bandbreite und andere Spezifikationen angeht. Vorteile sind vor allem hohe Autonomie der Teilnehmenden sowie – bei guter Implementation der Protokolle – eine hohe Verfügbarkeit und Eigenschaften wie Zensurresistenz.