Einführung
In Computer-Netzwerken ist P2P eine File-Sharing-Technologie, die es den Benutzern ermöglicht, hauptsächlich auf Multimedia-Dateien wie Videos, Musik, E-Books, Spiele usw. zuzugreifen. Die einzelnen Benutzer in diesem Netzwerk werden als Peers bezeichnet. Die Peers fordern die Dateien von anderen Peers an, indem sie TCP- oder UDP-Verbindungen aufbauen.

Wie P2P funktioniert (Überblick)
Ein Peer-to-Peer-Netzwerk ermöglicht die Kommunikation zwischen Computerhardware und -software, ohne dass ein Server erforderlich ist. Im Gegensatz zur Client-Server-Architektur gibt es in einer P2P-Architektur keinen zentralen Server zur Bearbeitung von Anfragen. Die Peers interagieren direkt miteinander, ohne dass ein zentraler Server erforderlich ist.

Wenn nun ein Peer eine Anfrage stellt, ist es möglich, dass mehrere Peers die Kopie des angeforderten Objekts besitzen. Das Problem ist nun, wie man die IP-Adressen all dieser Peers erhält. Dies wird durch die zugrunde liegende Architektur entschieden, die von den P2P-Systemen unterstützt wird. Mit Hilfe einer dieser Methoden kann der Client-Peer alle Peers kennenlernen, die das angeforderte Objekt/die angeforderte Datei besitzen, und der Dateitransfer findet direkt zwischen diesen beiden Peers statt.

Es gibt drei solcher Architekturen:

  1. Zentralisiertes Verzeichnis
  2. Query Flooding
  3. Ausnutzung der Heterogenität

1. Zentralisiertes Verzeichnis

  • Es ähnelt ein wenig der Client-Server-Architektur in dem Sinne, dass ein großer zentraler Server unterhalten wird, um den Verzeichnisdienst bereitzustellen.
  • Alle Peers informieren diesen zentralen Server über ihre IP-Adresse und die Dateien, die sie für die gemeinsame Nutzung zur Verfügung stellen.
  • Der Server fragt die Peers in regelmäßigen Abständen ab, um sicherzustellen, ob die Peers noch verbunden sind oder nicht.
  • So unterhält dieser Server im Grunde eine riesige Datenbank darüber, welche Datei an welchen IP-Adressen vorhanden ist.

Arbeitsweise

  • Jedes Mal, wenn sich ein anfordernder Peer meldet, sendet er seine Anfrage an den Server.
  • Da der Server alle Informationen über seine Peers hat, gibt er die IP-Adressen aller Peers, die die angeforderte Datei haben, an den Peer zurück.
  • Nun findet der Dateitransfer zwischen diesen beiden Peers statt.

Das erste System, das sich dieser Methode bediente, war Napster, zum Zweck der Mp3-Distribution.

Das Hauptproblem bei einer solchen Architektur ist, dass es einen Single Point of Failure gibt. Wenn der Server abstürzt, stürzt das ganze P2P-Netzwerk ab. Außerdem muss, da die gesamte Verarbeitung von einem einzigen Server durchgeführt werden soll, eine riesige Menge an Datenbanken gepflegt und regelmäßig aktualisiert werden.

2. Query Flooding

  • Im Gegensatz zum zentralisierten Ansatz werden bei dieser Methode verteilte Systeme verwendet.
  • Dabei sollen die Peers zu einem Overlay-Netzwerk verbunden werden. Das heißt, wenn eine Verbindung/Pfad von einem Peer zu einem anderen existiert, ist er Teil dieses Overlay-Netzwerks.
  • In diesem Overlay-Netzwerk werden die Peers als Knoten bezeichnet und die Verbindung zwischen den Peers wird als Kante zwischen den Knoten bezeichnet, wodurch eine graphähnliche Struktur entsteht.

Arbeitsweise

  • Wenn nun ein Peer eine Datei anfordert, wird diese Anforderung an alle seine Nachbarknoten gesendet, d. h. an alle Knoten, die mit diesem Knoten verbunden sind. Wenn diese Knoten die angeforderte Datei nicht haben, geben sie die Anfrage an ihre Nachbarn weiter und so weiter. Dies wird als Query Flooding bezeichnet.
  • Wenn der Peer mit der angefragten Datei gefunden wird (als Query Hit bezeichnet), hört das Query Flooding auf und er sendet den Dateinamen und die Dateigröße an den Client zurück und folgt damit dem umgekehrten Pfad.
  • Wenn es mehrere Query Hits gibt, wählt der Client einen dieser Peers aus.

Gnutella war das erste dezentrale Peer-to-Peer-Netzwerk.

Diese Methode hat auch einige Nachteile, wie zum Beispiel, dass die Anfrage an alle benachbarten Peers gesendet werden muss, bis eine Übereinstimmung gefunden wird. Dies erhöht den Datenverkehr im Netzwerk.

3. Ausnutzung der Heterogenität

  • Diese P2P-Architektur nutzt beide oben beschriebenen Systeme.
  • Sie ähnelt einem verteilten System wie Gnutella, da es keinen zentralen Server für die Abfrageverarbeitung gibt.
  • Aber im Gegensatz zu Gnutella behandelt sie nicht alle Peers gleich. Die Peers mit höherer Bandbreite und Netzwerkkonnektivität haben eine höhere Priorität und werden als Gruppenleiter/Superknoten bezeichnet. Der Rest der Peers wird diesen Superknoten zugewiesen.
  • Diese Superknoten sind untereinander verbunden und die Peers unter diesen Superknoten informieren ihre jeweiligen Anführer über ihre Konnektivität, IP-Adresse und die zum Austausch verfügbaren Dateien.

Die KaZaA-Technologie ist ein solches Beispiel, das sowohl Napster als auch Gnutella nutzt.
Die einzelnen Gruppenanführer bilden also zusammen mit ihren untergeordneten Peers eine Napster-ähnliche Struktur. Diese Gruppenleiter vernetzen sich dann untereinander, um eine Gnutella-ähnliche Struktur zu bilden.

Arbeitsweise

  • Diese Struktur kann die Anfragen auf zwei Arten verarbeiten.
  • Die erste ist, dass die Superknoten andere Superknoten kontaktieren und deren Datenbanken mit ihrer eigenen Datenbank zusammenführen können. Dadurch verfügt dieser Superknoten nun über Informationen einer großen Anzahl von Peers.
  • Ein anderer Ansatz ist, dass eine Anfrage, wenn sie eingeht, an die benachbarten Superknoten weitergeleitet wird, bis eine Übereinstimmung gefunden wird, genau wie in Gnutella. Es gibt also Query Flooding, aber mit begrenztem Umfang, da jeder Superknoten viele untergeordnete Peers hat. Daher nutzt ein solches System die Heterogenität der Peers aus, indem es einige von ihnen als Gruppenleiter/Superknoten und andere als deren Kind-Peers bestimmt.

Referenzen- Computer Networking:A Top down Approach By James F. Kurose

Dieser Artikel wurde von Arushi Dhamija beigetragen. Wenn Ihnen GeeksforGeeks gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel über contribute.geeksforgeeks.org schreiben oder eine Mail an [email protected] senden. Sehen Sie Ihren Artikel auf der GeeksforGeeks-Hauptseite erscheinen und helfen Sie anderen Geeks.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.