Difference between revisions of "AICH-de"
Vollstrecker (Talk | contribs) (Language Link, Umlauts) |
Vollstrecker (Talk | contribs) |
||
Line 8: | Line 8: | ||
== Begriffserkärungen == | == Begriffserkärungen == | ||
− | Jeder [[FAQ_eD2k-Kademlia-de#Was_ist_ein_Chunk?|Chunk]] ist in 53 je 180KB grosse Stücke unterteilt, und für jedes dieser Stücke wird nach dem [http://www.faqs.org/rfcs/rfc3174.html SHA1-Algorithmus] eine Prüfsumme ermittelt. Jede dieser Prüfsummen wird [[Block Hash|Block-Prüfsumme]] genannt. Durch paarweise Kombination von [[Block Hash|Block-Prüfsumme]]n (d.h. jedes Stück mit dem Stück neben sich) wird [[aMule-de|aMule]] einen ganzen Baum von Prüfsummen erhalten (dieser Baum, welcher folglich ein aus allen anderen [[Block Hash|Block-Prüfsumme]]n gebildetes Hashset ist, wird [[AICH Hashset|AICH-Prüfsummensatz]] genannt). Jede Prüfsumme, die weder eine [[Block Hash|Block-Prüfsumme]], noch die [[Root Hash|Stamm-Prüfsumme]] ist, ist eine [[Verifying Hash|Kontroll-Prüfsumme]]. Die Prüfsumme an der Spitze ist die [[Root Hash|Stamm-Prüfsumme]], und es wird angenommen, dass sie beim Veröffentlichen zusammen mit dem [[ed2k link-de|ed2k-Link]] zur Verfügung gestellt wird. | + | Jeder [[FAQ_eD2k-Kademlia-de#Was_ist_ein_Chunk?|Chunk]] ist in 53 je 180KB grosse Stücke unterteilt, und für jedes dieser Stücke wird nach dem [http://www.faqs.org/rfcs/rfc3174.html SHA1-Algorithmus] eine Prüfsumme ermittelt. Jede dieser Prüfsummen wird [[Block Hash|Block-Prüfsumme]] genannt. Durch paarweise Kombination von [[Block Hash|Block-Prüfsumme]]n (d.h. jedes Stück mit dem Stück neben sich) wird [[aMule-de|aMule]] einen ganzen Baum von Prüfsummen erhalten (dieser Baum, welcher folglich ein aus allen anderen [[Block Hash|Block-Prüfsumme]]n gebildetes Hashset ist, wird [[AICH Hashset|AICH-Prüfsummensatz]] genannt). Jede Prüfsumme, die weder eine [[Block Hash|Block-Prüfsumme]], noch die [[Root Hash-de|Stamm-Prüfsumme]] ist, ist eine [[Verifying Hash|Kontroll-Prüfsumme]]. Die Prüfsumme an der Spitze ist die [[Root Hash-de|Stamm-Prüfsumme]], und es wird angenommen, dass sie beim Veröffentlichen zusammen mit dem [[ed2k link-de|ed2k-Link]] zur Verfügung gestellt wird. |
== Die eigentliche Funktionsweise == | == Die eigentliche Funktionsweise == | ||
Wenn ein [[FAQ_eD2k-Kademlia-de#Was_ist_ein_Chunk?|Chunk]] als [[Corrupt-de|verfälscht]] bekannt ist, wird [[aMule-de|aMule]] versuchen, von einem [[Client-de|Client]], der die Datei vollständig hat, einen [[AICH Hashset|AICH-Prüfsummensatz]] zu bekommen. | Wenn ein [[FAQ_eD2k-Kademlia-de#Was_ist_ein_Chunk?|Chunk]] als [[Corrupt-de|verfälscht]] bekannt ist, wird [[aMule-de|aMule]] versuchen, von einem [[Client-de|Client]], der die Datei vollständig hat, einen [[AICH Hashset|AICH-Prüfsummensatz]] zu bekommen. | ||
− | Er wird alle Prüfsummen der 53 Stücke des [[Corrupt-de|verfälscht]]en [[FAQ_eD2k-Kademlia-de#Was_ist_ein_Chunk?|Chunk]]s und die erforderlichen [[Verifying Hash|Kontroll-Prüfsumme]]n anfragen, um den [[AICH Hashset|AICH-Prüfsummensatz]]-Baum bis zur [[Root Hash|Stamm-Prüfsumme]] vervollständigen zu können. | + | Er wird alle Prüfsummen der 53 Stücke des [[Corrupt-de|verfälscht]]en [[FAQ_eD2k-Kademlia-de#Was_ist_ein_Chunk?|Chunk]]s und die erforderlichen [[Verifying Hash|Kontroll-Prüfsumme]]n anfragen, um den [[AICH Hashset|AICH-Prüfsummensatz]]-Baum bis zur [[Root Hash-de|Stamm-Prüfsumme]] vervollständigen zu können. |
− | Sobald er die [[Block Hash|Block-Prüfsumme]]en und die [[Verifying Hash|Kontroll-Prüfsumme]]n bekommt, baut er den Baum zum Ermitteln der [[Root Hash|Stamm-Prüfsumme]] auf, und überprüft, ob es die gleiche [[Root Hash|Stamm-Prüfsumme]] ist, den der originale [[ed2k link-de|eD2k-Link]] liefert. Falls ja, dann werden diese [[Block Hash|Block-Prüfsumme]]n als glaubwürdig angenommen. Falls nicht, dann werden diese [[Block Hash|Block-Prüfsumme]]n und [[Verifying Hash|Kontroll-Prüfsumme]]n verworfen, und als Fakes angesehen. | + | Sobald er die [[Block Hash|Block-Prüfsumme]]en und die [[Verifying Hash|Kontroll-Prüfsumme]]n bekommt, baut er den Baum zum Ermitteln der [[Root Hash-de|Stamm-Prüfsumme]] auf, und überprüft, ob es die gleiche [[Root Hash-de|Stamm-Prüfsumme]] ist, den der originale [[ed2k link-de|eD2k-Link]] liefert. Falls ja, dann werden diese [[Block Hash|Block-Prüfsumme]]n als glaubwürdig angenommen. Falls nicht, dann werden diese [[Block Hash|Block-Prüfsumme]]n und [[Verifying Hash|Kontroll-Prüfsumme]]n verworfen, und als Fakes angesehen. |
− | Sobald die [[Block Hash|Block-Prüfsumme]]n als verlässlich betrachtet werden, wird jeder 180KB-Teil des [[Corrupt-de|verfälscht]]en [[FAQ_eD2k-Kademlia-de#Was_ist_ein_Chunk?|Chunk]]s ermittelt (nach dem [http://www.faqs.org/rfcs/rfc3174.html SHA1-Algorithmus]), um die entstehende Prüfsumme mit der empfangenen [[Root Hash|Stamm-Prüfsumme]] zu vergleichen. Wenn sie identisch sind, ist der Teil nicht [[Corrupt-de|verfälscht]], sodass man ihn nicht erneut runterladen muss. Wenn sie sich unterscheiden, dann ist der Teil [[Corrupt-de|verfälscht]], und wird erneut runtergeladen. | + | Sobald die [[Block Hash|Block-Prüfsumme]]n als verlässlich betrachtet werden, wird jeder 180KB-Teil des [[Corrupt-de|verfälscht]]en [[FAQ_eD2k-Kademlia-de#Was_ist_ein_Chunk?|Chunk]]s ermittelt (nach dem [http://www.faqs.org/rfcs/rfc3174.html SHA1-Algorithmus]), um die entstehende Prüfsumme mit der empfangenen [[Root Hash-de|Stamm-Prüfsumme]] zu vergleichen. Wenn sie identisch sind, ist der Teil nicht [[Corrupt-de|verfälscht]], sodass man ihn nicht erneut runterladen muss. Wenn sie sich unterscheiden, dann ist der Teil [[Corrupt-de|verfälscht]], und wird erneut runtergeladen. |
− | == Wie wird die [[Root Hash|Stamm-Prüfsumme]] weitergegeben? == | + | == Wie wird die [[Root Hash-de|Stamm-Prüfsumme]] weitergegeben? == |
− | Die ideale Art und Weise, die [[Root Hash|Stamm-Prüfsumme]] weiterzugeben, ist über den [[ed2k link-de|eD2k-Link]]. Allerdings werden Dateien öfter über die Suchfunktion des [[FAQ_eD2k-Kademlia#What_is_ED2K?|eD2k]]-[[client-de|Client]]s runtergeladen. Auch sollte der [[ed2k link-de|eD2k-Link]] die [[Root Hash|Stamm-Prüfsumme]] nicht in seiner URL enthalten. In solchen Fällen wird eine andere Methode verwendet, um die [[Root Hash|Stamm-Prüfsumme]] einer Datei zu erhalten. | + | Die ideale Art und Weise, die [[Root Hash-de|Stamm-Prüfsumme]] weiterzugeben, ist über den [[ed2k link-de|eD2k-Link]]. Allerdings werden Dateien öfter über die Suchfunktion des [[FAQ_eD2k-Kademlia#What_is_ED2K?|eD2k]]-[[client-de|Client]]s runtergeladen. Auch sollte der [[ed2k link-de|eD2k-Link]] die [[Root Hash-de|Stamm-Prüfsumme]] nicht in seiner URL enthalten. In solchen Fällen wird eine andere Methode verwendet, um die [[Root Hash-de|Stamm-Prüfsumme]] einer Datei zu erhalten. |
− | [[client-de|Client]]s fragen andere [[client-de|Client]]s nach der [[Root Hash|Stamm-Prüfsumme]]. Wenn dir mindestens 10 andere [[client-de|Client]]s die gleiche [[Root Hash|Stamm-Prüfsumme]] schicken, und das 92% oder mehr der insgesamt erhaltenen [[Root Hash|Stamm-Prüfsumme]]n sind, wird diese [[Root Hash|Stamm-Prüfsumme]] '''nur für die laufende Sitzung''' als glaubwürdig betrachtet. Er wird nirgends auf der Platte gespeichert, und verbleibt nur im (flüchtigen) Speicher. Auch wird er nicht an andere, danach fragende [[client-de|Client]]s weitergegeben. | + | [[client-de|Client]]s fragen andere [[client-de|Client]]s nach der [[Root Hash-de|Stamm-Prüfsumme]]. Wenn dir mindestens 10 andere [[client-de|Client]]s die gleiche [[Root Hash-de|Stamm-Prüfsumme]] schicken, und das 92% oder mehr der insgesamt erhaltenen [[Root Hash-de|Stamm-Prüfsumme]]n sind, wird diese [[Root Hash-de|Stamm-Prüfsumme]] '''nur für die laufende Sitzung''' als glaubwürdig betrachtet. Er wird nirgends auf der Platte gespeichert, und verbleibt nur im (flüchtigen) Speicher. Auch wird er nicht an andere, danach fragende [[client-de|Client]]s weitergegeben. |
− | Wenn der Dateidownload vollständig ist, wird die [[Root Hash|Stamm-Prüfsumme]] mit dem gesamten [[AICH Hashset|AICH-Prüfsummensatz]] errechnet, und in der ''~/.aMule/known2.met'' gespeichert, um ihn auf Anfrage anderen [[client-de|Client]]s zur Verfügung zu stellen. | + | Wenn der Dateidownload vollständig ist, wird die [[Root Hash-de|Stamm-Prüfsumme]] mit dem gesamten [[AICH Hashset|AICH-Prüfsummensatz]] errechnet, und in der ''~/.aMule/known2.met'' gespeichert, um ihn auf Anfrage anderen [[client-de|Client]]s zur Verfügung zu stellen. |
== Speichern des [[AICH Hashset|AICH-Prüfsummensatz]]es == | == Speichern des [[AICH Hashset|AICH-Prüfsummensatz]]es == |
Revision as of 13:23, 3 September 2007
Contents
Beschreibung
Über den Erfolg von ICH braucht man nicht zu diskutieren, aber es ist ein Punkt erreicht, an dem es das Leben erleichtern würde, wenn man tatsächlich genau wüsste, welches bestimmte Teilstück 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ützenden Clients, tatsächlich zu wissen, welche Teilbereiche eines Chunks verfälscht sind.
Begriffserkärungen
Jeder Chunk ist in 53 je 180KB grosse Stücke unterteilt, und für jedes dieser Stücke wird nach dem SHA1-Algorithmus eine Prüfsumme ermittelt. Jede dieser Prüfsummen wird Block-Prüfsumme genannt. Durch paarweise Kombination von Block-Prüfsummen (d.h. jedes Stück mit dem Stück neben sich) wird aMule einen ganzen Baum von Prüfsummen erhalten (dieser Baum, welcher folglich ein aus allen anderen Block-Prüfsummen gebildetes Hashset ist, wird AICH-Prüfsummensatz genannt). Jede Prüfsumme, die weder eine Block-Prüfsumme, noch die Stamm-Prüfsumme ist, ist eine Kontroll-Prüfsumme. Die Prüfsumme an der Spitze ist die Stamm-Prüfsumme, und es wird angenommen, dass sie beim Veröffentlichen zusammen mit dem ed2k-Link zur Verfügung 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üfsummensatz zu bekommen. Er wird alle Prüfsummen der 53 Stücke des verfälschten Chunks und die erforderlichen Kontroll-Prüfsummen anfragen, um den AICH-Prüfsummensatz-Baum bis zur Stamm-Prüfsumme vervollständigen zu können.
Sobald er die Block-Prüfsummeen und die Kontroll-Prüfsummen bekommt, baut er den Baum zum Ermitteln der Stamm-Prüfsumme auf, und überprüft, ob es die gleiche Stamm-Prüfsumme ist, den der originale eD2k-Link liefert. Falls ja, dann werden diese Block-Prüfsummen als glaubwürdig angenommen. Falls nicht, dann werden diese Block-Prüfsummen und Kontroll-Prüfsummen verworfen, und als Fakes angesehen.
Sobald die Block-Prüfsummen als verlässlich betrachtet werden, wird jeder 180KB-Teil des verfälschten Chunks ermittelt (nach dem SHA1-Algorithmus), um die entstehende Prüfsumme mit der empfangenen Stamm-Prüfsumme 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üfsumme weitergegeben?
Die ideale Art und Weise, die Stamm-Prüfsumme weiterzugeben, ist über den eD2k-Link. Allerdings werden Dateien öfter über die Suchfunktion des eD2k-Clients runtergeladen. Auch sollte der eD2k-Link die Stamm-Prüfsumme nicht in seiner URL enthalten. In solchen Fällen wird eine andere Methode verwendet, um die Stamm-Prüfsumme einer Datei zu erhalten.
Clients fragen andere Clients nach der Stamm-Prüfsumme. Wenn dir mindestens 10 andere Clients die gleiche Stamm-Prüfsumme schicken, und das 92% oder mehr der insgesamt erhaltenen Stamm-Prüfsummen sind, wird diese Stamm-Prüfsumme nur für die laufende Sitzung als glaubwürdig betrachtet. Er wird nirgends auf der Platte gespeichert, und verbleibt nur im (flüchtigen) Speicher. Auch wird er nicht an andere, danach fragende Clients weitergegeben.
Wenn der Dateidownload vollständig ist, wird die Stamm-Prüfsumme mit dem gesamten AICH-Prüfsummensatz errechnet, und in der ~/.aMule/known2.met gespeichert, um ihn auf Anfrage anderen Clients zur Verfügung zu stellen.
Speichern des AICH-Prüfsummensatzes
Sobald eine Datei komplett runtergeladen wurde, errechnet aMule ihren gesamten AICH-Prüfsummensatz, 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üssen.
Bitte beachte, dass ICH solange nicht bei einer Datei benutzt wird, wie dafür die AICH-Methode verwendet werden kann.