Podsumowanie
W jaki sposób nowy klient może dołączyć do roju bez osoby śledzącej lub wiedzy co najmniej jednego członka roju, z którą można wymienić partnerów?
Nie możesz To jest niemożliwe.*
* (O ile węzeł w sieci lokalnej nie jest już węzłem w DHT. W takim przypadku możesz użyć mechanizmu rozgłoszeniowego, takiego jak Avahi, aby „odkryć” tego peera i uruchomić go z niego. Ale jak to zrobić same się ładują? W końcu trafisz na sytuację, w której musisz połączyć się z publicznym Internetem. A publiczny Internet jest przeznaczony tylko do emisji pojedynczej, a nie multiemisji, więc utkniesz przy użyciu wcześniej ustalonych list rówieśników.)
Bibliografia
Bittorrent DHT jest implementowany za pomocą protokołu znanego jako Kademlia , który jest szczególnym przypadkiem teoretycznej koncepcji rozproszonej tabeli mieszającej .
Ekspozycja
Z protokołem Kademlia, kiedy przyłączyć się do sieci, należy przejść przez ładowania początkowego procedury, która bezwzględnie wymaga, aby wiedzieć, z góry , adres IP oraz port co najmniej jednego węzła już uczestniczących w sieci DHT. Na przykład moduł do śledzenia, z którym się łączysz, może być węzłem DHT. Po podłączeniu do jednego węzła DHT, następnie pobierasz informacje z DHT, które dostarczają informacji o łączności dla większej liczby węzłów, a następnie nawigujesz po tej strukturze „wykresu”, aby uzyskać połączenia z coraz większą liczbą węzłów, które mogą zapewnić zarówno łączność z innymi węzłami i dane ładunku (fragmenty pobierania).
Myślę, że rzeczywisty pytanie pogrubione - czyli o tym, jak połączyć się z siecią Kademila DHT, nie znając żadnych innych członków - opiera się na fałszywym założeniu.
Prostą odpowiedzią na twoje pytanie jest pogrubienie : nie . Jeśli nie znasz JAKICHKOLWIEK informacji na temat choćby jednego hosta, który może zawierać metadane DHT, utkniesz - nie możesz nawet zacząć. Mam na myśli, że możesz brutalnie spróbować odkryć adres IP w publicznym Internecie z otwartym portem, który zdarza się transmitować informacje DHT. Ale bardziej prawdopodobne jest, że klient BT jest na stałe zakodowany w określonym statycznym adresie IP lub DNS, który przekształca się w stabilny węzeł DHT, który dostarcza tylko metadane DHT.
Zasadniczo, DHT jest tylko jako zdecentralizowany jako mechanizmu łączącego, a ponieważ mechanizm łączenia jest dość krucha (nie ma mowy, aby „audycji” w całym Internecie! Więc trzeba unicast do indywidualnego wstępnie przypisane hosta, aby uzyskać DHT dane), Kademlia DHT nie jest tak naprawdę zdecentralizowana. Nie w najściślejszym tego słowa znaczeniu.
Wyobraź sobie ten scenariusz: ktoś, kto chce zatrzymać P2P, wychodzi i przygotowuje atak na wszystkie powszechnie używane stabilne węzły DHT, które są używane do ładowania. Po przeprowadzeniu ataku atakują go wszystkie węzły naraz. Wham ; każdy pojedynczy węzeł DHT inicjujący jest wyłączony za jednym zamachem. Co teraz? Nie możesz połączyć się ze scentralizowanymi modułami śledzącymi, aby pobrać z nich tradycyjne listy użytkowników. Cóż, jeśli zaatakują także urządzenia śledzące, to naprawdę, naprawdęw górę potoku. Innymi słowy, Kademlia i cała sieć BT są ograniczone ograniczeniami samego Internetu, ponieważ istnieje skończona (i stosunkowo niewielka) liczba komputerów, które musiałbyś skutecznie zaatakować lub przejść offline, aby zapobiec> 90% użytkowników łączących się z siecią.
Po zniknięciu „pseudo-scentralizowanych” węzłów ładowania, wewnętrzne węzły DHT, które nie są ładowaniem, ponieważ nikt z zewnątrz DHT nie wie o węzłach wewnętrznych , są bezużyteczne; nie mogą wprowadzać nowych węzłów do DHT. Tak więc, ponieważ każdy węzeł wewnętrzny z czasem rozłącza się z DHT, albo z powodu wyłączania komputerów, ponownego uruchamiania w celu aktualizacji itp., Sieć się zawali.
Oczywiście, aby obejść ten problem, ktoś może wdrożyć załatanego klienta BitTorrent z nową listą wcześniej ustalonych stabilnych węzłów DHT lub adresów DNS i głośno reklamować się w społeczności P2P, aby zamiast tego skorzystać z tej nowej listy. Ale stałoby się to sytuacją „walenia w mol”, w której agresor (pożeracz węzłów) stopniowo sam pobierałby te listy i atakował nowe odważne węzły ładowania, a następnie przestawiał je również w tryb offline.
Krótka odpowiedź: pobiera ją z pliku .torrent.
Gdy klient BitTorrent generuje plik .torrent bez śledzenia (to znaczy, gdy ktoś przygotowuje się do udostępnienia czegoś nowego za pośrednictwem BitTorrent), dodaje klucz „węzły” (klucz jak w „parze klucz / wartość”; jak nagłówek sekcji, nie kluczem kryptograficznym) do pliku .torrent, który zawiera K najbliższych węzłów DHT znanych klientowi.
http://www.bittorrent.org/beps/bep%5F0005.html#torrent-file-extensions
Kiedy więc podajesz klientowi BitTorrent plik .torrent torrenta bez śledzenia, który chcesz pobrać, używa wartości tego klucza „węzłów” z pliku .torrent do znalezienia pierwszych kilku węzłów DHT.
źródło
nie możesz! musisz znać co najmniej jedno IP roju, to jest słabość sieci p2p. Możesz ślepo nadawać, aby znaleźć pierwsze IP, ale w dużej sieci, jeśli wszyscy to robią, będziemy mieli problem z przeciążeniem. Możesz użyć pamięci podręcznej, ale jest to możliwe tylko dla dużych rojów (większa pamięć podręczna adresów równorzędnych). Zawsze musisz podłączyć moduł śledzący, aby zapytać tylko o pierwszy adres IP.
Rozproszony w DHT oznacza, że klienci nie muszą przechowywać całej listy zawierającej sumę md5 nazwy udostępnionych plików wraz z odpowiednimi równorzędnymi. Lista skrótów ma kształty na równe części i jest rozprowadzana z nadmiarem przez rój. Jeśli peer rozłączy się, jest gdzieś inny z tą samą częścią listy skrótów. Rówieśnicy dzielą się adresami do dobrego posiadacza części hashlist.
torrent-freak napisał post na ten temat
źródło
Prosi o to.
Klienci Bittorrent obsługujący DHT uruchamiają dwie osobne aplikacje peer-to-peer.
Pierwszy polega na udostępnianiu plików: rój w bittorrent lingo to grupa rówieśników współużytkujących obiekt bittorrent (np. Strukturę pliku lub katalogu). Każdy bittorent obiekt ma pewne metadane zapisane w pliku .torrent. (Obejmuje rozmiar obiektu, nazwę folderu, ewentualnie informacje o śledzeniu lub węzłach. Ect.) Hash metadanych wymaganych do pobrania tego obiektu bittorrent nazywa się infohash.
DHT jest w zasadzie drugą aplikacją P2P mającą na celu zastąpienie trackerów: przechowuje pary (infohash, rój) i aktualizuje rój, jeśli odbierze komunikaty zapowiedzi. Nowy klient musi posiadać wiedzę o jakimś „węźle” (żargon bittorrent dla peera z DHT), aby móc załadować informacje o DHT. Tutaj obowiązują argumenty podane przez @allquixotic. Ponieważ MDHT składa się obecnie z ponad 7 milionów partnerów, ciągły atak typu „odmowa usługi” wydaje się mało prawdopodobny.
Następnie może zapytać DHT o infohash i nie musi używać trackera ani znać partnera, który jest częścią roju. Jeśli jeden z rówieśników, z którymi się kontaktuje, obsługuje udostępnianie metadanych , potrzebuje tylko infohash, który może pobrać plik .torrent z roju.
źródło
Większość klientów sieciowych p2p jest ładowana z listy równorzędnych partnerów, z którymi początkowo łączą się ... po podłączeniu do jednego równorzędnego partnera ładuje resztę w sposób rozproszony. Łączy się z peer bootstrap i pobiera listę peerów DHT, a następnie przechodzi do każdego z nich i robi to samo itp. Itp.
Na przykład:
Oto lista węzłów bootstrap:
https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L10
Oto, gdzie klient łączy się z nimi, aby uwodnić listę użytkowników:
https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L60
Jest to podobne do działania modułu śledzącego, z tym wyjątkiem, że praktycznie każdy może być węzłem ładowania początkowego, więc prawie niemożliwe jest ich zamknięcie.
Portfel rdzeniowy Bitcoin działa w ten sam sposób. Pozwala zmienić peery inicjujące bootstrap, jeśli z jakiegoś powodu domyślne zostaną zamknięte.
źródło