Zum Inhalt springen

„Gnutella“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
rv: Vandalismus von 213.3.47.147 und 84.164.217.243
L. aus W. (Diskussion | Beiträge)
K +kat
 
(191 dazwischenliegende Versionen von mehr als 100 Benutzern, die nicht angezeigt werden)
Zeile 1: Zeile 1:
'''Gnutella''' (gesprochen [{{IPA|nʊˈtɛlə}}] mit einem stummen ''g'') ist ein dezentrales [[Peer-to-Peer]]-[[Netzwerkprotokoll]] für das [[Filesharing]]. Es gibt weltweit mehrere Millionen Nutzer, die über verschiedene [[Client]]s auf das Netzwerk zugreifen. Der meist genutzte und bekannteste Client war lange Zeit [[LimeWire]]. Trotz des Namens gehört Gnutella nicht zum [[GNU-Projekt]].
'''Gnutella''' bezeichnet eine Internet-[[Tauschbörse]] ([[Peer-to-Peer]]-Netzwerk) und dessen spezifisches [[Netzwerkprotokoll|Übertragungsprotokoll]].


==Geschichte==
== Geschichte ==
Das Gnutella-Protokoll wurde durch [[Justin Frankel]] definiert, der am 14. März 2000 als erste Software für das Gnutella-Netzwerk die [[Beta-Version]] des ebenfalls Gnutella bezeichneten Programmes zum kostenlosen Herunterladen im [[Internet]] freigab. Frankels Arbeitgeber [[AOL]] zwang ihn jedoch nach kurzer Zeit das Projekt aufzugeben und das Programm nicht weiter zu veröffentlichen. Das Programm war jedoch zu diesem Zeitpunkt bereits weit verbreitet und durch fremde [[Webseiten]] oder [[Peer-to-Peer]]-Netzwerke weiterhin verfügbar. Auch wenn der Name darauf hindeutet, so gehört Gnutella nicht zum [[GNU-Projekt]].
Das Gnutella-Protokoll wurde von [[Justin Frankel]] (Erfinder und früherer Entwickler des Audioabspielprogramms [[Winamp]]) definiert, der am 14.&nbsp;März 2000 als erste Software für das Gnutella-Netzwerk die [[Beta-Version]] des ebenfalls als „Gnutella“ bezeichneten Programms zum kostenlosen Herunterladen im [[Internet]] freigab. Frankels Arbeitgeber [[AOL]] zwang ihn jedoch, das Projekt aufzugeben, und das Programm war bereits einen Tag nach seiner Veröffentlichung nicht mehr über die Projektwebseite abrufbar.<ref>{{Internetquelle |autor=Christian Rabanus |url=https://www.heise.de/newsticker/meldung/AOL-Tochter-entwickelt-Napster-Clon-21440.html |titel=AOL-Tochter entwickelt Napster-Clon |werk=heise online |datum=2000-03-15 |abruf=2019-12-25}}</ref> Es war jedoch zu diesem Zeitpunkt bereits weit verbreitet und weiterhin durch [[Internet Relay Chat|IRC]]-Chaträume sowie Drittanbieter-[[Website]]s verfügbar.


Einige Zeit später gelang es einer Gruppe von unabhängigen Entwicklern das Gnutella-Protokoll zu entschlüsseln und ihre Ergebnisse zu veröffentlichen. Daraufhin wurden zahlreiche weitere Programme für das Gnutella-Netzwerk entwickelt, die auch den Leistungsumfang des Netzwerkes deutlich erweiterten.
Einige Zeit später gelang es einer Gruppe von unabhängigen Entwicklern, das Gnutella-Protokoll zu entschlüsseln und ihre Ergebnisse zu veröffentlichen. Daraufhin wurden zahlreiche weitere Programme für das Gnutella-Netzwerk entwickelt, die auch den Leistungsumfang des Netzwerkes deutlich erweiterten.


Im Mai 2006 zählte das Gnutella-Netzwerk schätzungsweise 2,2 Millionen Nutzer.<ref>''Stand Mai 2006, Quelle: {{Webarchiv | url=http://www.slyck.com/stats.php | wayback=20060424092141 | text=www.slyck.com}}''</ref>
==Hintergrund==
Vorbild und Anreiz für das Gnutella-Netzwerk war in weiten Teilen das [[Peer-to-Peer]]-Netzwerk [[Napster]], welches bereits seit Juni 1999 einen direkten Austausch von Musikdateien ermöglichte. Durch die überwiegend illegal getauschten Inhalte geriet die Betreiberfirma Napster jedoch immer häufiger in rechtliche Konflikte. Frankels Motivation war es, ein Netzwerk zu errichten, das im Gegensatz zu Napster ohne zentrale [[Server]] und somit auch ohne zentralen Betreiber, gegen den rechtliche Vorwürfe hätten erhoben werden können, auskommen sollte.


==Technik==
== Hintergrund ==
Vorbild und Anreiz für das Gnutella-Netzwerk war in weiten Teilen das zentrale [[Peer-to-Peer]]-Netzwerk [[Napster]], welches bereits seit Juni 1999 einen direkten Austausch von Musikdateien ermöglichte. Durch die überwiegend illegal getauschten Inhalte geriet die Betreiberfirma Napster jedoch immer häufiger in rechtliche Konflikte. Frankels Motivation war es, ein Netzwerk zu errichten, das im Gegensatz zu Napster ohne zentrale [[Server]] und somit auch ohne zentralen Betreiber, gegen den rechtliche Vorwürfe hätten erhoben werden können, auskommen sollte.
Das Gnutella-Netzwerk ist ein vollständig [[dezentral]]es [[Rechnernetz|Netzwerk]]. Das bedeutet, dass jeder Benutzer eine gleichwertige Software verwendet und es keine zentralen [[Server]] gibt, welche die Suchanfragen bearbeiten. Um zu funktionieren muss das Client-Programm mindestens einen anderen Benutzer (sogenannten ''node'') finden. Um dies zu erreichen gibt es diverse Methoden, wie vordefinierte Serverlisten, Gbwebcache-Seiten im Internet oder auch der Austausch von [[Host]]-Listen über [[IRC]]. Wird eine Verbindung aufgebaut, tauschen die Programme Listen erreichbarer Nodes aus, welche dann wiederrum kontaktiert werden bis die eingestellte Anzahl an Verbindungen erreicht wurde.


== Technik ==
Startet ein Benutzer des Netzwerkes eine Suchanfrage, so wird diese zunächst nur an benachbarte Systeme weitergeleitet. Diese leiten dann ihrerseits die Anfrage an ihre benachbarten Systeme weiter, bis die angeforderte Datei gefunden wurde. Anschließend kann eine direkte Verbindung zwischen suchendem und anbietendem Benutzer für die Datenübertragung hergestellt werden.
Das Gnutella-Netzwerk ist ein vollständig [[dezentrales Netzwerk]]. Das bedeutet, dass jeder Benutzer eine gleichwertige Software verwendet und es keine zentralen [[Server]] gibt, welche die Suchanfragen bearbeiten. Um trotzdem zu funktionieren, muss das Client-Programm mindestens einen anderen Benutzer (sogenannten ''Node'') finden. Um dies zu erreichen, gibt es diverse Methoden wie vordefinierte Serverlisten, GWebCache-Seiten im Internet oder auch der Austausch von [[Host (Informationstechnik)|Host]]-Listen über [[Internet Relay Chat|IRC]]. Wird eine Verbindung aufgebaut, tauschen die Programme Listen erreichbarer Nodes aus, welche dann wiederum kontaktiert werden, bis die eingestellte Anzahl an Verbindungen erreicht ist.


Startet ein Benutzer des Netzwerkes eine Suchanfrage, so wird diese zunächst nur an benachbarte Clients weitergeleitet. Diese leiten dann ihrerseits die Anfrage an ihre Nachbarn weiter, bis die angeforderte Datei gefunden wurde. Anschließend kann eine direkte Verbindung zwischen suchendem und anbietendem Benutzer für die Datenübertragung hergestellt werden.
Der besondere Vorteil dieser [[Netzwerkstruktur]] ist die Ausfallsicherheit, da Suchanfragen selbst dann weitergeleitet werden können, wenn einzelne Teile des Netzwerkes zeitweise unerreichbar sind. Nachteilig dagegen ist die lange Dauer der Suchanfrage, da es keine zentralen [[Datenbankindex|Index]]-[[Server]] gibt, und die hohe Netzwerkbelastung durch die teils ziellosen Weiterleitungen der Suchanfragen.


Der besondere Vorteil dieser [[Netzwerkstruktur]] ist die Ausfallsicherheit, da Suchanfragen selbst dann weitergeleitet werden können, wenn einzelne Teile des Netzwerkes zeitweise unerreichbar sind. Nachteilig dagegen ist die lange Dauer der Suchanfrage, da es keine zentralen [[Datenbankindex|Index]]-Server gibt, und die hohe Netzwerkbelastung, da mit der Distanz zum suchenden Client die Anzahl der Anfragen exponentiell anwächst.
==Software (in alphabetischer Reihenfolge) ==


In den letzten Jahren wurde das Gnutella-Netzwerk allerdings deutlich weiterentwickelt, so dass die Effizienz beträchtlich erhöht werden konnte. Beispiele hierfür sind das QRP, mit dem Quellen sich austauschen, welche Dateien sie haben, so dass auf den letzten beiden Schritten die Anfragen nur noch an diejenigen weitergeleitet werden, die möglicherweise antworten können, und dynamische Suchanfragen, wodurch nicht alle benachbarten Systeme auf einmal angefragt werden, sondern nur so viele, bis genügend Suchergebnisse erhalten wurden.
* [[Acquisition]] - (Mac)
* [[Apollon (Tauschbörse)|Apollon]] - giFT (Linux - KDE)
* [[BearShare]] - (Win)
* [[Cabos]] - (Win/Mac)
* [[FrostWire]] - (Java: Linux/Mac/Win/Others; [[Open Source]])
* [[GIFTBoX]] - giFT (Mac)
* [[Gnotella]] - (Gnotella wurde im Dezember [[2001]] eingestellt)
* [[Gnucleus]]
* [[gtk-gnutella]] - (Linux/Unix/BSD/Mac - GTK+; [[Open Source]])
* [http://sourceforge.net/projects/i2phex/i2phex i2phex] auf dem [[i2p]]-Netzwerk basierender Client
* [[LimeWire]] - (Java: Linux/Mac/Win/Others; [[Open Source]])
* [[Morpheus (Tauschbörse)|Morpheus]]
* [[mldonkey]] - [[Open Source]]
* [http://mutella.sourceforge.net/ Mutella] - textbasiertes [[Open Source]]-Programm
* [http://phex.kouk.de/mambo/ Phex] - (Java: Linux/Win/Mac/Solaris/Others; [[Freeware]])
* [[Poisoned]] - giFT (Mac)
* [[Shareaza]] - (Win; [[Open Source]])
* [[Xfactor]] - giFT (Mac)
* [[XoloX]]
* [[Yaggui]] - giFT (Java: Linux/Mac/Win/Others)


==Entwicklung==
== Software ==


; Windows
Das Gnutella-Protokoll wird ständig durch neue Erweiterungen verbessert. Zum einen wird hiermit die Funktionalität erweitert, zum anderen wird mit ausgeklügelten Algorithmen versucht, die benötigte Bandbreite zu reduzieren und die Robustheit zu verbessern.
* [[BearShare]] – [[Microsoft Windows]], [[Closed Source]], Entwicklung 2005 eingestellt, seit dem 4. Mai 2006 an iMesh verkauft.
* [[FileScope]] – [[Microsoft Windows]], [[.Net-Framework]], [[Open Source]] ([[GNU General Public License|GPL]]), [[C-Sharp|C#]], Netzwerk erweiterbar, keine Spy-/Adware, unterstützt Gnutella, [[Gnutella2]] (inkl. Hub-Modus), eD2k, und OpenNap
* [[Gnotella]] [[Microsoft Windows]], Entwicklung 2001 eingestellt
* [[Gnucleus]] – [[Microsoft Windows]], [[Open Source]] ([[GNU General Public License|GPL]]), [[C++]], unterstützt auch [[Gnutella2]]
* [[KCeasy]] – [[Microsoft Windows]], [[Open Source]] unterstützt auch [[Ares Galaxy|Ares]] und [[OpenFT]]
* [[Morpheus (Filesharing-Client)|Morpheus]] – [[Microsoft Windows]], [[Closed Source]], Netzwerk erweiterbar, enthält [[Adware]]/[[Spyware]]
* [[Shareaza]] – [[Microsoft Windows]], [[Open Source]], Netzwerk erweiterbar, unterstützt Gnutella, Gnutella2, [[eDonkey2000]] und BitTorrent
* [[XoloX]] – [[Microsoft Windows]], auch FastTrack und eD2k (Website xolox.nl ist nur geparkt und voll mit Werbelinks)

;Mac OS
* [[Acqlite]] – [[Mac OS X]]
* [[Acquisition]] – [[Mac OS X]], [[Closed Source]] ([[Shareware]])

; Unix-basiert
* [[gtk-gnutella]] – [[Unix]], [[Open Source]] ([[GNU General Public License|GPL]]), [[C (Programmiersprache)|C]]
* [[Mutella]] – [[Unix]], [[Open Source]], kommandozeilenbasiert

; plattformunabhängig
* [[Cabos]] – [[Mac OS X]] und [[Microsoft Windows]], [[Open Source]], basiert auf LimeWire und Acquisition.
* [[Phex]] bzw. [[I2P#I2Phex|I2Phex]] – [[Plattformunabhängigkeit|plattformunabhängig]], [[Open Source]] ([[GNU General Public License|GPL]]), [[Java (Programmiersprache)|Java]]
* [[LimeWire]] – [[Plattformunabhängigkeit|plattformunabhängig]], [[Open Source]] ([[GNU General Public License|GPL]]), [[Java (Programmiersprache)|Java]], bis zur gerichtlichen Sperrung meistgenutzter Gnutella-Client
* [[MLDonkey]] bis Version 2.8.7 – [[Plattformunabhängigkeit|plattformunabhängig]], [[Open Source]] ([[GNU General Public License|GPL]]), [[Objective CAML]], Netzwerke erweiterbar

Einige weitere Clients basieren auf [[giFT]].

== Entwicklung ==

Das Gnutella-Protokoll wird ständig durch neue Erweiterungen verbessert. Zum einen wird hiermit die Funktionalität erweitert, zum anderen wird mit ausgeklügelten Algorithmen versucht, die benötigte Bandbreite zu reduzieren und die Stabilität zu verbessern.


Hierzu gehören:
Hierzu gehören:


* Klassifizierung in Ultrapeer- und Blattknoten
* Klassifizierung in [[Ultrapeer]]- und Blattknoten
* Query-Routing-Protokoll ([http://www.the-gdf.org/wiki/index.php?title=The_Query_Routing_Protocol QRP])
* Query-Routing-Protokoll (QRP)
* Horizontstatistik ([http://www.schuerger.com/gnutella/hsep.html HSEP])
* Horizontstatistik (HSEP)
* Aktive und passive Warteschlangen für Dateitransfers
* Aktive und passive Warteschlangen für Dateitransfers
* Komprimierung der P2P-Verbindungen [http://www.the-gdf.org/wiki/index.php?title=Link_Compression_Extension]
* Komprimierung der P2P-Verbindungen (Link Compression Extension)
* Propagieren alternativer Dateiquellen über das sogenannte [http://www.the-gdf.org/wiki/index.php?title=The_Download_Mesh Download Mesh]
* Propagieren alternativer Dateiquellen über das sogenannte Download Mesh
* Download-Verifikation mittels [[Tiger-Tree Hash]]es
* Download-Verifikation mittels [[Tiger-Tree-Hash]]es
* Meta-Daten
* Meta-Daten


Viele Gnutella-Clients sind [[Open Source Software]]. Dementsprechend ist es möglich, an den Clients selbst mitzuwirken.
Viele Gnutella-Clients sind [[Open Source|Open-Source-Software]]. Dementsprechend ist es möglich, an der Entwicklung der Clients selbst mitzuwirken.


==Nachfolger==
== Nachfolger ==
Das Gnutella-Protokoll hat einige konzeptionelle Schwächen, die sich ohne Bruch der [[Kompatibilität]] nicht beheben lassen. Als Nachfolger von Gnutella, die diese Schwächen beheben sollen, werden vielfach Netzwerke nach dem [[Kademlia]]-Algorithmus aufgefasst. Bei Kademlia gibt es ebenfalls keine zentralen Server, jedoch wird für jede einzelne denkbare Suchabfrage jeweils ein bestimmter "Ansprechpartner" rechnerisch ermittelt, der für diese Abfrage "zuständig" ist. Damit wird das bei Gnutella bestehende Problem vermieden, dass praktisch jede Suchabfrage zu jedem Rechner gelangen muss, wenn auch seltene Dateien erfolgreich gefunden werden sollen.<br />
[[2002]] wurde das, bis auf das alte Handshake neu erdachte [[Gnutella2]]-Protokoll veröffentlicht.


Das Gnutella-Protokoll hat einige konzeptionelle Schwächen, die sich ohne Bruch der [[Kompatibilität (Technik)|Kompatibilität]] nicht beheben lassen. Als Erweiterung von Gnutella, die diese Schwächen beheben soll, werden vielfach Netzwerke nach dem [[Kademlia]]-Algorithmus aufgefasst, wie zum Beispiel das von den Entwicklern von [[LimeWire]] entworfene mojito DHT, das im Moment jedoch allein zur Quellenidentifikation genutzt wird. Bei auf Kademlia beruhenden Netzwerken gibt es ebenfalls keine zentralen Server, jedoch wird für jede einzelne denkbare Suchabfrage jeweils ein bestimmter „Ansprechpartner“ rechnerisch ermittelt, der für diese Abfrage „zuständig“ ist. Damit wird das bei Gnutella bestehende Problem vermieden, dass praktisch jede Suchabfrage zu jedem Rechner gelangen muss, wenn auch seltene Dateien erfolgreich gefunden werden sollen. Im Gegenzug sind allerdings die unscharfen Suchen via Suchwort, für die Gnutella entwickelt wurde, mit Kademlia schwerer effizient zu implementieren, da nur Suchen nach exakten Werten möglich sind, während in Gnutella alle Treffer zurückgegeben werden, auf die die Suchwörter passen. In diesem Zusammenhang spricht man bei Gnutella auch von einem unstrukturierten [[Overlay Netzwerk|Overlay]], während es sich bei Kademlia um ein strukturiertes Overlay handelt.
==Aktuelle Daten==
Derzeit besitzt das Gnutella-Netzwerk durchschnittlich etwa 1.200.000 (Stand: März 2005) aktive Benutzer (der plötzliche Anstieg dieser Zahlen über die 400.000 im August und besonders November 2004 rührt von der Verbesserung der Netzwerkevalutation her). Es zählt daher zu den großen Netzwerken.
Eine aktuelle Statistik findet sich hier: http://www.limewire.com/english/content/netsize.shtml


2002 wurde das bis auf das alte Handshake neu erfundene [[Gnutella2]]-Protokoll veröffentlicht, welches von der Gnutella-Entwicklergemeinde nicht als Nachfolgeprotokoll anerkannt wird. Da es inkompatibel zu Gnutella ist, wird es als unabhängiges Protokoll betrachtet, obwohl beide Netzwerke nach wie vor durch den gleichen Handshake miteinander verwoben sind. Seinem Entwickler zufolge skaliert das Protokoll besser als Gnutella, da es über effizientere Suchmechanismen verfügt und durch seine spezifische Paketstruktur ohne Kompatibilitätsverlust fast unbegrenzt erweitert werden kann. Außerdem wird angegeben, dass es einfacher ist, einen Gnutella2-Client neu zu entwerfen, als einen Gnutella Client mit vergleichbaren Fähigkeiten. Gnutella-Entwickler widersprechen der Aussage über die Skalierbarkeit und Effizienz allerdings und führen an, dass die gleiche Erweiterbarkeit in Gnutella bereits durch Generic Gnutella Extension Protocol (GGEP)-Erweiterungen gegeben ist.
==Siehe auch ==
* [[Gnutella2]]-Protokoll
* [[File Sharing]]


==Weblinks==
== Weblinks ==
*[[b:Gnutella für Benutzer|Gnutella Tutorial als Wikibook]]
{{Wikibooks|Gnutella für Benutzer|Gnutella Tutorial als Wikibook}}
*[http://www.the-gdf.org/ Gnutella Developer Wiki]
* [http://groups.yahoo.com/group/the_gdf Gnutella Developer Forum]
* [http://rfc-gnutella.sf.net/ Dokumentation des Gnutella-Protokolls]
*[http://groups.yahoo.com/group/the_gdf Gnutella Developer Forum]
*[http://rfc-gnutella.sf.net Dokumentation des Gnutella-Protokolls]


== Quellen ==
[[Kategorie:Peer-to-Peer]]
<references />


[[Kategorie:Peer-to-Peer]]
[[en:Gnutella]]
[[Kategorie:Download-Portal]]
[[es:Gnutella]]
[[Kategorie:Online seit 2000]]
[[fi:Gnutella]]
[[fr:Gnutella]]
[[hu:Gnutella]]
[[it:Gnutella]]
[[ja:Gnutella]]
[[ko:누텔라]]
[[lt:Gnutella]]
[[ms:Gnutella]]
[[nl:Gnutella]]
[[pl:Gnutella]]
[[pt:Gnutella]]
[[ru:Gnutella]]
[[sv:Gnutella]]

Aktuelle Version vom 3. Mai 2025, 00:29 Uhr

Gnutella (gesprochen [nʊˈtɛlə] mit einem stummen g) ist ein dezentrales Peer-to-Peer-Netzwerkprotokoll für das Filesharing. Es gibt weltweit mehrere Millionen Nutzer, die über verschiedene Clients auf das Netzwerk zugreifen. Der meist genutzte und bekannteste Client war lange Zeit LimeWire. Trotz des Namens gehört Gnutella nicht zum GNU-Projekt.

Das Gnutella-Protokoll wurde von Justin Frankel (Erfinder und früherer Entwickler des Audioabspielprogramms Winamp) definiert, der am 14. März 2000 als erste Software für das Gnutella-Netzwerk die Beta-Version des ebenfalls als „Gnutella“ bezeichneten Programms zum kostenlosen Herunterladen im Internet freigab. Frankels Arbeitgeber AOL zwang ihn jedoch, das Projekt aufzugeben, und das Programm war bereits einen Tag nach seiner Veröffentlichung nicht mehr über die Projektwebseite abrufbar.[1] Es war jedoch zu diesem Zeitpunkt bereits weit verbreitet und weiterhin durch IRC-Chaträume sowie Drittanbieter-Websites verfügbar.

Einige Zeit später gelang es einer Gruppe von unabhängigen Entwicklern, das Gnutella-Protokoll zu entschlüsseln und ihre Ergebnisse zu veröffentlichen. Daraufhin wurden zahlreiche weitere Programme für das Gnutella-Netzwerk entwickelt, die auch den Leistungsumfang des Netzwerkes deutlich erweiterten.

Im Mai 2006 zählte das Gnutella-Netzwerk schätzungsweise 2,2 Millionen Nutzer.[2]

Vorbild und Anreiz für das Gnutella-Netzwerk war in weiten Teilen das zentrale Peer-to-Peer-Netzwerk Napster, welches bereits seit Juni 1999 einen direkten Austausch von Musikdateien ermöglichte. Durch die überwiegend illegal getauschten Inhalte geriet die Betreiberfirma Napster jedoch immer häufiger in rechtliche Konflikte. Frankels Motivation war es, ein Netzwerk zu errichten, das im Gegensatz zu Napster ohne zentrale Server und somit auch ohne zentralen Betreiber, gegen den rechtliche Vorwürfe hätten erhoben werden können, auskommen sollte.

Das Gnutella-Netzwerk ist ein vollständig dezentrales Netzwerk. Das bedeutet, dass jeder Benutzer eine gleichwertige Software verwendet und es keine zentralen Server gibt, welche die Suchanfragen bearbeiten. Um trotzdem zu funktionieren, muss das Client-Programm mindestens einen anderen Benutzer (sogenannten Node) finden. Um dies zu erreichen, gibt es diverse Methoden wie vordefinierte Serverlisten, GWebCache-Seiten im Internet oder auch der Austausch von Host-Listen über IRC. Wird eine Verbindung aufgebaut, tauschen die Programme Listen erreichbarer Nodes aus, welche dann wiederum kontaktiert werden, bis die eingestellte Anzahl an Verbindungen erreicht ist.

Startet ein Benutzer des Netzwerkes eine Suchanfrage, so wird diese zunächst nur an benachbarte Clients weitergeleitet. Diese leiten dann ihrerseits die Anfrage an ihre Nachbarn weiter, bis die angeforderte Datei gefunden wurde. Anschließend kann eine direkte Verbindung zwischen suchendem und anbietendem Benutzer für die Datenübertragung hergestellt werden.

Der besondere Vorteil dieser Netzwerkstruktur ist die Ausfallsicherheit, da Suchanfragen selbst dann weitergeleitet werden können, wenn einzelne Teile des Netzwerkes zeitweise unerreichbar sind. Nachteilig dagegen ist die lange Dauer der Suchanfrage, da es keine zentralen Index-Server gibt, und die hohe Netzwerkbelastung, da mit der Distanz zum suchenden Client die Anzahl der Anfragen exponentiell anwächst.

In den letzten Jahren wurde das Gnutella-Netzwerk allerdings deutlich weiterentwickelt, so dass die Effizienz beträchtlich erhöht werden konnte. Beispiele hierfür sind das QRP, mit dem Quellen sich austauschen, welche Dateien sie haben, so dass auf den letzten beiden Schritten die Anfragen nur noch an diejenigen weitergeleitet werden, die möglicherweise antworten können, und dynamische Suchanfragen, wodurch nicht alle benachbarten Systeme auf einmal angefragt werden, sondern nur so viele, bis genügend Suchergebnisse erhalten wurden.

Windows
Mac OS
Unix-basiert
plattformunabhängig

Einige weitere Clients basieren auf giFT.

Das Gnutella-Protokoll wird ständig durch neue Erweiterungen verbessert. Zum einen wird hiermit die Funktionalität erweitert, zum anderen wird mit ausgeklügelten Algorithmen versucht, die benötigte Bandbreite zu reduzieren und die Stabilität zu verbessern.

Hierzu gehören:

  • Klassifizierung in Ultrapeer- und Blattknoten
  • Query-Routing-Protokoll (QRP)
  • Horizontstatistik (HSEP)
  • Aktive und passive Warteschlangen für Dateitransfers
  • Komprimierung der P2P-Verbindungen (Link Compression Extension)
  • Propagieren alternativer Dateiquellen über das sogenannte Download Mesh
  • Download-Verifikation mittels Tiger-Tree-Hashes
  • Meta-Daten

Viele Gnutella-Clients sind Open-Source-Software. Dementsprechend ist es möglich, an der Entwicklung der Clients selbst mitzuwirken.

Das Gnutella-Protokoll hat einige konzeptionelle Schwächen, die sich ohne Bruch der Kompatibilität nicht beheben lassen. Als Erweiterung von Gnutella, die diese Schwächen beheben soll, werden vielfach Netzwerke nach dem Kademlia-Algorithmus aufgefasst, wie zum Beispiel das von den Entwicklern von LimeWire entworfene mojito DHT, das im Moment jedoch allein zur Quellenidentifikation genutzt wird. Bei auf Kademlia beruhenden Netzwerken gibt es ebenfalls keine zentralen Server, jedoch wird für jede einzelne denkbare Suchabfrage jeweils ein bestimmter „Ansprechpartner“ rechnerisch ermittelt, der für diese Abfrage „zuständig“ ist. Damit wird das bei Gnutella bestehende Problem vermieden, dass praktisch jede Suchabfrage zu jedem Rechner gelangen muss, wenn auch seltene Dateien erfolgreich gefunden werden sollen. Im Gegenzug sind allerdings die unscharfen Suchen via Suchwort, für die Gnutella entwickelt wurde, mit Kademlia schwerer effizient zu implementieren, da nur Suchen nach exakten Werten möglich sind, während in Gnutella alle Treffer zurückgegeben werden, auf die die Suchwörter passen. In diesem Zusammenhang spricht man bei Gnutella auch von einem unstrukturierten Overlay, während es sich bei Kademlia um ein strukturiertes Overlay handelt.

2002 wurde das bis auf das alte Handshake neu erfundene Gnutella2-Protokoll veröffentlicht, welches von der Gnutella-Entwicklergemeinde nicht als Nachfolgeprotokoll anerkannt wird. Da es inkompatibel zu Gnutella ist, wird es als unabhängiges Protokoll betrachtet, obwohl beide Netzwerke nach wie vor durch den gleichen Handshake miteinander verwoben sind. Seinem Entwickler zufolge skaliert das Protokoll besser als Gnutella, da es über effizientere Suchmechanismen verfügt und durch seine spezifische Paketstruktur ohne Kompatibilitätsverlust fast unbegrenzt erweitert werden kann. Außerdem wird angegeben, dass es einfacher ist, einen Gnutella2-Client neu zu entwerfen, als einen Gnutella Client mit vergleichbaren Fähigkeiten. Gnutella-Entwickler widersprechen der Aussage über die Skalierbarkeit und Effizienz allerdings und führen an, dass die gleiche Erweiterbarkeit in Gnutella bereits durch Generic Gnutella Extension Protocol (GGEP)-Erweiterungen gegeben ist.

Wikibooks: Gnutella Tutorial als Wikibook – Lern- und Lehrmaterialien
  1. Christian Rabanus: AOL-Tochter entwickelt Napster-Clon. In: heise online. 15. März 2000, abgerufen am 25. Dezember 2019.
  2. Stand Mai 2006, Quelle: www.slyck.com (Memento vom 24. April 2006 im Internet Archive)