AICH-de

From AMule Project FAQ
Revision as of 13:04, 3 September 2007 by Vollstrecker (Talk | contribs)

Jump to: navigation, search
English | Deutsch

Beschreibung

&Uumlber den Erfolg von ICH braucht man nicht zu diskutieren, aber es ist ein Punkt erreicht, an dem es das Leben erleichtern w&uumlrde, wenn man tatsächlich genau w&uumlsste, welches bestimmte Teilst&uumlck eines Chunks verfälscht ist. Das wird besonders bedeutungsvoll, wenn mehrere Chunks verfälscht sind. AICH (Advanced Intelligent Corruption Handler) nimmt sich dieses Problems an, und erlaubt es aMule, und anderen, es unterst&uumltzenden Clients, tatsächlich zu wissen, welche Teilbereiche eines Chunks verfälscht sind.

Begriffserkärungen

Jeder Chunk ist in 53 je 180KB grosse St&uumlcke unterteilt, und f&uumlr jedes dieser St&uumlcke wird nach dem SHA1-Algorithmus eine Pr&uumlfsumme ermittelt. Jede dieser Pr&uumlfsummen wird Block-Pr&uumlfsumme genannt. Durch paarweise Kombination von Block-Pr&uumlfsummen (d.h. jedes St&uumlck mit dem St&uumlck neben sich) wird aMule einen ganzen Baum von Pr&uumlfsummen erhalten (dieser Baum, welcher folglich ein aus allen anderen Block-Pr&uumlfsummen gebildetes Hashset ist, wird AICH-Pr&uumlfsummensatz genannt). Jede Pr&uumlfsumme, die weder eine Block-Pr&uumlfsumme, noch die Stamm-Pr&uumlfsumme ist, ist eine Kontroll-Pr&uumlfsumme. Die Pr&uumlfsumme an der Spitze ist die Stamm-Pr&uumlfsumme, und es wird angenommen, dass sie beim Ver&oumlffentlichen zusammen mit dem ed2k-Link zur Verf&uumlgung gestellt wird.

Die eigentliche Funktionsweise

Wenn ein Chunk als verfälscht bekannt ist, wird aMule versuchen, von einem Client, der die Datei vollständig hat, einen AICH-Pr&uumlfsummensatz zu bekommen. Er wird alle Pr&uumlfsummen der 53 St&uumlcke des verfälschten Chunks und die erforderlichen Kontroll-Pr&uumlfsummen anfragen, um den AICH-Pr&uumlfsummensatz-Baum bis zur Stamm-Pr&uumlfsumme vervollständigen zu k&oumlnnen.

Sobald er die Block-Pr&uumlfsummeen und die Kontroll-Pr&uumlfsummen bekommt, baut er den Baum zum Ermitteln der Stamm-Pr&uumlfsumme auf, und &uumlberpr&uumlft, ob es die gleiche Stamm-Pr&uumlfsumme ist, den der originale eD2k-Link liefert. Falls ja, dann werden diese Block-Pr&uumlfsummen als glaubw&uumlrdig angenommen. Falls nicht, dann werden diese Block-Pr&uumlfsummen und Kontroll-Pr&uumlfsummen verworfen, und als Fakes angesehen.

Sobald die Block-Pr&uumlfsummen als verlässlich betrachtet werden, wird jeder 180KB-Teil des verfälschten Chunks ermittelt (nach dem SHA1-Algorithmus), um die entstehende Pr&uumlfsumme mit der empfangenen Stamm-Pr&uumlfsumme zu vergleichen. Wenn sie identisch sind, ist der Teil nicht verfälscht, sodass man ihn nicht erneut runterladen muss. Wenn sie sich unterscheiden, dann ist der Teil verfälscht, und wird erneut runtergeladen.

Wie wird die Stamm-Pr&uumlfsumme weitergegeben?

Die ideale Art und Weise, die Stamm-Pr&uumlfsumme weiterzugeben, ist &uumlber den eD2k-Link. Allerdings werden Dateien &oumlfter &uumlber die Suchfunktion des eD2k-Clients runtergeladen. Auch sollte der eD2k-Link die Stamm-Pr&uumlfsumme nicht in seiner URL enthalten. In solchen Fällen wird eine andere Methode verwendet, um die Stamm-Pr&uumlfsumme einer Datei zu erhalten.

Clients fragen andere Clients nach der Stamm-Pr&uumlfsumme. Wenn dir mindestens 10 andere Clients die gleiche Stamm-Pr&uumlfsumme schicken, und das 92% oder mehr der insgesamt erhaltenen Stamm-Pr&uumlfsummen sind, wird diese Stamm-Pr&uumlfsumme nur f&uumlr die laufende Sitzung als glaubw&uumlrdig betrachtet. Er wird nirgends auf der Platte gespeichert, und verbleibt nur im (fl&uumlchtigen) Speicher. Auch wird er nicht an andere, danach fragende Clients weitergegeben.

Wenn der Dateidownload vollständig ist, wird die Stamm-Pr&uumlfsumme mit dem gesamten AICH-Pr&uumlfsummensatz errechnet, und in der ~/.aMule/known2.met gespeichert, um ihn auf Anfrage anderen Clients zur Verf&uumlgung zu stellen.

Speichern des AICH-Pr&uumlfsummensatzes

Sobald eine Datei komplett runtergeladen wurde, errechnet aMule ihren gesamten AICH-Pr&uumlfsummensatz, und speichert diesen in der ~/.aMule/known2.met. So kann er, wann auch immer ein Client ihn abfragt, bereitgestellt werden, ohne ihn jedes Mal erneut berechnen zu m&uumlssen.

Bitte beachte, dass ICH solange nicht bei einer Datei benutzt wird, wie daf&uumlr die AICH-Methode verwendet werden kann.