NajnowaszaWersja: Stable: 0.50a | Beta: 0.50b
 Deutsch English Français Hebrew Chinese Traditional Spanish Italian Polish Lithuanian Estonian Danish Swedish Dutch (Netherlands) Portuguese (Brazil) Czech Portuguese - Portuga Russian Catalan Turkish Finnish Romanian Greek Serbian Chinese Simplified 




Get eMule at SourceForge.net. Fast, secure and Free Open Source software downloads

Obsługa Uszkodzeń HelpNAV

eMule używa wielu sposobów by zapewnić, że pliki w sieci są udostępniane i pobierane bez błędów. Jeśli wykryte zostanie uszkodzenie, eMule użyje zaawansowanych procedur by je naprawić z minimalną ilością danych do ponownego pobrania.

Hash pliku i ICH - Intelligent Corruption Handling (Inteligentna obsługa uszkodzeń)

Hash pliku, Part Hashes i Hashset
Dla każdego udostępnianego pliku w sieci przypisana jest unikalna wartość tworzona przy użyciu algorytmu MD4. Jest ona nazywana hashem pliku i jest zawarta w każdym standardowym linku eD2k, np.

ed2k://|file|nazwa|12043984|6744FC42EDA527B27F0B2F2538728B3E|/

gdzie 6744FC42EDA527B27F0B2F2538728B3E to hash czyniący plik unikalnym w całej sieci.
Hash pliku wyliczany jest przez podział całego pliku na części po 9.28MB. Dla każdej z nich tworzony jest part hash przy pomocy algorytmu MD4. Z nich (wszystkie razem noszą nazwę hashset) wyliczany jest końcowy hash pliku. Na przykład plik o rozmiarze 600 MB zostanie podzielony na 65 części, z których każda będzie miała swój part hash użyty do utworzenia końcowego wyniku.
By się upewnić, że eMule zawsze otrzyma poprawny hashset, można utworzyć link który go zawiera, np.

ed2k://|file|nazwa|12043984|6744FC42EDA527B27F0B2F2538728B3E|p=264E6F6B587985D87EB0157A2A7BAF40:17B9A4D1DCE0E4C2B672DF257145E98A|/

gdzie wartość p= oznacza hashset. Każdy part hash oddzielony jest ":". Ten plik ma rozmiar 12043984 bajtów (=11.49 MB), co oznacza że ma jedną pełną część o rozmiarze 9.28 MB i drugą niepełną, czego wynikiem są dwa part hashes.

ICH Inteligentna obsługa uszkodzeń
Jak tylko eMule pobierze taką część, zostanie ona sprawdzona czy pobrane dane pasują do wyliczonego wcześniej part hash dla tej części. Jeśli tak, zostaje ona udostępniona by lepiej rozpowszechnić ją w sieci.
Jeśli nie, znaczy to że została uszkodzona i musi być pobrana jeszcze raz. By uniknąć pobierania całych 9.28 MB, ICH pobiera jej pierwsze 180 KB i sprawdza jeszcze raz całą część od początku. Jeśli wciąż nie zgadza się part hash, pobrane zostanie kolejne 180 KB, sprawdzone, itd. aż do czasu gdy obie wartości będą zgodne. W najlepszym przypadku trzeba będzie pobrać jedynie 180 KB danych, jeśli uszkodzenie powstało na początku części. W najgorszym przypadku trzeba będzie pobrać całą część, jeśli uszkodzenie powstało gdzieś pod koniec. Średnio ICH oszczędza 50% danych w przypadku uszkodzenia.

AICH - Advanced Intelligent Corruption Handling (Zaawansowana inteligentna obsługa uszkodzeń)
Standardowa ICH jest dość efektywna, lecz ma ograniczenia, gdyż jest w stanie sprawdzić tylko całe 9.28 MB danych i nie radzi sobie z mniejszymi blokami. Jeśli więcej niż jedna pozycja w części jest uszkodzona lub złośliwi klienci bez przerwy wysyłają uszkodzone dane lub nawet zły part hash, ICH staje się bezużyteczna.
Wtedy AICH zajmie się zachowaniem integralności danych z minimalną ilością danych do ponownego pobrania tworząc o wiele lepsze wartości hash.

Root Hash, Block Hash i AICH Hashset



