Gnutella


Einleitung P2P

Virtuelle Netzwerke
P2P Netzwerke als virtuelle Netzwerke
Quelle: www.sun.com/jxta

Formen des Peer-to-Peer

OpenNap Users
Quelle: Clip2, Kelly Truelove, OpenP2P.com
Rückgang der (Open) Napster User nach dem juristischen Einschreiten der RIAA. Die Anzahl der Server ist von ca. 200 auf ca. 100 zurückgegangen.

Software Architektur


Gnutella

Phex Gnutella Screen
Phex Gnutella Bildschirm

Features

Gnutella Protokoll

Das Gnutella Protokoll zur Kommunikation ist erstaunlich einfach. Es besteht aus nur fünf (sieben) Kommandos / Nachrichtentypen / Descriptoren und nutzt zusätzlich zwei Funktionen des HTTP 1.0 Protokolls.

Bootstraping
Management
Routing

Jeder Gnode hat nur Verbindungen zu seinen unmittelbaren Nachbarn.

  1. Für jede Nachricht wird das TTL Feld decrementiert und das Hops Feld hochgezählt. Ist das TTL Feld Null, wird die Nachricht verworfen.

  2. Falls der Gnode erkennt, dass eine Nachricht innerhalb eines (kurzen) Zeitraums, erneut eingetroffen ist, wird die Nachricht verworfen. Dient zur Schleifenerkennung (loop detection).

  3. Eingehende Ping und Query Nachrichten werden mit einer Pong bzw. einer QueryHit Nachricht über die eigene IP-Adresse bzw. der Liste der Treffer beantwortet.

  4. Eingehende Ping und Query Nachrichten werden an alle Verbindungen (ausser der eingehenden) weiter geleitet falls das TTL Feld grösser als Null ist.

    Ping - Pong Routing
    Gnutella Ping - Pong Routing
    Quelle: Gnutella Spezifikation 0.4, http://www.clip2.com/
  5. Eingehende Pong und QueryHit Nachrichten werden nur auf der Verbindung weiter geleitet, von der die entsprechenden Ping bzw. Query Nachrichten kamen, andernfalls werden sie verworfen. Dazu werden die Nachrichten gespeichert und über den Nachrichten Descriptor verglichen (evtl. wie Hash Tabelle).

    Query - QueryHit Routing
    Gnutella Query - QueryHit Routing
    Quelle: Gnutella Spezifikation 0.4, http://www.clip2.com/
  6. Push Nachrichten werden nur in der Verbindung weiter geleitet, von der eine entsprechende QueryHit Anfrage beantwortet wurde, andernfalls werden sie verworfen.

    Push Routing
    Gnutella Push Routing
    Quelle: Gnutella Spezifikation 0.4, http://www.clip2.com/
Anwendungen

Zum Transport der Dateien bedient sich Gnutella des HTTP 1.0 Protokolls.
Die HTTP Verbindung wird unabhängig vom Gnutella Netzwerk direkt zwischen Client und Server (IP-Adresse und Port steht in QueryHit) aufgebaut.

Erweiterungen des Protokolls


© Universität Mannheim, Rechenzentrum, 2002-2004.

Heinz Kredel

Last modified: Wed Jun 16 22:15:38 CEST 2004