# Gnutella für Benutzer

Dieses Buch steht im Regal EDV.

# GnuFU: Gnutella für Benutzer
## Was ist Gnutella und wie funktioniert es?

Gnutella ist ein offenes p2p Filesharing Netzwerk. Das bedeutet, dass, anders als bei den meisten anderen Netzwerken, jeder ein Programm schreiben kann, das auf das GNet zugreift, solange es die öffentlich verfügbaren Spezifikationen erfüllt. Es wurde ursprünglich von w:Justin Frankel und w:Tom Pepper von Nullsoft entwickelt, der es auf seiner Seite veröffentlicht hatte. Nach nur wenigen Stunden wurde es von der Mutterfirma von Nullsoft, AOL, gelöscht und von der Webseite entfernt, aber es war bereits tausende Male heruntergeladen worden. Kurz darauf tauchten die ersten Gnutella-Programme von freien Programmierern im Netz auf, die von dieser Idee fasziniert waren. Die Spezifikationen des daraus entstandenen Netzwerkes werden im GDF (dem Gnutella Entwickler Forum) diskutiert und geschrieben, einer offenen Mailingliste, die zur Zeit etwas über 1000 Mitglieder hat. Danach werden sie in rfc-gnutella dokumentiert. Auf diese Art teilen sich alle Programme eine gemeinsame Grundlage, während das Protokoll auch Programmspezifische Optionen erlaubt. Die Entwickler achten dabei so sorgfältig wie möglich darauf, die Kompatibilität mit älteren Programmen zu erhalten.
Obwohl der Name es zu implizieren scheint, ist das Gnutella Protokoll keine GNU-Software. Einige Gnutella-Programme sind allerdings unter der GPL registriert. Gnutella ist ein offenes Netzwerk mit offenen Standards und der Ursprung seines Namens kann einfacher bei zu großem Nutella-Genuss als bei GNU gefunden werden, obwohl der Gedanke Gnu+Tella logisch scheint (das heißt: Gnutella ist kein Projekt der FSF und gehört nicht zu den GNU Programmen).
Ein Nachfolger Gnutellas verdient besondere Aufmerksamkeit, obwohl einige Entwickler aktueller Programme für Gnutella es verneinen würden. Er wird von den meisten Gnutella Entwicklern MP (Mikes Protokoll), oder das Shareaza Protokoll genannt, während sein Entwickler ihn Gnutella2 (G2) nannte, ein Name, der seinem Programm (Shareaza) viel Medienaufmerksamkeit lieferte, und sowie Kontroversen als auch Abneigungen gegenüber ihm im GDF erzeugte und erzeugt. Mehr Informationen darüber hier: w:MikesProtocol
Zurück zum Hauptthema dieses Textes: Den Grundprinzipien von Gnutella, ihre Entwicklung und Evolution während der letzten Jahre (vor allem dem letzten Jahr) und Pläne für Zukünftige Entwicklungen.

## Grundlagen von Gnutella
### Netzwerk-Modell: Der Ursprung: FoF

Sie können sich das ursprüngliche Modell des Gnutella-Netzwerks vorstellen, wie eine Gruppe von Freunden, die sich anrufen, um Informationen zu bekommen. Dabei fragt einer fünf andere, die wieder jeweils fünf fragen, und so weiter. Nach dem ersten Schritt, werden so 5 Personen erreicht, nach dem zweiten sind es 25, nach dem 5. 3125, nach dem 7. 78.125 und nach dem 14. etwa 6,1 Milliarden. Das wäre also genug, um jedes Menschliche Wesen auf diesem Planeten zu erreichen. Das Ursprüngliche Modell benutzte 7 Schritte (die HTL: Hops to Live, also in etwa Schritte zu Leben, genannt wurden). Eines der Probleme bei diesem Modell ist, dass Sie Teil der Clique sein müssen, bevor Sie es nutzen können. Es gab verschiedene Ansätze, dieses Problem zu lösen. Ich werde Ihnen drei davon zeigen.

### Hineinkommen: Der erste Weg: Pong-Caching

