Ab v.42.1 unterstützt eMule zwei unterschiedliche Netzwerke. Das
klassische eD2k Netzwerk und eine völlig neue,
leistungsfähige Netzstruktur, genannt Kademlia.
Beide Netzwerke erfüllen die gleichen Aufgaben, die Suche nach
anderen Benutzern und nach Dateien. Der eigentliche Download von
Dateien findet dann immer direkt zwischen zwei Benutzern statt.
Grundlagen
Dateiidentifikation
Alle Dateien die heruntergeladen werden können, besitzen einen so
genannten Hash-Wert. Dies ist eine Kombination aus Zahlen und
Buchstaben, die eine bestimmte Datei eindeutig identifizierbar macht.
Ein Download kann unterschiedliche Dateinamen besitzen, dies
ändert jedoch nichts an seinem Hash-Wert. Dadurch können
Quellen für eine Datei unabhängig von ihrem Namen gefunden
werden.
Zusätzlich wird jede Datei in 9,28 MB grosse Blöcke (Parts)
unterteilt. Jeder dieser Blöcke erhält auch einen Hash-Wert.
Eine z.B. 600 MB grosse Datei besitzt 65 Blöcke mit je einem
eigenen Hash. Aus diesen einzelnen Hash-Werten wird dann der im
Netzwerk verwendete Datei-Hash erstellt. Dieser Wert findet sich auch
in den eD2k Downloadlinks.
Identifikation anderer Benutzer
Ähnlich dem Datei-Hash erhält auch jeder eMule eine
eindeutige und einmalige Benutzerkennung. Um Missbrauch dieser Kennung
zu verhindern, wird diese mit einem speziellen Schlüsselverfahren
gesichert.
Dateien herunterladen
Dateien, die heruntergeladen werden können, liegen immer auf
Computern der Netzwerkteilnehmer. Es findet kein Herunterladen von
Servern oder ähnlichem statt.
Die Aufgabe des Netzwerks ist es, den Kontakt zwischen den Benutzern
herzustellen und das Finden von Dateien bzw. Quellen für einen
Download zu ermöglichen.
Sind Quellen gefunden, wird bei diesen Teilnehmern ein
Warteschlangenplatz reserviert. Erreicht eMule den ersten Platz, wird
eine Verbindung aufgebaut und der Download beginnt.
Das servergestützte eD2k Netz
Zum Netzwerk verbinden
Dieses Netzwerk basiert auf den eD2k Servern. Jeder Teilnehmer muss
sich zu solch einem Server verbinden. Verbindet sich eMule zu einem
Server, überprüft dieser, ob eine freie Verbindung zu eMule
möglich ist. Kann der Server eMule direkt auf seinem Client-Port
ansprechen, bekommt er eine hohe ID, andernfalls eine niedrige.
Ist die Verbindungsprüfung beendet, sendet eMule dem Server eine
Liste mit allen seinen freigegeben Dateien und den zugehörigen
Hash-Werten. Der Server speichert diese Informationen in einer
Datenbank, zusammen mit denen anderer verbundener Teilnehmer.
Suche nach Dateien
Ist die Verbindung hergestellt, kann das Netzwerk nach bestimmten
Schlüsselworten durchsucht werden. Es wird zwischen einer lokalen
Suche, also nur auf dem verbundenen Server und der globalen Suche auf
allen Servern in der Serverliste unterschieden. Eine lokale Suche ist
schneller, hat aber unter Umständen weniger Treffer.
Bei jeder Suche werden die eingegebenen Schlüsselwörter an
den Server gesandt und dieser vergleicht dann, ob es eine
Übereinstimmung mit Namen in seiner Datenbank gibt. Die Treffer
werden zusammen mit ihren Hash-Werten als Ergebnis zurückgegeben.
Quellensuche für Downloads
Downloads können entweder direkt über die Suche oder
über das spezielle eD2k Link Format zu eMule hinzugefügt
werden.
Sind die Downloads in der Transferliste, fragt eMule erst beim lokalen
Server und dann auch bei allen Servern in der Serverliste nach Quellen
zu diesem Download. Der Server überprüft an Hand des
Hash-Wertes, ob Teilnehmer zu ihm verbunden sind, die mindestens einen
Block (9,28 MB) dieser Datei fertig heruntergeladen haben. Ist dies der
Fall, werden diese als Quellen für den betreffenden Download
zurückgegeben.
Das serverlose Kademlia Netzwerk
Verbindung zum Netzwerk
Um eine Verbindung zu diesem Netzwerk aufzubauen, muss die IP-Adresse
und der Kademlia-Port eines anderen bereits verbundenen eMule bekannt
sein. Ist dieser gefunden, wird, ähnlich der ID Vergabe bei den
Servern, überprüft, ob eine freie Verbindung zu dem neuen
Teilnehmer möglich ist. Ist dies der Fall, bekommt eMule eine
Kademlia-ID und erhält den Status "offen". Benutzer hinter einer
Firewall oder einem Router werden zurzeit noch nicht unterstützt
und erhalten den Status "firewalled". Sie müssen sich zu einem
klassischen Server verbinden.
Suchen in Kademlia
In diesem Netzwerk ist es praktisch egal, wonach gesucht wird. Suchen
nach anderen Benutzern, nach Schlüsselworten oder nach Quellen
werden gleich behandelt.
Da es keine Server gibt, die die Teilnehmer und deren freigegebene
Dateien verwalten, müssen diese Aufgaben von den eMules im
Netzwerk selbst übernommen werden. Jeder verbundene eMule arbeitet
also auch als Server für das Kademlianetz.
Jeder Benutzer bekommt an Hand seiner einmaligen Benutzerkennung ein
Aufgabe zugewiesen. Diese besteht im Verwalten von bestimmten
Schlüsselworten zur Suche und bestimmten Quellen für
Downloads. Welche das sind, hängt von seiner Kennung ab und ist
nicht vorherseh- oder anzeigbar.
Das Ziel jeder Suche in diesem Netzwerk ist es also, diejenigen
Teilnehmer zu finden, die die passenden Antworten auf die gestellte
Anfrage haben. Dies wird erreicht, indem eine "Entfernung" zu diesem
Ziel errechnet wird und andere bekannte Teilnehmer nach dem
kürzesten Weg dorthin gefragt werden. Einen Eindruck dieser
Entfernungsberechnung gibt die Anzahl der Nullen bei den Kontakten im
Kademliafenster. Je mehr Nullen am Anfang, desto "näher" befindet
sich dieser Kontakt zum eigenen eMule.
Zusammenfassung
Beide Netzwerke verfolgen einen gänzlich unterschiedlichen Ansatz,
jedoch mit demselben Ziel: Suchen nach Downloads und Suchen nach
Quellen für diese Downloads.
Der Vorteil von Kademlia liegt in der Unabhängigkeit von Servern
und der besseren Verwaltung vieler Netzteilnehmer. Server können
nur eine begrenzte Anzahl von Benutzern verwalten und sollte ein
grosser Server ausfallen, hat dies schwere Auswirkungen auf das gesamte
Netz.
Das Kademlianetz organisiert sich selbst und stellt sich automatisch
auf die Anzahl der Benutzer und deren Leitungsqualität ein. Damit
ist es besser gegen ausgedehnte Netzausfälle geschützt.
Aktualisiert: 2004-02-27 , Monk
|