Während früher über Napster & Co nur einzelne MP3s getauscht wurden, haben moderne Programme wie z. B. eDonkey gleich ganze Alben und Filme im Angebot. Wir zeigen Ihnen, wie man auch unter Linux komfortabel auf das Netzwerk zugreifen kann.
Auch wenn Robert und Enie allabendlich die Werbetrommel für T-DSL und den eigenen Video-on-Demand-Dienst rühren – die meisten Filme kommen nicht über T-Online Vision, sondern kostenlos über Peer-to-Peer-Netzwerkewie z. B. eDonkey2000 [1] oder Kazaa [2] zu ihren Kunden, und das häufig sogar vor dem offiziellen Kinostart.
Leider läuft Kazaa schon seit längerem nicht mehr unter Linux, und Sharman Networks, der Betreiber des Netzwerks, wird momentan – trotz Firmensitzes auf einer Pazifik-Insel – in den USA verklagt. Im Gegensatz dazu existieren zahlreiche eDonkey-Clients für Linux, und das Netz konnte bis jetzt allen Kompromittierungsversuchen der Medienindustrie standhalten.
Der Grund für den Erfolg von eDonkey liegt darin, dass die Entwickler aus den Fehlern von Napster gelernt und das Netzwerk weniger zentralistisch angelegt haben. Anders als bei Napster existieren statt einem zentralen – technisch und juristisch angreifbaren – Index tausende von privat betriebenen Servern. Jeder dieser Server verwaltet eine Liste aller freigegebenen Dateien, die bei ihm bekannten Clients lagern. Weil so ein privater Server nur eine begrenzte Bandbreite besitzt, verbindet sich jeder Client (außer mldonkey) nur mit einem dieser Server, an den er dann auch alle Suchanfragen richtet. Falls der Server nicht genügend Ergebnisse zurückliefert, gibt es noch die Möglichkeit, die Suche auf andere bekannte Server zu erweitern, wobei diese Suchanfragen im Vergleich zur primären Server-Verbindung vergleichsweise Bandbreite-schonend abgewickelt werden.
Der eigentliche Datentransfer findet anschließend direkt zwischen den Clients statt. Dabei werden große Dateien vor dem Übertragen in etwas über 9 MB große Stücke zerteilt. Dadurch können verschiedene Stücke parallel heruntergeladen werden, und begehrte Dateien verteilen sich wesentlich schneller, weil die einzelnen Datenfragmente schon vor Komplettierung der Datei weiter verteilt werden können. Es ist in erster Linie dieses “Multisource File Transfer Protocol” (MFTP), dem eDonkey seine Verbreitung zu verdanken hat. Ein weiteres Feature, das inzwischen auch von Gnutella übernommen wurde, sind ed2k-Links. Diese Verknüpfungen enthalten neben dem Dateinamen bzw. der Dateilänge einen so genannten Hash der Datei, mit dem sich das File eindeutig identifizieren lässt: Ändert sich in der Datei nur ein Bit, ergibt sich ein völlig anderer Hash-Wert. Inzwischen gibt es hunderte von Seiten (z. B. Share Reactor [3] und Share2k [4]), die Listen solcher ed2k-Links pflegen und damit sicherstellen, dass man keine gefälschten oder qualitativ minderwertigen Dateien herunterlädt, wie sie seit einiger Zeit von der Medienindustrie in Umlauf gebracht werden.
eDonkey 0.44
Nach längerer Zeit steht unter [5] endlich ein offizieller Linux-eDonkey-Client in der Version 0.44 bereit. Neu ist nicht nur das an Overnet (den designierten Nachfolger von eDonkey) angepasste Versionsschema, auch große Teile des Codes wurden überarbeitet und mit Overnet abgeglichen. Bis allerdings ein echter Overnet-/eDonkey-Hybrid-Client für Linux veröffentlicht wird, kann es noch einige Zeit dauern.
Die Installation des Clients ist relativ einfach: Legen Sie am besten zunächst ein eigenes Verzeichnis für das Programm an und wechseln Sie in dieses hinein:
mkdir edonkey; cd edonkey
Laden Sie die Datei von der angegebenen Seite herunter und entpacken das Archiv mit
tar zxvf eDonkey0.44.tar.gz
Danach kann der eDonkey-Core mit dem Kommando ./donkey_s_44 gestartet werden. Sich im Text-Interface von eDonkey zurechtzufinden, ist weniger simpel – besser ist es da, auf das Programm ed2k-gtk-gui[6] zurückzugreifen, das sich bequem als RPM-Paket oder Debian-Archiv installieren lässt. Bevor Sie das Frontend starten, sollten Sie allerdings die eigenen eDonkey-Zugangsdaten im Kommandozeilen-Interface mittels pass Name Passwort ändern und den Client mit q beenden.
Die gleichen Zugangsdaten und der Pfad des eDonkey-Cores (z. B. /home/user/edonkey/donkey_s_44) müssen danach im ed2k-gtk-gui Verbindungsdialog eingegeben werden, damit das Programm den Esel starten und eine Verbindung aufbauen kann. Danach sollte man unter Server eine aktuelle Server-Liste laden und sich mit einem möglichst großen Server verbinden. Da eDonkey recht Bandbreiten-hungrig ist, sollte man weiterhin die maximale Upload-Geschwindigkeit unter Options/Core auf 10-12 kB/s setzen. Falls der Wert unterhalb von 10 kB/s liegt, straft eDonkey automatisch mit niedrigeren Download-Raten; oberhalb von 12 kB/s werden andere Programme ausgebremst. Die maximale Download-Geschwindigkeit kann normalerweise auf 0 gesetzt werden, was in diesem Fall nicht 0 kB/s sondern “keinerlei Begrenzungen” bedeutet.
Overnet 0.44
Was die Installation betrifft, unterscheidet sich Overnet [7] kaum von seinem Vorgänger eDonkey – nachdem ein Passwort eingerichtet wurde, sollte ed2k-gtk-gui problemlos mit dem Programm kommunizieren. Die eigentliche Änderung liegt im Suchmechanismus, der bei Overnet komplett ohne Index-Server auskommt. Ähnlich wie bei Gnutella ist jeder Client gleichzeitig ein Server und wird deshalb in der Overnet-Terminologie als “Knoten” bezeichnet.
Außer der komplett dezentralen Struktur haben Gnutella und Overnet allerdings nicht viel gemeinsam: Während Gnutella wahllos bei bekannten Adressen nach Dateien fragt, baut Overnet auf dem wesentlich effizienteren KADEMLIA-Algorithmus [8] auf, der Knoten und Dateien in einer unter allen Teilnehmern verteilten Hash-Tabelle verwaltet. Jeder Knoten ist dabei der Index-Server für einige Hashs von Dateinamen, die mathematisch “nah” an seiner eigenen ID liegen. Sowohl die ID als auch die Hashs sind 128 Bit lang. Im Gegensatz zum Dateinamen-Hash, den Overnet eindeutig errechnet, wird die Benutzer-ID zufällig gewählt. Um sich mit Overnet zu verbinden, brauchen Sie nur die Adresse eines anderen Teilnehmers, die standardmäßig aus der Datei contact.dat geladen wird. Falls sich in dem File keine gültigen Adressen mehr finden, geben Sie mit dem Befehl boot IP manuell eine Adresse an oder laden einfach eine neue contact.dat[9] herunter. Befehle werden in ed2k-gtk-gui automatisch an den Overnet-Core weitergeben, wenn man ihnen ein Ausrufezeichen voranstellt und sie im Feld neben dem Los-Button eingibt. Einmal mit dem Netz verbunden, ist Overnet erstaunlich schnell in der Lage, Dateien und andere Knoten zu finden. Noch ist die Auswahl im Vergleich zu eDonkey allerdings relativ gering – wie das Netz mit mehr Benutzern und Dateien zurechtkommt wird sich noch zeigen müssen.