Pong-Caching bedeutet, dass der Netzwerkknoten (also Sie) seine Freunde fragt, wer deren Freunde sind. Es bedeutet, dass Ihre Freunde Sie ihren eigenen Freunden vorstellen, vor allem Freunden, die sie wertschätzen, und dass Sie alle neuen Adressen in Ihr Telefonbuch eintragen, so dass Sie später wissen, wen Sie anrufen können, wenn Ihre ersten Freunde in Urlaub sind. Das System ist einfach und hat den Vorteil, dass es Ihnen sehr zuverlässige Kontakte gibt, bietet aber keine Möglichkeit, in das Netzwerk zu kommen, ohne zumindest zu einer Person Kontakt zu haben, die bereits darin ist. Das bedeutet, dass Sie immer wieder hinein können, aber immer noch keine Möglichkeit haben, eine Verbindung herzustellen, wenn Sie es nicht vorher schon einmal getan haben.

### Hineinkommen: Der zweite Weg: Aufschreiben, wer antwortet

Der zweite Weg ist sehr einfach: Wenn einer Ihrer fünf Freunde antwortet, um zu sagen, dass Schmidt (den Sie vorher nicht kannten) etwas weiß, schreiben Sie dessen Nummer auf. Wenn Sie ihn das nächste Mal als einen ihrer fünf Direktkontakte anrufen, ist die Chance größer, dass Sie die benötigte Information schneller bekommen, weil er wahrscheinlich Freunde haben wird, die ähnliche Interessen haben, wie Sie (sonst hätte er die Information wahrscheinlich nicht), und bei diesen ist es wahrscheinlicher, dass sie weitere Informationen haben, die Sie interessieren, als bei einem zufällig ausgewählten Kontakt. Der Nachteil ist, dass diese antwortenden Kontakte nicht unbedingt immer zu Hause sind, weswegen Sie zwar einen Kontakt mit großem Wissen (mit vielen interessanten Dateien) finden könnten, den Sie aber möglicherweise nie wieder erreichen können. Immer noch kein Weg zum ersten Einstieg in das Netz. Und nun kommen wir zu einer jüngeren Neuerung in Gnutella: GWebCaches. Ich werde sie im nächsten Teil erläutern.

## Aktuelle Veränderungen in Gnutella
### Hineinkommen: der dritte Weg: GWebCaches

Um im Bild zu bleiben, ist ein GWebCache ein Kontakt, der seine Telefonnummer in die Zeitung setzt, und sich aufschreibt, wer anruft. Jedes Mal, wenn Sie eine Weile weg waren und nicht mehr sicher sind, ob Ihre Kontakte immer noch dieselbe Handynummer haben, rufen sie den öffentlich bekannten Kontakt an. Bevor er Ihnen weitere Telefonnummern gibt, wird er Sie fragen: "Kennen Sie andere öffentlich bekannte Kontakte? Wenn ja, bitte sagen Sie mir deren Nummern." Das wird gemacht, weil die öffentlichen Kontakte nicht alle Zeitungen lesen können, und sie es die ganze Zeit tun, ohne dafür hart zu arbeiten. Auf diese Art können die Kontakte die Übersicht über die anderen öffentlichen Kontakte behalten. Dann gibt Ihnen der Kontakt einige Nummern, die Sie anrufen können, und die Nummern anderer öffentlicher Kontakte, die er kennt (GWebCaches), und notiert Ihre Nummer, um sie jemand anderem geben zu können. Das beschreibt ungefähr, wie GWebCaches funktionieren. Wie gesagt sind sie eine der Neuentwicklungen in Gnutella, und darum werde ich nun zu einigen weiteren Entwicklungen in Gnutella und zu Plänen für die Zukunft kommen. Notiz: GWebCaches sind nur für die erste Verbindung nötig, und nur, wenn Ihr lokaler Host-Cache leer ist, aber sie dürfen Ihrem lokalen Adressbuch nicht vorgezogen werden (ansonsten werden sie überlastet).

### Probleme des FoF-Modells -> Veränderungen

