WikiDer > Gnutella
Gnutella ist eine dezentrale P2P-Netzwerk. Ein P2P-Netzwerk ist ein Netzwerk, in dem verschiedene Computer aus der ganzen Welt miteinander verbunden sind. Nach besonderem P2P-Programme Dateien können über diese Verbindung heruntergeladen und gesendet werden. Auf diese Weise viel Musik- getauscht.
Gnutella war die erste vollständig dezentralisierte Protokoll für P2P-Anwendungen. Dezentral bedeutet, dass es keine Server gibt, sondern nur Kunden sind im Netz vorhanden. Das Netzwerk wurde am 14. März 2000 gestartet und hatte auf seinem Höhepunkt über 3 Millionen Hosts. Im Jahr 2007 war dies mit einem Marktanteil von 40 % das am weitesten verbreitete Protokoll. Gnutella ist Open Source.
Geschichte
Nach dem großen Erfolg von Napster Es war sinnvoll, dass auch andere Unternehmen ein Produkt entwickeln würden, um Dateien (hauptsächlich Musik) online zu teilen. Allerdings war Napster nicht komplett dezentralisiert und nutzte einen zentralen Server, der die Namen der Songs enthielt. Dies machte es einfach, Napster nach einem Rechtsstreit zu schließen. Gnutella hingegen arbeitet ohne zentralen Server und funktioniert somit komplett Peer-To-Peer.
Der erste Client von Gnutella wurde entwickelt von Justin Frankel und Tom Pfeffer von Nullsoft, Anfang 2000 kurz nach der Übernahme durch AOL. Am 14. März 2000 wurde das Programm mit einer Ankündigung auf dem Nullsoft-Server online gestellt Schrägstrich. Bereits am ersten Tag wurde dies von Tausenden heruntergeladen und später die Quellcode erhältlich unter der GNU General Public License.Wegen Rechtswidrigkeit zurückgezogen AOL am nächsten Tag das Programm vom Server und verbot Nullsoft, weiter daran zu arbeiten. Es war jedoch zu spät, um Gnutella zu stoppen und bald tauchten kompatible auf kostenlos und Open Source Versionen und so kam es zur Entwicklung verschiedener Clients für Gnutella.
Mit der Schließung von Napster Anfang 2001 wechselten viele dieser Benutzer zu Gnutella-Clients und erhielten Variationen des Protokolls, die es erlaubten, anstatt jeden Benutzer als Client und Server zu verwenden, einige Benutzer als eine Art "Super-Peers". ' um zu sehen. Diese können die Fragen und Antworten für die verbundenen Benutzer besser leiten. Infolgedessen stieg die Popularität. Ende 2001 wurde der Gnutella-Kunde Limewire Basic kostenlos und Open Source, und auch Morpheus verließ seine Überholspur-basierte Peer-to-Peer-Software und veröffentlichte im Februar 2002 einen Client basierend auf dem Gnutella-Protokoll. So steht Gnutella heute nicht mehr für bestimmte Projekte oder Software, sondern für das hier verwendete Protokoll zum Filesharing.
Die Architektur
Gnutella ist komplett dezentralisiert und arbeitet daher ohne einen zentralen Server. Jeder Computer hat eine Funktion als Client und Server, und so wird die Anforderung einer Datei in 6 bis 7 Schritten an Tausende anderer Clients weitergeleitet. Das erste, was ein Client beim Starten der Software tun muss, ist sich mit einem oder mehreren anderen Clients zu verbinden, um eine Anfrage zu übergeben, und dies erfolgt über eine mitgelieferte Adressliste oder einen aktualisierten Web-Cache mit bekannten Knoten, UDP-Host-Caches und sehr selten sogar IRC. Auf diese Weise erhält der Client eine Liste der funktionierenden Knoten.Bei Weiterleitung einer Anfrage prüfen die angeschlossenen Computer, ob sie diese Nummer auf ihrer lokalen Festplatte haben und senden gegebenenfalls den Dateinamen und die IP-Adresse an den Anfragenden . Gleichzeitig senden alle diese Maschinen dieselbe Anfrage an die Computer, mit denen sie verbunden sind, und diese wiederholt sich. Jede Frage hat auch eine 'TTL' (Time To Live), die die Frage einschränkt. Eine Frage kann bis zu 6 oder 7 Schritte umfassen. Wenn also jeder Computer mit 4 anderen verbunden ist, bedeutet dies, dass die Frage bis zu etwa 8000 Maschinen umfassen kann, wenn sie 7 Schritte tief geht.
In der Praxis kann dies überlastet werden und bei Nutzern mit langsameren Verbindungen werden „Engpässe“ gesehen, aber dafür wurden bereits mehrere Lösungen entwickelt. So wurde beispielsweise schnell die Verwendung von „Ultrapeers“ und „Blättern“ eingeführt, so dass für diesen Zweck Maschinen verwendet werden, die Nachrichten routen können, und Knoten, die in das Netzwerk eintreten, als „Blätter“ beiseite gehalten werden. Auf diese Weise können die Suchen im Netzwerk weiter vorangetrieben werden und haben die Möglichkeit, alle Arten von Änderungen in der Topologie vorzunehmen, die die Effektivität und Skalierbarkeit des Systems verbessern.
Darüber hinaus hat Gnutella einige Techniken integriert, um den Verkehr zu reduzieren und die Suche effizienter zu gestalten. Bemerkenswerte Neuerungen sind das Query Routing Protocol (QRP) und Dynamic Querying (DQ). QRP stellt sicher, dass eine Suche nur die Maschinen erreicht, die wahrscheinlich Eigentümer der Datei sind, während DQ dafür sorgt, dass die Suche gestoppt wird, wenn das Programm genügend Antworten erhalten hat. Letzteres reduziert hauptsächlich den Verkehr bei beliebten Suchanfragen.
Dies ist eine sehr einfache, aber sehr gut durchdachte Strategie, um schnell viele Maschinen zu erreichen, mit dem großen Vorteil, dass es immer funktioniert, solange man mit 1 Maschine verbunden ist, auf der die Gnutella-Software läuft. Dies hat auch Nachteile:
- Es kann eine Weile dauern, bis eine Frage die 7 Schritte durchlaufen hat und eine Antwort zurückgegeben wird.
- Es gibt keine Garantie, dass sich die gesuchte Datei auf einem dieser 8000 Computer befindet.
- Auch die Menschen selbst sind Teil des Netzwerks und der eigene Computer wird daher auch selbst Fragen beantworten und weiterleiten, was zu einer notwendigen Verringerung der Bandbreite führt.
Die dezentrale Struktur macht das Herunterfahren des Netzwerks extrem schwierig, da keine einzelne Maschine alles überwacht oder welche Dateien ausgetauscht werden, was auch daran liegt, dass sich viele Gnutella-Clients das Netzwerk teilen. Das ist der größte Unterschied zu Napster bei denen die Dateinamen auf einem zentralen Server lagen, was das Stoppen dieses Dienstes erheblich erleichterte.
Funktionen
Als Gnutella auf den Markt kam, arbeitete es vollständig an einem sogenannten Query-Flooding-basierten Protokoll. Dies ist in Version 0.4 (veraltet) noch deutlich zu sehen, wo mit 5 verschiedenen Pakettypen gearbeitet wurde:
- Ping: Hosts im Netzwerk suchen/entdecken
- Pong: Antwort auf Ping
- Abfrage: Datei suchen
- Abfragetreffer: Antwort auf Abfrage
- Push: Laden Sie die Frage für eine bestimmte Maschine herunter
Diese Pakete dienen hauptsächlich der Suche im Gnutella-Netzwerk. Der eigentliche Dateitransfer erfolgt über HTTP, die Entwicklung des Gnutella-Protokolls wird vom Gnutella Developers Forum geleitet und es wurden bereits viele neue Erweiterungen entwickelt, die es bis zur Version 0.6 bringen würden, aber da dies alles von unabhängigen Entwicklern implementiert wird, es ist ihnen noch nicht gelungen, eine finalisierte Version 0.6 zusammenzustellen.
Vergleich mit Napster
Sowohl Napster als auch Gnutella sind File-Sharing-Systeme in einem Peer-to-Peer-Netzwerk mit 2 großen Gemeinsamkeiten:
- Benutzer legen ihre Dateien, die sie teilen möchten, auf ihrer Festplatte ab und stellen sie jedem zum Herunterladen per Peer-to-Peer-Methode zur Verfügung.
- Benutzer verwenden die Gnutella-Software (siehe 'Clients'), um sich mit dem Gnutella-Netzwerk zu verbinden.
Allerdings gibt es auch Unterschiede zwischen dem älteren Napster und Gnutella:
- Es gibt keine zentrale Datenbank, die weiß, welche Dateien verfügbar sind, sondern alle Maschinen teilen sich durch eine Bedarfsverteilung mit, welche Dateien verfügbar sind.
- Es gibt viele verschiedene Client-Programme, um auf das Gnutella-Netzwerk zuzugreifen, während Napster nur eine Anwendung hatte.
Kunden
Zu den Programmen, die mit Gnutella arbeiten, gehören:
- Erwerb
- BearShare
- Cabos
- GnucDNA
- Geschenk-Gnutella (Plug-in)
- Gnukleus
- gtk-gnutella
- KCeasy
- LimeWire (ist nach Version 5.5.10 nicht mehr funktionsfähig)
- MLEsel
- Morpheus
- Phex
- Shareaza
- Tauscher
- Symella
- XoloX
Wissenswertes
Der Name Gnutella ist a Kontraktion von GNU und Nutella. Vermutlich haben die Entwickler Justin Frankel und Tom Pepper während der Entwicklung des Originalprotokolls, das unter der veröffentlicht wurde, viel Nutella gegessen GNU General Public License (GPL). Nutella ist der Markenname eines beliebten Schoko-Haselnuss-Aufstrich von dem Italienisch Unternehmen Ferrero. In vielen Sprachen werden beide Namen gleich ausgesprochen.
Missverständnisse
Nach dem LimeWire geschlossen, es gab viele Missverständnisse. wie "LimeWire ist illegal": Richtig, LimeWire ist verboten, das Gnutella-Netzwerk jedoch nicht. Nur 1 Client des Gnutella-Netzwerks wird blockiert, nicht das gesamte Netzwerk. Dies bedeutet, dass die Verwendung eines Clients, der das Gnutella-Netzwerk verwendet, weiterhin möglich ist und in gewissem Umfang legal ist.
Externer Link
- (und) Wiki zur Entwicklung des Gnutella-Protokolls (archiviert)
- (und) Wie das Zeug funktioniert - Wie Gnutella funktioniert
- (und) Ankündigung auf Slashdot