|
| |
Gnutella-Netzwerk
Infrastruktur :
Netzwerke : Virtuelle
: Gnutella Network : Übersicht
25-Feb-2001/14-Jan-07
Übersicht
Das Gnutella Netzwerk ist ein dezentral operierendes Netzwerk von
untereinander vernetzeten Rechnern, das prinzipiell ohne zentralen
Server funktioniert. Z.Zt. arbeitet es jedoch noch noch mit
semizentralen Elementen, um das Problem der Verteilung der Netzlast zu
umgehen. Dabei werden sogenannte Reflektoren eingesetzt, um die
Modemnutzer zu entlasten, die sonst aufgrund der grossen Menge der
Anfragen, die an ihren Computer gestellt werden, praktisch von den
Benutzung des Netzwerkes ausgeschlossen wären.
Die am Gnutella-Netzwerk teilnehmenden Rechner tauschen miteinander
Suchanfragen aus und beantworten sie. Treffer werden auf demselben Weg
wie die Suchanfrage zurückgesandt, der Dateiautausch wird jedoch direkt
abgewickelt. Eine Suchanfrage enthält stets eine TTL (Time to live), die
bei jeder Zwischenstation um "1" heruntergesetzt wird. Damit soll ein
Überfluten des Netzes mit unendlichen Suchanfragen verhindert werden.
Suchanfragen nach Files werden nicht an einen Zentralen Server
weitergeleitet, sondern von User zu User weitergereicht, bis es auf das
gefundene File stößt. Leider bringt dies auch den Nachteil gegenüber dem
Fast Track Netzwerk mit sich, bei Suchanfragen viel langsamer zu sein.
Winap Programmierer
Justing
Frankel schuf im März 2000 ein neues Filesharing-Tool und damit die
Grundlage für viele weitere Fileshariung Tools: Das Gnutella – Netzwerk.
Mittlerweile gibt es zahlreiche Gnutella Clients, die bekanntesten sind:
BearShare, Limewire, Gnucleus, Gtk-Gnutella, und seit neuestem auch
Morpheus. Das Original Gnutella ist leider nie über das Beta- Stadium
(Version 0.5a) hinausgekommen und absolut nicht zu empfehlen.
Seit die ehemals so beliebte und weit verbreitete
Filesharing-Software Morpheus in seiner neuen Version nun mit dem
Gnutella – Netzwerk arbeitet, sind die Userzahlen hier enorm gestiegen.
Ganze 300 000 User sind zeitweise gleichzeitig mit dem Gnutella Netzwerk
verbunden, wodurch hier natürlich ein größeres Potential an Files zum
download zur Verfügung steht.
Gnutella ist ein allgemeines Filesharing-System, in dem Nutzer
Dateien zur gemeinsamen Nutzung mit anderen zur Verfügung stellen. Im
Gegensatz zu bspw. Napster kommt Gnutella ohne einen zentralen Server
aus. Die Vorteile eines solchen dezentralen Konzepts liegen auf der
Hand:
- Die Anonymität des Nutzers (i.S.v. Downloader) ist gewahrt, da
keine Anmeldung und Identitätsprüfung durch eine Netzzentrale
erfolgt (Ein gewichtiger Unterschied zu FreeNet ist, dass die
Anonymität bei Gnutella nur gewährleistet ist, solange keine Daten
ausgetauscht werden. Bei Zustandekommen eines Dateitausches wird die
IP-Adresse der Benutzers übermittelt);
- Das Netz ist nicht durch Hackerangriffe lahmlegbar, fällt ein
Knoten aus, sucht man sich halt einen anderen;
- Juristische Maßnahmen gegen das System sind nicht möglich, da
Gnutella nur ein Protokoll ist, es gibt keine juristische Person,
gegen die man vorgehen könnte;
- Es gibt keine Firma, die im Hintergrund steht und die
möglicherweise Protokoll führt über das Nutzungsverhalten ihrer
Kunden und die so gewonnenen Anwenderprofile für kommerzielle Zwecke
mißbraucht.
Jeder Nutzer benötigt einen Gnutella-kompatiblen Servent (Kombination
aus Server und Client), um als Knotenpunkt im Netz zu fungieren. Dieser
Servent ist eine Kombination aus Such-Servent, HTTP-Server und
HTTP-Client, einige Servent haben zusätzlich noch ein IRC- System
eingebaut. Beim Start versucht sich der Servent mit anderen, ihm
bekannten Knoten zu verbinden. Von jedem Knoten, mit dem eine Verbindung
zustande kommt, erhält er dann eine Liste der Hosts, die letzterem
Knoten bekannt sind. Sind genügend Verbindungen zustande gekommen (bei
Anbindung über Modem 2 bis 4, bei Ethernetverbindung ins Internet 8 oder
mehr), kann man anfangen, nach Dateien zu suchen.
Die Suche läuft bei Gnutella nach dem klassischen Prinzip des
Schneeballeffekts ab: Der Urheber der Suche fragt bei allen mit ihm
direkt verbundenen Hosts nach, ob Dateien vorhanden sind, die die
gewählten Stichworte enhalten. Die Empfänger der Anfrage geben eine
entsprechende Rückmeldung falls die Suche erfolgreich war und leiten
unabhängig davon ihrerseits die Suche zu allen weiteren Knoten, mit
denen sie jeweils direkt verbunden sind, weiter. Die Knotenrechner,
wissen selber nicht, ob der Host, der die Anfrage an sie geleitet hat,
auch ihr Urheber ist oder selbst nur als Relay fungiert.
Da nicht alle Hosts des Gnutellanetzes zu jeder Zeit aktiv sind, ist
irgendwann die Suche beendet, obwohl auf anderen Rechnern vielleicht
noch passende Dateien vorhanden wären. Diese Knoten liegen dann hinter
dem sogenannten Suchhorizont, der erfahrungsgemäß nie mehr als 10000
Rechner umfassen wird. War die Suche erfolgreich, so erhält man als
Antwort die Namen aller passenden Dateien und die IPs ihrer Hostrechner
innerhalb des Suchhorizonts. Aus diesen kann man sich einzelne Dateien
aussuchen und herunterladen.
War die Suche noch indirekt und darauf ausgerichtet, möglichst viele
Knoten mit einzubeziehen, so funktionert der Download auf wesentlich
direktere Weise: Zwischen dem Empfänger und dem (Noch-)Besitzer der
gewünschten Datei wird eine HTTP-Verbindung hergestellt und die Datei
direkt zwischen den Rechnern übertragen. Sollte dabei die Verbindung
unterbrochen werden (z.B. weil der Sender über Modem im Internet war und
während der Übertragung aufgelegt hat), so kann bei einem späteren
erneuten Versuch die Datenübertragung da fortgesetzt werden, wo sie
abgebrochen wurde.
Der Original-Gnutella-Servent wurde als Preview in der Version 0.48
im März 2000 von Justin Frankel, dem Gründer der Firma Nullsoft zum
Download freigegeben. Bereits kurze Zeit später sorgte Nullsofts
Mutterfirma AOL dafür, dass das Programm in der Versenkung verschwand.
Jedoch waren mittlerweile eine Reihe von Kopien in Umlauf und es gelang
findigen Programmierern durch Reverse Engineering, die Funktionsweise
und das Protokoll von Gnutella nachzubauen und auf dieser Basis
kompatible Servents zu entwickeln.
Empfehlenswerte Gnutella-Clones sind
BearShare und
Gnucleus für Win-32-Systeme sowie die systemunabhängigen Servents
LimeWire und Furi auf Java-Basis. Auch das Originalprogramm scheint laut
"gut unterrichteter Kreise" von Insidern inoffiziell weiterentwickelt zu
werden, so dass möglicherweise trotz AOLs Bann eines Tages eine Version
1.0 verfügbar sein wird.
Quelle:
ig.cs.tu-berlin.de/w2000/ir1/referate2/k-3b, Stand: 12-Feb-2002.
Logo:
Aktuelle Queries im Gnutella-Netzwerk
Mit dem Gnutella Meter können die aktuellen und häufigsten Abfragen
im Gnutella-Netzwerk angezeigt werden; um die Funktion nutzen zu können,
muss JavaScript aktviert sein. Der "Adult word"-Filter ist hier
deaktiviert.
Top 10:
Top 20:
Top 30:
Quelle: www.gnutellameter.com.
Probleme und Lösungen
Abgebrochene Downloads
Die in Gnutella-Servents eingesetzten HTTP-Server sind
resume-fähig, daher wird bei einem unterbrochenen Download nach der
Neuverbindung an der Stelle fortgesetzt, an der der letzte Versuch
scheiterte. Sollte jedoch der Zielhost nicht mehr mit dem Netz
verbunden sein, so kann Gnutella natürlich nicht viel machen. In
solchen Fällen bleibt nur der erneute Einwahlversuch zu einem
späteren Zeitpunkt.
Anonymität der Nutzer
Kein anderer Nutzer im Gnutella-Netzwerk weiß, von wem eine
bestimmte Suchanfrage ausgegangen ist. Die einzige Möglichkeit wäre,
gezielt (falsche) Dateien ins Netz zu stellen und zu warten, wer
versucht, diese herunterzuladen, da der Download durch das
verwendete HTTP-Protokoll im Gegensatz zur Suche nicht anonym ist.
Anonymität der Anbieter
Ein Anbieter, der illegale oder urheberrechtlich geschützte
Inhalte ins Gnutella-Netz stellt, kann genauso leicht erwischt
werden wie jemand, der solche Dateien auf einen File- oder
Web-Server ablegt. Einen (beschränkten) Schutz bieten hier lediglich
dynamische IPs, sofern der genutzte Provider seine Logs nicht zu
lange speichert...
Serverausfälle
Sever? Welcher Server?-) Fallen ein oder mehrere Knoten im Netz
aus, so sind lediglich die dort gespeicherten Dateien für andere
Nutzer nicht erreichbar, das übrige Netz funktioniert dennoch
weiter.
Juristische Attacken
Gegen wen? Gnutella ist keine Firma wie Napster, die man mit
Klagen überhäufen könnte. Gnutella ist nur ein Protokoll, das Netz
lebt durch seine Nutzer. Gnutella auf diese Weise lahmlegen zu
wollen würde bedeuten, jeden einzelnen Gnutella-Anwender, im Zweifel
sämtliche Internetuser verklagen zu müssen. (Nach Aussagen der
Entwickler ist Gnutella nicht nur fähig, einen Atomkrieg zu
überstehen, sondern sogar Angriffe einer hungrigen Meute von
Rechtsanwälten.)
Einstiegspunkt finden
Gnutella arbeitet über "Freunde", die miteinander verbunden sind.
Die Schwierigkeit ist natürlich, zunächst einen "guten" Freund zu
finden, der möglichst wieder viele gute Freunde kennt. Zur Lösung
dieses Problems gibt es sogenannte Host-Caches, das sind Anbieter,
die eine möglichst umfangreiche und aktuelle Liste von Rechnern im
Gnutella-Netz halten, aber selbst keine Dateien zur gemeinsamen
Nutzung bereitstellen. Nach dem Verbinden mit einem solchen Rechner
überträgt dieser wie jeder Servent seine Friends-Liste, trennt sich
dann aber sofort wieder. Die meisten Servents verbinden sich
standardmäßig beim Start mit einem dieser Dienste, allen anderen sei
gnutellahosts.com:6346, router.limewire.com:6346 und
gnutella.hostcache.com:6346 empfohlen
Langsame Verbindungen
Wenn man eine gesuchte Datei nur auf einem Rechner findet, der
per Modem ans Inernet angebunden ist, so kann die Verbindung nunmal
bestenfalls nur 5 KByte/s schnell sein. Gegen Beschränkungen auf
Hardwareseite ist selbst Gnutella machtlos...
Quelle:
ig.cs.tu-berlin.de/w2000/ir1/referate2/k-3b, Stand: 12-Feb-2002.
Siehe auch
Netmarks
Jordan Ritter <jpr5@darkridge.com>,
"Why Gnutella Can't Scale. No, Really", ca. Februar 2001,
www.darkridge.com/~jpr5/doc/gnutella.html.
Kunwadee Sripanidkulchai <kunwadee@cs.cmu.edu>,
"The popularity of Gnutella queries and its implications on
scalability", Carnegie Mellon University,
www-2.cs.cmu.edu/~kunwadee/research/p2p/gnutella.html.
Abstract: »The surging increase in the
popularity of peer-to-peer applications had led to a dramatic need
for a scalable and high performance content location protocol.
Gnutella, a peer-to-peer file-sharing protocol, broadcasts queries
to locate content and, thus, suffers from an overwhelming amount of
query and reply traffic. In this paper, we analyze the
characteristics of queries on Gnutella and its implications on
scaling. We find that the popularity of search strings follows a
Zipf-like distribution. Taking advantage of such a popularity
distribution by caching a small number of query results
significantly decreases the amount of traffic seen on the network.
We evaluate the effectiveness of caching and find that caching at
one Gnutella node can result in up to a 3.7-time reduction in
traffic while using only a few megabytes of memory. As more nodes
implement caching, more traffic is reduced. Caching is a short-term
solution to increasing the scalability of Gnutella«.
First Monday: "Free Riding on Gnutella", by Eytan Adar
and Bernardo A. Huberman, First Monday, volume 5, number 10 (October
2000),
firstmonday.org/issues/issue5_10/adar,
www.firstmonday.dk/issues/issue5_10/adar.
»An extensive analysis of user traffic on Gnutella
shows a significant amount of free riding in the system. By sampling
messages on the Gnutella network over a 24-hour period, we
established that almost 70% of Gnutella users share no files, and
nearly 50% of all responses are returned by the top 1% of sharing
hosts. Furthermore, we found out that free riding is distributed
evenly between domains, so that no one group contributes
significantly more than others, and that peers that volunteer to
share files are not necessarily those who have desirable ones. We
argue that free riding leads to degradation of the system
performance and adds vulnerability to the system. If this trend
continues copyright issues might become moot compared to the
possible collapse of such systems«.
Darren Cubitt: "Proposed Extension to the Gnutella
Protocol: Client Callback"
Draft Version 0.1,
gnutscape.tripod.com/techdoc/callback.html.
Client Callback ist eine vorgeschlagene Erweiterungen für
das Gnutella-Protokoll.
www.filesharing.net/gnutella.htm.
Anmerkungen
<%
iMyForumID = 40
ShowForum iMyForumID
%>
| |
| Wer ist online?: |
<%
VisitorName = request.cookies("name")
If VisitorName ="" then
%>Name: Besucher
Online: <%= Application("ActiveUsers") %> aktive User.
<%
End if
If VisitorName <> "" then
%> <%
user = Request.Cookies("name")
%>Name: <%=user%>!
Online: <%= Application("ActiveUsers") %> aktive User. <%
End if
%> |
|
Login | Logout |
|