Das Freund-eines-Freundes Modell hat bestimmte Nachteile, die ihre Quelle in der Art haben, wie die Suchen ablaufen. Wenn eine zu viele Ergebnisse bringt, können die Knoten, über die sie verbunden sind (ihre 5 nächsten Freunde) überladen werden, weil sie ihre "Telefonnummer" nicht mitschicken, sondern ihre eigene, und so jede Antwort durch sie geht und sie sie weiterleiten. Wenn sie beispielsweise auf dem Kampus nach dem Leiter der Universität fragen, werden sie in der Realität hunderte von Antworten bekommen, im Netz Tausende bis Millionen. Wenn außerdem jede Frage an jeden in einem 75.000 bis 600.000 Computer Netzwerk weitergeleitet wird, und jeder Computer nur einmal pro Stunde fragt, muss jeder von ihnen zwischen 130 und 1600 Fragen pro Sekunde beantworten. Zusätzlich müssen sie sie weiterleiten, nicht zu vergessen die Antworten, die auch weitergeleitet werden müssen. Obwohl Computer schnell sind und die heutigen Internetverbindungen im Vergleich zu den Verbindungen vor einem Jahr sehr viel leisten, ist das selbst für sie zu viel. Stellen sie sich vor, ihr Telefon würde den ganzen Tag wegen allen Arten von Fragen und ohne Pause klingeln.

### Netzwerk-Modell: Wer kontaktiert Wen: Ultrapeers und Blätter
#### UPs wirklich kurz

Sicher haben sie Freunde, die viele andere Leute kennen und die sie alles mögliche fragen und sicher sein können, dass sie genau die Person kennen, die ihnen die Antwort geben kann. In Gnutella werden sie Ultrapeers genannt. Ein Ultrapeer muss selbst nicht viel wissen, sondern nur, wer es weiß. In Gnutella bedeutet das, dass ein guter Ultrapeer nicht unbedingt viele Dateien zu haben braucht, um dem Netzwerk zu nutzen. Wenn sie Angst haben viel zu sharen sollten sie Ultrapeer in Gnutella werden.

#### Ultrapeers und Blätter detaillierter

In der Computerwelt gibt es, wie in der physischen Welt Kontaktstellen, die mehr Anrufe bearbeiten können, und andere, die weniger schaffen (oder sich die Rechnungen nicht leisten können). In der echten Welt liegt das daran, dass sie mehr Zeit oder mehr Geld haben, während in der Computerwelt schnellere Verbindungen (wie DSL, Kabel, T1, T3 oder ähnliche Breitbandnetze) eine höhere Kapazität gewährleisten. Nachdem sie das erkannt und überdacht hatten, entschieden sich die Programmierer, die Topologie des Netzwerks, also die äußere Gestalt des Netzwerkes, zu verändern. Jetzt kontaktieren sie nicht einfach irgendeinen ihrer Freunde, sondern nur diejenigen, von denen sie wissen, dass sie die Zeit haben ihren Anruf anzunehmen und an andere weiterzuleiten. Um Sie vor zu vielen Anrufen zu bewahren, fragen diese dann, welche Arten von Informationen Sie haben oder, um es menschlicher auszudrücken, worauf Sie sich spezialisiert haben. In der Computerwelt bedeutet das, dass Ihr Computer eine Liste mit allen gesharten Dateien an den Ultrapeer (wie diese Art der Kontakte genannt wird)verschickt. Diese Liste enthält Zusammenfassungen (Hash-Strings) aller Dateien, die sie für andere zum Download freigegeben haben, über die der Herunterladende überprüfen kann, ob es sich wirklich um diejenigen Dateien handelt, die er haben möchte. Wann immer ein Anruf einen Ultrapeer erreicht, überprüft er, ob Sie die Antwort wissen können und ruft sie nur in diesem Fall an.
Diese Ultrapeers haben viele Verbindungen zu anderen, was bedeutet, dass sie über ein wirklich großes Adressbuch verfügen. Normalerweise bleiben sie in aktivem Kontakt mit 16 anderen Ultrapeers aus ihrem Adressbuch an die sie Anfragen richten, die diese dann an 16 weitere weiterleiten. Außerdem haben sie etwa 16 sog. "Blätter" (man nennt sie auch "Blattknoten"), die nicht so viel telefonieren können oder wollen, von denen sie Anrufe entgegennehmen, und deren Dateien oder, in der menschlichen Welt, Spezialgebiete sie kennen. Der Name Blätter stammt aus dem Baummodell, das als Vorstellungshilfe dient. Dabei sind die exponiertesten (äußersten) Punkte im Netzwek die "Blätter", die Ultrapeers hingegen, die die Blätter mit dem Stamm (Netzwerk) verbinden, die Äste.
Es mag wie ein fauler Handel für die Ultrapeers erscheinen, die weit mehr Ressourcen investieren als die Blätter, um das Netzwerk intakt zu halten, aber in Wahrheit ist der Handel ganz gut. Während die Ultrapeers (UP) viel von ihrer Zeit nutzen, um das Netzwerk am Laufen zu halten, spezialisieren sich die Blätter darauf Informationen zu sammeln und weiterzugeben. Auf diese Art kann jeder, der etwas wissen will, einfach einen Anruf starten, und ein spezialisiertes "Blatt" kann ihm die benötigte Auskunft erteilen. Das heißt die Leute spezialisieren sich, damit am Ende mehr für alle herauskommt.

