FAQ eD2k-Kademlia-pl
Contents
F.A.Q. o eD2k-Kademlia
English | Español | Italiano | Deutsche | Français | Nederlands | Polski
Czym jest ED2K?
ED2K jest protokołem oryginalnie używanym przez klienta P2P (Peer-to-Peer) eDonkey2000, stąd nazwa. Jest oparty na protokole klient-serwer, z możliwościa wymiany źródeł pomiędzy klientami.
Sieć ED2K jest siecią opartą na serwerach, tak jak wiele innych sieci P2P takich jak Kazaa (Kazaa jest oparta na serwerach, ale ukrywa przed użytkownikiem połączenie z nim), co oznacza, że pierwszą rzeczą którą powinieneś zrobić po uruchomieniu aMule jest podłączenie do serwera (ręcznie albo automatycznie).
Po podłączeniu do serwera, klient sieci może wyszukiwać dowolne pliki, zarówno lokalnie (serwer do którego jesteśmy podłączeni), albo globalnie (wszystkie serwery). Serwer zwraca klientowi listę wszystkich plików spełniających parametry wyszukiwania.
Kiedy użytkownik rozpoczyna ściąganie, klient wysyła do serwera zapytanie o źródła, na które serwer odpowiada w formie adresów IP klientów, które zgłosiły posiadanie danego pliku.
Następnie, klient zdalny rozpocznie wysyłanie całej części do ciebie, kiedy tylko staniesz się pierwszym w jego kolejce. Kiedy cała część zostanie przesłana, zostaniesz przesunięty na koniec jego kolejki. W ten sposób rożne częsci zostają rozprzestrzenione po całej sieci ED2K, więc nawet jeśli w danym momencie żaden klient nie ma całego pliku, możliwe jest skompletowanie go, poprzez sciąganie rożnych części od różnych osób (użytkowicy czesto przestają udostępniać dany plik, kiedy tylko sami go ściągną).
Warto zauważyć, że w danym momencie klient wysyła tylko jedną część pliku do innego klienta. Nawet, jeśli dany klient jest w kolejce wysyłania do dwóch rożnych plików od tego samego użytkownika i stanie się pierwszym w obu, wysyłany będzie tylko jeden plik (wysyłanie drugiego, w zależności od aplikacji ED2K używanej przez klienta, najprawdopodobniej pozostanie z najwyższym priorytetem, ale nie zacznie się dopóki tamta część nie zostanie pomyślnie przesłana).
Jeśli obaj użytkownicy maja HighID (zobacz Czym jest LowID i HighID?) transfer będzie następował bezpośrednio od jednego do drugiego klienta (Peer-to-Peer), ale jeśli jeden z nich ma LowID, połączenie będzie zestawione poprzez serwer, ponieważ LowID nie potrafią przyjmować połączeń przychodzących. Wynika z tego ze, dwa klienty z LowId nie mogą się ze sobą połączyć.
Czym jest Kademlia?
Kademlia powstała drogą naturalnej ewolucji z sieci ED2K. Kademlia jest przyszłościa. Zobacz Czy są jakieś ograniczenia sieći ED2K? dla dalszych informacji, na temat dlaczego Kademlia jest niezbędna.
Jako, że Kademlia jest siecią zdecentalizowaną, usuwa ona wąskie gardło, jakim była wcześniej potrzeba serwerów (chociaż Lugdunum zrobił bardzo dużo redukując tą potrzebę). Teraz, zamiast łaczyć się do serwera, po prostu łączysz się z innym klientem (ze znamym adresem IP i portem), który obsługuje sieć Kademlia. Jest to nazywane Boot Strapping-iem.
Kiedy jesteś już podłączony, w zależności od tego czy możesz przyjmować połączenia przychodzące, dostajesz status "open" lub "firewalled", który jest podobny do HighID i LowID znanych z sieci ED2K. Naspępnie przydzialane jest ci ID.
W czasie wyszukiwania, każdy klient działa jak mały serwer, odpowiadający za pewne słowa kluczowe i żrodła. To zwiększa złożonośc wyszukiwania, ponieważ teraz nie ma już centralnego serwera do zapytań, a zamiast tego twoje zapytanie musi zostać rozpropagowane w sieci.
Kademlia jest obsługiwana przez aMule od versji 2.1.0
Czy Kademlia jest taka sama jak Overnet?
Krótko i zwięźle: Nie. Overnet jest naturalnym bezserwerowym rozszerzeniem eDonkeya, natomiast Kademlia jest naturalnym bezserwerowym rozszerzeniem klientów *Mule. Oba bazują na oryginalnym algorytmie Kademlia, ale został on zastosowany w rożny sposób, dlatego też są one niekompatybilne. Tak więc, jest to ta sama filozofia, ale inne zasady. Aby dowiedzieć się wiecej, o tym jak działa Overnet, sprawdź http://www.edonkey2000.com/documentation/how_on.html ale pamiętaj, że rozwijanie Overnetu jest zamkniętu dopóki nie osiągnie on wersji 1.0, natomiast Kademlia jest wolna od samego początku.
Czym jest częśc (ang. chunk)?
Aby zapobiegać udostępnianiu nieprawidłowych plików, w protokole ED2K każdy plik jest dzielony na kilka części (ang. chunk), a następnie dla każdej części obliczany jest skrót (czytaj niżej o tym Czym jest skrót). Każda część ma rozmiar 9.28MB, więc plik o rozmiarze 15MB zostanie podzielony na dwie części (9.28MB + 5.72MB), plik o rozmiarze 315KB będzie pojedzyńczą częścią, a plik o rozmiarze 100MB zostanie podzielony na 11 części (10x9.28MB + 7,2MB).
Czym jest skrót?
Dzielenie pliku na części (zobacz Czym jest część?) zapobiega problemowi sciągnięcia całego niepoprawnego pliku, ponieważ tylko niepoprawna część musi zostać ściągnięta ponownie. Potrzebna jest więc metoda do identyfikacji niepoprawnych części. Jest to robine w oparciu o skróty MD4.
Skrót MD4 (ang. MD4 hash jest unikalną wartościa przypisaną do każdej części pliku i jest on wynikiem operacji matematycznych, przeprowadzanych na każdym bicie danej części. Dzięki temu zmiana pojedynczego bitu w częsci, prowadzi do kompletnej zmiany skrótu. Tak więc klient powinien sprawdzić integralność każdej części sciąganego pliku.
Haszowane są nie tylko poszczególne części. Aby otrzymać skrót pliku wszystkie skróty części są łączone jeden z drugim w porządku odpowiadającym występowaniu w pliku (to jest: sktót_części1+skrót_częsci2+skrót_części3+...) a uzyskany ciąg znaków jest ponownie haszowany. W ten sposób, każdy plik w sieci ED2K ma swój unikalny identyfikator. Skrót pliku nie jest więc uzyskiwany poprzez haszowanie całego pliku, a poprzez haszowanie wszystkich skrótów.
W rzeczywistości potrzebujesz zarówno skrótu pliku, jak i jego rozmiaru. Tego rodzaju informacje zawarte są w URLach ED2K, które można znaleźć w wielu miejscach.
Weźmy jako przykład:
ed2k://|file|eMule0.42f-Sources.zip|2407949|CC8C3B104AD58678F69858F1F9B736E9|/
Interesującymi częściami są: część piąta, "2407949", która jest rozmiarem pliku w bajtach oraz część ostatnia, "CC8C3B104AD58678F69858F1F9B736E9", która jest skrótem, zapisanym heksadecymalnie, o długości 32 znaków.