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 wenn nicht 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 ein Block (9,28
MB) dieser Datei fertig heruntergeladen haben, wenn ja
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 die möglich 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".
Diese 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
freigegebenen 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 in dem 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 mit dem selben 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
|