### Netzwerk Modell: Intra-Ultrapeer QRP

Während dank Ultrapeers nicht mehr jeder beim Weiterleiten der Fragen mithelfen muss, und die einzelnen Rechner sich stattdessen darauf konzentrieren können, ihre Informationen anderen zugänglich zu machen, so würden die Ultrapeers immer noch jede Frage an jeden schicken müssen, egal ob dieser Ultrapeer überhaupt Blätter hat, die über diese Art von Informationen verfügen. Das hört sich vernünftig an, denn wie kann ein Ultrapeer wissen, welche Dateien die anderen Ultrapeers haben? Die Antwort findet sich erneut im wirklichen Leben. Eine normale Person kennt ihre Freunde, und sie weiß, welche von ihnen die Antwort auf bestimmte Fragen wissen könnten, und welche sehr wahrscheinlich nicht. Im wirklichen Leben wird das größtenteils durch lockere Unterhaltung möglich.
Normalerweise betreiben Computer jedoch keinen Small Talk, daher tauschen sie diese Informationen nicht einfach so nebenbei aus. Deshalb wurde das "Query Routing Protocol" (Suchanfragen- Leitungsprotokoll) entwickelt. Dabei sagt jedes Blatt seinen Ultrapeer, welche Dateien es hat, aber statt die Namen zu nennen, die zu viel Ressourcen verbrauchen würden, wird jedes Wort, das Teil des Dateinamens ist, als Zahlenfolge gespeichert (Immerhin reden wir von Computern). Sie können sich den darauf folgenden Ablauf wie "Schiffe versenken" vorstellen (Die Zahlen bilden das Spielbrett mit zwei Koordinaten). Ein Ultrapeer leitet nicht alle Fragen an das jeweilige Blatt weiter, sondern nur die, die es wahrscheinlich auch beantworten könnte (die ein Schiff treffen), und auf diese Art bekommen Blätter weit weniger unnütze Anrufe.
Weil man die Blätter so entlasten kann, wurde dieses Konzept konsequent weiterentwickelt. Alle Ultrapeers schicken ihre "Spielbretter", auf denen ihre Schiffe und die Schiffe ihrer Blätter vermerkt sind, an ihre direkten Nachbarn. Dann leiten sie von den Suchanfragen, die nur noch einen weiteren Schritt laufen, nur jene an die Ultrapeers weiter, auf deren Spielbrettern sie einen Treffer erzielen. Das heißt die letzten zwei Schritte einer Suche (zum letzten Ultrapeer und zu dessen Blättern) werden nur dann getätigt, wenn es eine Chance gibt, dass sie Ergebnisse liefern.
Sie können sehr leicht nachvollziehen, wie dadurch die benötigte Bandbreite deutlich gesenkt wird, wenn sie sich einen Baum vorstellen. Einen normalen Baum, nicht eines dieser mathematischen Konstrukte. Wenn sie versuchen die Blätter zu zählen, haben sie fast keine Chance jemals fertig zu werden. Wenn sie aber die Blätter entfernen und nur noch die kleinen Ästchen zählen, werden Sie bereits erheblich entlastet. Wenn sie nun auch noch all die winzigen Ästchen weg nehmen, können sie wirklich beginnen, die verbleibenen Äste zu zählen. QRP entfernt nicht alle Blätter und Ästchen, aber es entfernt diejenigen, die ihnen keine Antwort liefern könnten. Da jeder Teil des Netzwerkes (Ast oder Blatt), durch den eine Suchanfrage geleitet werden muss, Bandbreite verbraucht, und es weit mehr Blätter als Äste (Ultrapeer) gibt, führt die Wegnahme eines Großteils der letzten beiden Schritte (Blätter und kleine Ästchen) zu enormen Bandbreitenersparnissen (da es weit mehr Blätter und kleine Ästchen gibt als große Äste). Dieses Beispiel funktioniert nicht für alle Teile von Gnutella, aber hier passt es sehr gut. Die Programmierer LimeWires sprechen von Ersparnissen um 70%-80% alleine durch QRP.