Tym razem punktem z którego zaczynamy są nasze części po 9.28 MB. Każda z nich jest dzielona na bloki po 180 KB, czego wynikiem są 53 bloki na każdą część, dla których wyliczany jest hash używając algorytmu SHA1. Wartości te nazywane są Block Hashes i formują najniższy poziom kompletnego AICH hashset.
Rysunek powyżej przedstawia jak pełne drzewo hashów jest tworzone z bloków pliku podzielonego na 4 części. Każda część zawiera 53 bloki dające w sumie 212 Block Hashes które tworzą drzewo kolejnych 7 poziomów aż obliczony zostanie Root Hash. Całe drzewo nazywane jest AICH Hashset.
Zielone i żółte pola ukazują matematyczne zależności pomiędzy najmniejszym Block Hash i Root Hash. To oznacza, że jeśli mamy zaufany Root Hash, całe drzewo może zostać sprawdzone na jego podstawie.
eMule potrafi tworzyć linki zawierające Root Hash, np.

ed2k://|file|nazwa|12043984|6744FC42EDA527B27F0B2F2538728B3E|h=A2NWOTYURUU3P3GCUB6KCNW3FTYYELQB|/

gdzie h= oznacza Root Hash. Linki do nowych plików powinny zawierać tą wartość, gdyż znacznie poprawia odporność na uszkodzenia, dostarczając zaufany Root Hash. Przeczytaj Wiarygodność Root Hash

Odzyskiwanie uszkodzonych danych
Gdy tylko eMule wykryje uszkodzenie, żąda od losowego klienta przesłania Pakietu Odbudowującego z kompletnym AICH Hashset. Zawiera on wszystkie 53 Block Hashes uszkodzonej części i pewną liczbę Verifying Hashes całego drzewa. Powyższy rysunek przedstawia Pakiet Odbudowujący dla 4 części pliku. Liczba Verifying Hashes jest wyznaczana z liczby części pliku (2^x >= 'liczba części', gdzie x = Liczba Verifying Hashes).
Po odbiorze Pakietu Odbudowującego eMule sprawdza czy Verifying Hashes zgadzają się z Root Hash. Jeśli do siebie pasują, eMule sprawdza wszystkie 53 bloki uszkodzonej części czy zgadzają się z Block Hashes z Pakietu Odbudowującego. AICH przywraca następnie wszystkie bloki, które pasują do ich Block Hash by zostawić tylko te, które należy ponownie pobrać z powodu uszkodzeń.
W logu udana próba odzyskania będzie wyglądała tak:

09.09.2004 02:43:43: Pobrana część 6 jest uszkodzona ([plik])
09.09.2004 02:43:46: AICH successfully recovered 8.22 MB of 9.28 MB from part 6 for [plik]

Wiarygodność Root Hash
Najlepiej pobierać pliki z linków zawierających Root Hash. Przyjmując, że źródło z którego mamy link jest wiarygodne, Root Hash od razu zostanie zapisany na dysk dla tego pliku.
Jeśli w linku nie zostanie podany Root Hash, eMule musi zaufać źródłom które go prześlą. Uważany jest on za godny zaufania jeśli przynajmniej 10 różnych źródeł prześle tę samą wartość i przynajmniej u 92% źródeł jest ona zgodna. Ponieważ taki Root Hash nie jest tak godny zaufania, będzie poprawny tylko przez czas trwania sesji i nie zostanie zapisany. Także linki zawierające taki Root Hash nie mogą zostać utworzone.
Jak tylko eMule ukończy cały AICH Hashset, np. po pobraniu pliku, propaguje swój Root Hash wsród innych klientów.

Uwagi:
Nowe lub rzadkie pliki prawdopodobnie będą miały zbyt mało źródeł by wygenerować zaufany Root Hash. Zalecane jest rozprowadzanie takich plików przez linki zawierające załączony hash.
Jeśli nie istnieje Root Hash lub jest on uszkodzony, eMule wciąż jest w stanie pobrać plik na normalnych warunkach. Funkcja AICH nie może zostać użyta w tym przypadku.
Z powodu możliwych dużych rozmiarów AICH Hashsets nie są przechowywane w pamięci, lecz zapisane w pliku known2.met i odczytywane tylko w razie potrzeby.
AICH jest przydatny tylko dla klientów eMule v.44a i powyżej lecz zachowuje kompatybilność ze starszymi wersjami.

Applies to: v.44a+
Update on: 2004-09-11 by Monk


Last Update: 19.02.2005 2:10
FAQ
Informacje Ogólne
Ustawienia
Porty, Firewalle i Router
Serwery
Możliwości
 
  Wyszukiwanie Plików
System Kredytów
Identyfikacja Użytkownika
Ban Agresywnych Klientów
Wymiana Źródeł
Podgląd Plików
Sygnatura Online
IRC
Znajomi
Filtry IP
Kategorie
Serwer WWW
Przełączniki Linii Poleceń
MuleMRTG
Linki eD2k
Zarządzanie Źródłami
Obsługa Uszkodzeń
Rozwiązywanie Problemów
  Dla Początkujących
Przewodnik Po Sieci
Narzędzia