eMule scarica ed invia i files in parti da 9.28MB ciascuno. Può capitare che una di esse sia corrotta, ovvero
parte dei dati scaricati non siano buoni rendendolo inutilizzabile.
Per ovviare a questo inconveniente, eMule implementa l'I.C.H. (Intelligent
Corruption Handling, tradotto "Trattamento intelligente delle
corruzioni").
Ogni parte scaricata viene controllato dall'I.C.H. e se risulta corrotta
viene eliminata e riscaricata. Il sistema è definito "Intelligent" perchè ogni volta che
scarica un blocchetto da 180KB controlla l'hash di tutta la parte da
9MB per vedere se ha corretto l'errore (gli hash parziali delle parti da
9 mega sono la prima cosa che eMule scarica di ogni file).
In media si riscaricano solo 4,5 MB invece di 9 per recuperare il
difetto e il sistema riesce nel 99.9% dei casi a recuperare il difetto.
Nel registro di eMule (consultabile dalla finestra "Server"
del programma) è possibile leggere quali parti risultano corrotte e
quali parti sono state recuperate. Il messaggio in caso di corruzione
sarà:
La parte scaricata n. X è corrotta :( [Nome File]
al successivo recupero nel registro sarà possibile leggere:
Recuperata la parte corrotta n. X :) [Nome File]
N.B.: se nel registro si nota che una determinata parte di file risulta
essere sempre corrotta (ovvero si hanno diversi messaggi di corruzione
per la stessa parte di file), vuol dire che probabilmente non ci sono
parti buone in condivisione.
Si consiglia di pazientare inizialmente, ma
dopo qualche giorno, se il recupero di quella parte fallisce ancora,
eliminare il file.
L'unico reale difetto dell'I.C.H. risiede nel fatto che molto spesso
la quantità di dati corrotti in una parte equivale ad una sua piccola
percentuale.
Se si verifica una corruzione non è detto che interessi
tutti i 9.28MB di cui questo è composto, anzi molto spesso sono pochi
bytes difettosi concentrati in un solo punto, ma se esso si trova a 9.2
MB in quella parte, bisogna scaricare tutti e 9.2 MB.
Per ovviare a tale mancanza di efficienza è stato introdotto dalla
versione 0.44 l'A.I.C.H. (Advanced Intelligent
Corruption Handling).
Questo sistema utilizza un approccio completamente differente. Consiste
in un set di hash '"costruiti" a partire da blocchetti di 180KB e raggruppati in una struttura ''ad albero''.
Il programma crea questo albero di hash per tutti i file condivisi e lo
memorizza nel file known_64.met che si trova nella cartella eMule\config.
Ora se eMule sta scaricando un file e rileva una parte corrotta,
chiederà
un "pacchetto di recupero" da un client che sia in possesso di un set
hash A.I.C.H. completo di quel file (un sistema di controllo evita che
ciò che riceviamo possa
essere corrotto).
Usando gli hash contenuti in esso controlla tutti i blocchetti da 180KB e
identifica quelli corrotti, chiedendo lo scaricamento solo di questi
ultimi.
Questo significa che se in un blocchetto un solo byte è corrotto, eMule
conserverà tutti i blocchetti da 180KB ''sani'', ad eccezione dell'unico
blocchetto da 180KB contenente il byte corrotto.
Seguendo l'esempio di
prima, verrebbe riscaricato solo l'ultimo blocchetto da 9.1 a 9.28 MB invece
di tutti e 9.2 MB.
Il vantaggio è palese: tramite l'A.I.C.H. è possibile recuperare
parti di file senza dover essere costretti a cestinare interi blocchi
corrotti solo in parte.
Si ricordi infine che la funzione A.I.C.H. è addizionale rispetto al
classico I.C.H. Per cui se non è possibile recuperare un file tramite
questo nuovo metodo, magari perchè non esiste un hash set A.I.C.H.
valido per quel file, ci penserà l'I.C.H. a tentare di recuperare la
parte corrotta.
Per Utenti Esperti:
E' possibile passare ad un client l'eD2K link di un file contenente l'intero hashing A.I.C.H. Per ottenere un eD2K link A.I.C.H., dalla finestra "File Condivisi" fare tasto destro del mouse sul file interessato e selezionare mostra link eD2K e selezionare l'opzione Inserisci l'HashSet Completo.
In questo modo chi riceverà il link sarà sicuro di poter contare anche sull'A.I.C.H. per il recupero delle parti corrotte. Ma anche nel caso in cui non si sia ricevuto il link A.I.C.H. è possibile usufruire di tale funzione. In questo caso eMule utilizzerà l'hash ricevuto dagli altri client, ma solo in caso che:
1 - Almeno 10 IP unici ci devono avere inviato questo hash.
2 - Il 92% dei client che ci hanno mandato un hash devono averci inviato
lo stesso.
Questo hash verrà posto ad un livello di fiducia più basso e comunque
non sarà possibile ricreare un link A.I.C.H. partendo da questo hash.
Si capisce bene come il problema maggiore sia riscontrato per i file
rari con pochissime fonti. Per questo è importante che, soprattutto il
releaser, invii un link eD2K.
I link AICH sono anche compatibili con i
vecchi client eMule (che semplicemente ignoreranno le informazioni
aggiuntive).