### Netzwerk Modell: Veränderung des Suchens: Dynamic Querying

Während das Ultrapeer-Modell und QRP einen Teil des Problems lösen, dass sie keine Zeit haben, etwas jemand anderen richtig zu erklären oder es erklärt zu bekommen, weil das Telefon ständig mit Fragen nervt, auf die sie keine Antwort kennen (oder ich Tech-Sprech: Weil die Netzwerkbelastung die Geschwindigkeit ihrer Verbindung voll auslastet), gibt es immernoch ein anderes Problem, dass normalerweise kaum sichtbar würde, selbst wenn sie direkt darauf schauen. In der wirklichen Welt wird ein Ultrapeer nach einer Spezialistin suchen, der ihnen die Info geben kann, bis er eine passende findet, und danach aufhören. In der Computerwelt wird die Frage immer zu so vielen Kontakten wie möglich weitergeleitet, ohne darauf zu achten, ob es bereits Antworten gibt.
Mit Dynamic Querying (Dynamischen Suchanfragen) ändert sich das. Nun fragen die Ultrapeer nur einen anderen Ultrapeer auf einmal und warten etwas, um zu sehen, ob sie Antworten bekommen (deswegen scheinen Gnutella-Suchanfragen für seltene Dateien seit kurzem etwas langsamer zu sein, dafür erhöht sich aber die Chance die Dateien wirklich zu finden). Wenn sie eine zufriedenstellende Zahl von Antworten haben (normalerweise etwa 250), beenden sie die Suche. Das hört sich eigentlich völlig normal und logisch an, war aber ein wirklich großer Schritt für Gnutella, weil es Ressourcen spart, die für sehr beliebte Dateien verschwendet wurden. Ich nehme erneut das Beispiel des Leiters der universität: Wenn sie nun nach dem Leiter der Universität fragen, werden ihre Ultrapeer erst überprüfen, ob sie direkt jemanden kennen, der ihre Frage beantworten kann. Dann werden sie ihnen einfach einige Nummern von Leuten geben, die sie auf dem Campus kennen. Sie werden immernoch mehr als eine Antwort bekommen, weil sie ihnen mehr als eine Nummer geben, schließlich können die Ultrapeer nicht sicher sein, dass Sie jede der Nummern erreichen können. Aber sie werden nicht mehr tausende von Nummern bekommen (eine von jedem Studenten auf dem Campus). Erstens weil damit die Ultrapeer ihre Zeit mit etwas verschwenden würden, das Ihnen keinen zusätzlichen Vorteil bringt, zweitens, weil sie niemals alle der Leute anrufen könnten und drittens, weil sie dann Ihre Ultrapeer nicht mehr erreichen würden, weil diese zu beschäftigt damit wären, Anworten von anderen anzunehmen, die ihnen ihre Nummern geben und ihre Fragen an andere Ultrapeer weiterzuleiten. Den Statistiken der Bearshare-Programmierer folgend, spart das weitere 60% der Netzwerkbelastung.

### Quellen finden ohne zu suchen aka das Download-Netz