Abbildung 2: Auch bei Overnet braucht es einige Zeit, bis die Downloads anlaufen (Drei-Tage-Statistik)
cDonkey
Anders als der offizielle Client ist cDonkey [10] schon jetzt in der Lage, gleichzeitig mit eDonkey und Overnet zu kommunizieren und unterstützt zusätzlich noch einige eMule-Erweiterungen. eMule ist ein alternativer Windows-Client für das eDonkey-Netzwerk, der inzwischen eine enorme Verbreitung gefunden hat. Die Gründe dafür liegen in der aufgeräumten Oberfläche und vor allem in den Erweiterungen des eDonkey-Protokolls. So sind eMule-Clients unter anderem in der Lage, ihre Quellenlisten auszutauschen und die Übertragung zwischen zwei Clients zu komprimieren. Während die Komprimierung bei den meisten schon komprimierten Dateitypen nur wenig nutzt, ermöglicht der Quellenaustausch tatsächlich schnellere Downloads, da bei mehreren Clients angefragt werden kann.
Die Installation von cDonkey erfolgt nach dem üblichen Schema ./configure, make, make installund setzt neben den normalen Bibliotheken nur die Berkeley Database [11] ab Version 3.3 voraus. Nach der Installation sollte das Programm in der Datei ~/.donkey_options konfiguriert werden. Die wichtigsten Einstellungen, die natürlich mit den Einstellungen des GUI ed2k-gtk-gui übereinstimmen müssen, sind dabei gui_port = 4663, ctrl_user = Name und ctrl_pass = Passwort. Da cDonkey die Konfigurationsdatei nicht automatisch anlegt, muss sie von Hand erstellt werden; jede Option muss in einer neuen Zeile stehen. Weitere Einstellungen finden sich in der Datei FAQ-DE im cDonkey-Verzeichnis. Leider erkennt das aktuelle ed2k-gtk-gui cDonkey nicht als lokalen eDonkey-Core, weshalb im Verbindungsdialog statt 127.0.0.1 oder localhost ein alternativer Hostname für den eigenen Computer angegeben werden muss. Ob ein solcher Name schon existiert, können Sie mit dem Befehl hostname -a überprüfen. Falls nicht, editieren Sie als Administrator root die Datei /etc/hosts und setzen hinter den Eintrag 127.0.0.1 localhost einen alternativen Namen, z. B. 127.0.0.1 localhost donkeyalias. Danach sollte sich das GUI mit cDonkey verbinden, da es nun glaubt, das Programm würde auf einem anderen Computer laufen.
Obwohl eMule-Erweiterungen und Overnet-Unterstützung an sich sehr nützlich sind, wirkt cDonkey 0.8.5 leider noch etwas unausgereift – trotzdem sollte man das noch relativ junge Projekt im Auge behalten.
mldonkey
mldonkey[12] ist mit Abstand der vielseitigste eDonkey-Client und unterstützt neben Overnet auch noch völlig andere Protokolle wie z. B. OpenNap, Soulseek oder Direct Connect. Auch auf ein Interface will sich mldonkey nicht festlegen und bringt gleich zwei Gtk-Frontends und ein Web Interface mit. Weiterhin kann mldonkey auch über Telnet kontrolliert werden. Fast noch zahlreicher als die Oberflächen sind aber die mldonkey-Kritiker, weil es sich standardmäßig mit bis zu fünf eDonkey-Servern gleichzeitig verbindet und so andere Benutzer blockiert. Nur maximal ein Drittel der vorhandenen Upload-Slots sind für eMule-Benutzer vorgesehen, während immer mindestens einer für mldonkey freigehalten wird. Da jeder Benutzer, der Daten von einem mldonkey-Client herunterladen will, so einen Upload-Slot benötigt, sorgte dieser Schritt für viel böses Blut bei den eMule-Anhängern.
Auch von Overnet kam Protest, als mldonkey – als erster offener Client – das Overnet-Protokoll übernahm. Da das Protokoll nie öffentlich gemacht wurde, mussten die mldonkey-Entwickler es auf Basis von Übertragungsmitschnitten rekonstruieren, wobei sich anfänglich einige Fehler einschlichen. Sowohl die Slot-Begrenzung für eMule als auch die maximalen Server-Verbindungen lassen sich übrigens in den Einstellungen ändern. Der Overnet-Support kann in der aktuellen mldonkey-Version noch nicht über das Interface deaktiviert werden, sollte inzwischen aber wesentlich ausgereifter sein. Alle Optionen, die nicht über das Interface verändert werden können, finden sich in der Datei downloads.ini im mldonkey-Verzeichnis.
Da mldonkey in der vergleichsweise unbekannten Programmiersprache OCaml geschrieben ist, benötigt das Programm die entsprechenden GTK-Bindings [13] und OCaml [14]. Nach dem Start sollten Sie mldonkey als Erstes über File/Settings konfigurieren, wobei auch hier die Bandbreite auf jeden Fall eingegrenzt werden muss – gerade mldonkey ist dafür bekannt, die komplette Leitung für sich in Anspruch zu nehmen.
Kasten 1: eDonkey hinter Firewalls
Damit zwei eDonkey-/Overnet-Clients direkt miteinander kommunizieren können, müssen in der Firewall einige Ports geöffnet werden. Ansonsten bekommt der Client eine sogenannte Low-ID zugewiesen und muss auf seinen Server zurückgreifen, um mit anderen (High-ID) Clients zu kommunizieren – zu anderen Low-ID Clients kann überhaupt keine Verbindung aufgebaut werden. Das bedeutet nicht nur allgemein schlechtere Übertragungsraten, sondern auch mehr Probleme mit den Servern, da Low-ID Clients nicht besonders gern gesehen sind.
Ports eDonkey:
- 4662 TCP
- 4665 UDP
Ports Overnet:
- 4662 TCP
- Der UDP-Port wird beim ersten Start zufällig gewählt und kann mit dem Befehl vo (!vo in ed2k-gtk-gui) angezeigt werden.
Ports cDonkey:
- 5662 TCP
- 5665 UDP
- 5666 UDP
Ports mldonkey:
- 4662 TCP
- 4666 UDP
- Der Overnet-TCP-/UDP-Port ist zufällig und kann in den Einstellungen eingesehen und geändert werden.
Glossar
-
Peer-to-Peer-Netzwerke
-
Anders als beim Client-/Server-Konzept, in dem viele Clients mit einem zentralen Server kommunizieren, sind Peer-to-Peer-Netzwerke (P2P) dezentral aufgebaut. Jeder Client ist also auch gleichzeitig ein kleiner Server. Obwohl jeder “Peer” im Vergleich zu einem großen Server nur sehr begrenzte Ressourcen besitzt, ergibt die Summe aller Peers ein leistungsfähiges Netzwerk, das sich z. B. sehr gut für große Downloads eignet. Weniger leistungsfähig sind P2P-Netze, wenn es darum geht herauszufinden, bei welchem Peer sich bestimmte Daten befinden. Deswegen setzen viele Programme (z. B. Napster oder Soulseek) zu diesem Zweck einen zentralen Index-Server ein.
-
Hash-Wert
-
Ein Hash-Wert ist eine Zeichenkette, die mittels einer Hash-Funktion aus einer Datei oder sonstigen Daten errechnet wurde. Da dieser Wert in der Regel auch wesentlich kürzer als die Ausgangsdatei ist, eignet sich der Hash sehr gut dazu, zwei große Dateien zu vergleichen, ohne dass die Dateien selbst übertragen werden müssen. Stimmen die verglichenen Werte der beiden Dateien überein, sind bei einer guten Hash-Funktion auch die Ausgangsdateien mit extrem hoher Wahrscheinlichkeit identisch. Da der Hash-Wert zur Identifikation einer Datei benutzt werden kann, wird er manchmal auch als Fingerabdruck der Datei bezeichnet.
-
./configure, make, make install
-
Mit Hilfe dieser drei Befehle lässt sich ein Großteil der gängigen Linux-Software installieren. Bevor man die Befehle eingibt, muss man in das Verzeichnis mit den Programmquelltexten wechseln. Hier sollte eine Datei namens configure sein, ein Skript, das Informationen über den eigenen Computer zusammenträgt und mit dem Befehl ./configure gestartet wird. Erst danach kann mit dem Befehl make das eigentliche Programm aus dem Quelltext erstellt werden. Da unter Linux standardmäßig nur in bestimmten Verzeichnissen nach Programmen gesucht wird, installiert man das Ganze dann noch mit make install, wobei dieses Kommando als Administrator root ausgeführt werden muss.
Infos
[1] http://www.edonkey2000.com/
[3] http://www.sharereactor.com/
[5] http://www.edonkey2000.com/downloads.html
[6] http://ed2k-gtk-gui.sourceforge.net/
[8] http://kademlia.scs.cs.nyu.edu/
[9] http://www.overnet2000.de/Contact.htm
[10] http://cdonkey.suche.org/
[11] http://www.sleepycat.com/
[12] http://www.nongnu.org/mldonkey/
[13] http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html