Nun mögen sie denken, "aber ich kann von diesen drei Quellen nicht herunterladen, weil es schon andere machen. Ich will alle Adressen, von denen ich herunterladen kann" (Und sie sind damit nicht alleine. Ich fühle dasselbe). Mit einem Blick auf die wirkliche Welt können wir jedoch auch für dieses Problem eine Lösung finden, ohne allzu viele Ressourcen darauf verschwenden zu müssen. Wenn sie dort (in der wirklichen Welt) eine Spezialistin bitten, ihnen etwas zu erklären und diese Spezialistin beschäftigt ist, wird sie andere Spezialisten kennen (weil sie sich gegenseitig kennen) die momentan mehr Zeit haben.
Dieses System in Gnutella zu integrieren ist nicht so einfach wie bei dem Ultrapeer-Blatt Modell oder dem Dynamischen Suchsystem. Aber die Programmierer fanden einen Weg. Wie ich im Dynamischen Suchsystem geschrieben habe, bekommen sie mehr als eine Adresse bei der sie Anfragen können. Wenn sie nun jemanden fragen, der die Antwort kennen sollte, geben sie ihm die anderen Adressen, die sie kennen. Auf diese Art lernen diese Spezialisten von der Existenz der Anderen (auf dieselbe Art wie die GWebCaches, von denen ich bereits gesprochen habe). Indem jeder der anfragt auch sein eigenes Set von Adressen liefert, kennen die Spezialisten mehr und mehr zusätzliche Adressen, und wenn Sie sie bitten etwas zu erklären, und sie momentan keine Zeit haben, geben sie ihnen die Adressen (sie tun es auch, wenn sie Zeit haben, einfach für den Fall, dass sie unterbrochen werden, und weil sie in Gnutella von mehr als einer Quelle auf einmal herunterladen können, wie sie es vielleicht von dem overnet-Netzwerk kennen (das es ins extreme treibt, aber nur für große Dateien wirklich effizient ist)). Zusätzlich fügen die Spezialisten ihre Nummer zu ihrer Liste von Alternativen Kontakten hinzu, sobald sie genug wissen, um anderen etwas beizubringen.
Das ist der Grund, warum oft viele Leute Dateien von ihnen herunterladen, die sie gerade selbst heruntergeladen haben.

### Bessere Downloads Teil1: Schwärme und Sharen unvollständiger Dateien

Swarming lässt sich leicht erklären (aber nur schwer im Freund-eines-Freundes Modell, deswegen lasse ich es für diesen Teil weg). Es funktioniert indem einfach eine Datei von mehr als einer Person gleichzeitig heruntergeladen wird, die einzelnen Teile wie ein Ameisenschwarm an ihren Platz finden und die fertige Datei formen. Dafür wird die Datei einfach in mehrere Teile geteilt, als wollten sie ein Buch von mehreren Freunden bekommen, und jeder von ihnen würde nur ein paar von dessen Seiten kopieren. Wenn sie jeden von ihnen bitten einen anderen Teil des Buches zu kopieren, werden sie das gesamte Buch bekommen und jeder von ihren Freunden hat nur wenig Arbeit (und falls einer gerade keine Zeit hat um es zu machen, übernimmt einfach ein Anderer).
Swarming funktioniert am besten mit dem Download-Netz und Partial File Sharing (PFS, Sharen unvollständiger Dateien), das es den Nutzern erlaubt Anderen den teilweisen Download von Dateien zu ermöglichen, die sie selbst gerade herunterladen. Sie können die Seiten, die sie bereits haben, kopieren ohne das ganze Buch haben zu müssen, weil die Seiten nummeriert sind und ihre Freunde sie bitten können bestimmte Seiten zu kopieren.

### Bessere Downloads Teil2: Durch Firewalls herunterladen

Stellen sie sich vor es gäbe Leute, die nicht angerufen werden könnten, sondern nur andere anrufen könnten (vielleicht, weil sie nur öffentliche Telefone benutzen, oder weil ihre Nummer nicht auf anderen Telefonen angezeigt wird und sie sie ungerne herausgeben, weil sie es nicht mögen von Telefonverkäufern belästigt zu werden oder sich Sorgen um Telefonterror machen). In Gnutella sind das Computer, die hinter einer Firewall sind. Sie können andere anrufen und von diesen Informationen bekommen, aber niemand kann sie anrufen.
Eine Lösung für dieses Problem ist, dass die Leute hinter einer Firewall ihre Ultrapeer regelmäßig anrufen und falls jemand sie anrufen will, dieser einfach den Ultrapeer anruft, der dann zwei Telefonhörer zusammenhält, einen, auf den die Person hinter der Firewall (die nicht angerufen werden kann) angerufen hat und denjenigen, auf den sie angerufen haben. Auf die Art können sie mit der Person hinter der Firewall sprechen. Allerdings benötigt das zwei gleichzeitige Anrufe, was in der Computerwelt bedeutet, dass die doppelte Bandbreite benötigt wird. Leute hinter einer Firewall halten ihre Verbindungen zu den Ultrapeer meistens aufrecht, während die Ultrapeer darüber Informationen oder Daten weiterleiten.
Es gibt Pläne die Ultrapeer von dieser zusätzlichen Bandbreitennutzung zu entlasten, indem andere Leute das Telefonverbinden übernehmen. Wenn dann jemand Informationen von einer Spezialistin hinter einer Firewall möchte, sagt der Ultrapeer der Spezialistin und dem Anfragenden die Nummer einer dritten Person, die dann die beiden Telefonhörer zusammenhält. Da in Gnutella die meisten Leute drei bis fünf Telefone haben, würde das kein großes Problem darstellen. Diese Kontakte werden höchstwahrscheinlich Routing-Peers genannt werden (Verbindungs-Kontakte).

### Datei-Magnete

Dateimagnete lösen sich vom Freund-eines-Freundes Konzept. Sie sind Links auf Webseiten, die sie einfach anklicken können, und die ihrem Filesharing Programm sagen, dass es Gnutella (oder andere Netzwerke) nach einer bestimmten Datei durchsuchen und exakt diese herunterladen soll.
Sie können sich das wie einen Artikel in einer Zeitung vorstellen, der ihnen die Information gibt, mit der ihr Ultrapeer genau weiß, was die Spezialistin wissen oder können muss, von der sie lernen wollen. In der wirklichen Welt würden sie höchstwahrscheinlich eine Spezialistin und alle diejenigen finden, die von ihr gelernt haben.
Mit einem Dateimagneten können sie es vermeiden korrupte und falsch benannte oder sonstwie falsche Dateien zu bekommen, weil sie einen Hash-String benutzen, der eine Art Zusammenfassung der Informationen der Spezialistin ist. Wenn sie anfängt ihnen Mist zu erzählen, werden sie sofort merken, dass es nicht zur Zusammenfassng passt. In Gnutella startet das Programm eine Suchanfrage nach Dateien, denen die Leute, die sie haben, die Zusammenfassung gegeben haben, die der Magnet angibt, also den Hash-String. Nach dem herunterladen erstellt das Programm seine eigene Zusammenfassung der Datei und überprüft, ob sie wirklich zusammenpassen. Wenn sie nicht passen, sagt es ihnen, dass die Datei korrumpiert wurde. Die Zusammenfassungen derselben Dateien sind immer exakt gleich, weil sie mit Hilfe von spezifischen mathematischen Methoden erstellt werden, die für dieselben Daten (also Informationen) immer das selbe Ergebnis liefern.
Anders als Magnetlinks sind KaZaA-Links und eDonkey-Links nicht sicher, weil sie Methoden zur Zusammenfassung benutzen, die mit falschen Dateien hereingelegt werden können (KaZaA-Links zum Beispiel suchen nach einer Zusammenfassung, die nur die Einführung und den ersten Teil der Information enthält, aber den Rest ignoriert, um die Zusammenfassung schneller erstellen zu können. Natürlich ist es sehr einfach ihnen damit falsche Informationen zu geben, weil die Spezialisten ihnen nur am Anfang die Wahrheit erzählen müssen und dann lügen oder fantasieren können, soviel sie wollen).
Dateimagnete können außerdem Suchwörter enthalten, über die Dateien gesucht werden können, als würden sie eine normale Suchanfrage in Gnutella starten, manche enthalten sogar Webadressen, von denen die Dateienn heruntergeladen werden können, falls sie in dem Filesharing-Netzwerk nicht aufzufinden sind.
Weitere Informationen über Datei-Magneten können über die folgenden Links gefunden werden: Magnet-Uri liefert die Spezifikationen und MagnetLink.org weitere nützliche Infos.
Es gibt inzwischen eine neue Version von Magnet-links (aka Dateimagneten): KaZaA Magnete. Leider sind diese nicht sicher, weil sie das KaZaA Hashing-System (die unvollständige Zusammenfassung) mit einigen Veränderungen benutzen (sie fügen nun eine weitere kleine Zusammenfassung hinzu, die Informationen über die fehlenden Teile enthalten mag, aber sie haben noch nicht veröffentlicht, wie sie sie erstellen). Sollten KaZaA-Magnete Informationen über Suchwörter enthalten, können sie mit gnutella funktionieren, werden aber nicht sicherstellen, dass Sie bekommen, was ihnen angeboten wurde. Wenn sie das Wort "kzhash" in dem Link finden, ist der Link möglicherweise nicht sicher (abgesehen von dem etwas missratenen Namen).
Sie werden einige Dateimagnete bei den unter w:Magnet Lists aufgelisteten Seiten finden.

## Pläne für die Zukunft

* Community-Feature
* Encryption (Verschlüsselung) - Es dem Provider unmöglich machen zu sehen, was sie herunterladen. BearShare verschlüsselt bereits bei der Kommunikation mit anderen BearShare-Programmen.
* Privacy (Anonymität und Privatsphäre schaffen) (Sehen sie in w:AnoGnut nach (englisch) )
* Beliebte Inhalte Cachen (zwischenspeichern)
* Magma-Links - Vielfach-Magnete, wie Spiellisten.
* Was gibt's Neues? - Neue Dateien in Gnutella finden.

## Wie kann ich es nutzen?

Um Teil des Gnutella Netzwerks zu werden, können sie eins der Programme von Gnutella-Connect nutzen (sollte diese Seite offline sein, benutzen sie einfach die hier aufgelisteten Programme oder die Liste auf dmoz), oder besser noch: Lernen sie zu programmieren und helfen sie bei Weiterentwicklung einiger der Open-Source-Programme. Ich zähle hier einige der Programme auf, garantiere aber keine Vollständigkeit. Wenn sie ein Gnutella-Programm kennen, das hier fehlt, fügen sie es bitte hinzu (oder schicken sie mir eine Mail: arne_bab@web.de).

### Open-Source-Programme

* FrostWire - LimeWire Fork
* LimeWire- Ein verbreitetes plattformübergreifend nutzbares Java Programm, Shareware.
* Phex - Ein weiteres plattformübergreifend nutzbares Java Programm, aber mit weniger Entwicklern und freeware.
* Shareaza - Ein weiteres verbreitetes Programm für Windows, MultiNetwork (Gnutella, eDonkey, BitTorrent und Gnutella2)
* Gnucleus - Ein LGPL Programm für Windows COM-basiert.
* Gtk-Gnutella - Ein GPL-lizenziertes Programm für Linux.
* Acquisition - Ein Mac OS X-Programm, das den LimeWire core benutzt, geschrieben in Cocoa, Shareware. Auf Deutsch verfügbar hier.
* ezpeer - Ein Chinesisches Programm. Ich weiß nicht mehr darüber, weil ich kein Mandarin spreche. Ich würde mich freuen, wenn sie mir informationen an meine [arne_bab@web.de E-Mail] auf English, German oder Esperanto schicken könnten.
* pp365 - Ein weiteres Chinesisches Programm.
* POCO - Noch ein weiteres Chinesisches Programm das GnucDNA benutzt.
* XNap - Ein Multinetzwerk Programm in Java, das für Gnutella den LimeWire Core benutzt.

### Closed-Source-Programme

* Bearshare - Ein verbreitetes Programm für Windows, Entwicklung 2005 eingestellt.
* CocoGnut - Ein kommerzielles Programm für RISC OS.
* Swapper - Ein kostenloses Closed-Source Programm for Windows, das .NET benutzt.

### Links für Benutzer

* Mac-P2P-FAQ - Ein FAQ über p2p-filesharing auf Mac OS X mit der Hauptausrichtung auf Acquisition (englisch).
* p2p-links - Eine Linksammlung zu p2p allgemein.

### Ressourcen für Entwickler

* GnucDNA - Eine Komponente um P2P-programme zu entwickeln. COM basiert (englisch).
* Gnucula - Ein Projekt, das versucht GnucDNA in portables C++, für *nix Systeme and Mac OSX zu übertragen (englisch).
* open-limewire - Der Limewire Quellcode (Java). Der Core kann wie GnucDNA benutzt werden (englisch).
* LimeWire Source-packages - Der Limewire Quellcode auf Webseiten dargestellt (englisch).
* rfc-gnutella - Die offiziellen Spezifikationen des gnutella Netzwerkprotokolls (englisch).
* the_gdf - die offizielle Mailingliste für Gnutella Entwickler. Jedes Programm sollte hier vorgestellt werden, bevor es veröffentlich wird, um Netzwerkprobleme zu vermeiden.
* Magnet-Uri and MagnetLink.org - Informationen über Magnet-Links (englisch).
* Infolio Gnutella Developement Directory - Interessante akademische Artikel über Gnutella (englisch).
* w:GnutellaPapers - Eine Liste akademischer Resources über Gnutella.