Kiedy twój torrentowy klient dołącza do roju, aby dzielić się i zbierać pliki, jak dokładnie wie, gdzie są wszyscy jego rówieśnicy? Czytaj dalej, gdy przeglądamy mechanizmy, które są oparte na protokole BitTorrent.
Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, społecznościowego forum z pytaniami i odpowiedziami.
Czytnik SuperUser Steve V. miał bardzo specyficzne pytanie dotyczące systemu Distributed Hash Table (DHT) w ramach protokołu BitTorrent:
Przeczytałem już tę odpowiedź SuperUsera i ten artykuł w Wikipedii, ale oba są zbyt techniczne, abym mógł się naprawdę skupić.
Rozumiem ideę trackera: klienci łączą się z centralnym serwerem, który utrzymuje listę rówieśników w roju.
Rozumiem również ideę wzajemnej wymiany: klienci już w roju wysyłają do siebie pełną listę swoich rówieśników. W przypadku wykrycia nowych rówieśników są one dodawane do listy.
Moje pytanie brzmi: jak działa DHT? To jest,w jaki sposób nowy klient może dołączyć do roju bez śledzenia lub wiedzy co najmniej jednego członka roju, z którymi można wymieniać się rówieśnikami?
(Uwaga: najlepsze wyjaśnienia są najlepsze.)
Jego pytanie z kolei wywołało naprawdę szczegółową odpowiedź na temat różnych funkcji systemu BitTorrent; spójrzmy teraz na to.
Uczestnik SuperUser Allquixotic oferuje dogłębne wyjaśnienie:
W jaki sposób nowy klient może dołączyć do roju bez trackera lub wiedzy co najmniej jednego członka roju, z którymi można wymieniać się rówieśnikami?
Nie możesz. To jest niemożliwe.*
* (Chyba że w twoim węźlesieć lokalna już się stanie węzłem w DHT. W takim przypadku można użyć mechanizmu rozgłaszania, takiego jak Avahi, aby "odkryć" tego uczestnika i uruchomić go od nich. Ale jak to się stałoone bootstrap się? W końcu trafisz na sytuację, w której musisz połączyć się z publicznym Internetem. A publiczny Internet jest tylko emisji pojedynczej, a nie rozsyłania grupowego, więc utkniesz przy użyciu wcześniej ustalonych list rówieśników.)
Referencje
Bittorrent DHT jest implementowany za pomocą protokołu znanego jako Kademlia, który jest szczególnym przypadkiem teoretycznej koncepcji tablicy rozkładu rozproszonego.
Ekspozycja
Dzięki protokołowi Kademlia, kiedy dołączasz do sieci, przechodzisz procedurę ładowania, która absolutnie wymaga, abyś wiedział,z góry, adres IP i port co najmniej jednego węzła już uczestniczącego w sieci DHT. Na przykład tracker, z którym się łączysz, może być węzłem DHT. Po połączeniu się z jednym węzłem DHT, należy następnie pobrać informacje z DHT, które udostępnia informacje o łączności dla większej liczby węzłów, a następnie nawigować po strukturze "wykresu" w celu uzyskania połączeń 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 twoje aktualne pytanie brzmi pogrubione - o tym, jak dołączyć do sieci Kademlia DHT, nie wiedząckażdyinni członkowie - opiera się na fałszywym założeniu.
Prosta odpowiedź na twoje pytanie pogrubioną to:ty nie. Jeśli nie znasz żadnych informacji na temat nawet jednego hosta, który może zawierać metadane DHT, utkniesz - nie możesz nawet zacząć. Mam na myśli, oczywiście, możesz brutalnie zmusić się do próby znalezienia adresu IP w publicznym Internecie z otwartym portem, który transmituje informacje DHT. Ale bardziej prawdopodobne jest, że twój klient BT jest zakodowany na sztywno do określonego statycznego adresu IP lub DNS, który rozstrzyga do stabilnego węzła DHT, który właśnie dostarcza metadane DHT.
Zasadniczo DHT jest tylko tak zdecentralizowany jak mechanizm łączenia, a ponieważ mechanizm łączenia jest dość kruchy (nie ma sposobu na "nadawanie" w całym Internecie!unicastdo indywidualnego, wstępnie przydzielonego hosta, aby uzyskać dane DHT), Kademlia DHT nie jestnaprawdę zdecentralizowany. Nie w ścisłym znaczeniu tego słowa.
Wyobraź sobie ten scenariusz: Ktoś, kto chce, aby P2P przestał wychodzić i przygotowuje atakwszystkopowszechnie używane stabilne węzły DHT, które są używane do ładowania początkowego. Po wykonaniu ataku, uruchamiają gowszystko węzły wszystkie naraz.Wham; każdy pojedynczy węzeł DHT ładowania początkowego jest za jednym zamachem. Co teraz? Utknąłeś w łączeniu się zscentralizowane śledzenie aby pobrać z nich tradycyjne listy rówieśników. Cóż, jeśli zaatakują też trackery, to naprawdę jesteśnaprawdę w górę potoku. Innymi słowy, Kademlia i cała sieć BT są ograniczane przez ograniczenia samego Internetu, ponieważ istnieje skończona (i stosunkowo niewielka) liczba komputerów, które trzeba by skutecznie zaatakować lub przełączyć w tryb offline, aby zapobiec> 90% użytkowników z podłączeniem do sieci.
Po zniknięciu "pseudo-scentralizowanych" węzłów ładujących wszystkie wewnętrzne węzły DHT, które nie ładują się, ponieważnikt na zewnątrz DHT nie zna wewnętrznych węzłów, są bezużyteczne; nie mogą wprowadzać nowych węzłów do DHT. Tak więc, ponieważ każdy węzeł wewnętrzny rozłącza się z DHT w czasie, albo z powodu zamykania komputerów, restartowania aktualizacji, itp., Sieć się zawali.
Oczywiście, aby obejść ten problem, ktoś może wdrożyć poprawionego klienta BitTorrenta z nową listą wstępnie ustalonych stabilnych węzłów DHT lub adresów DNS i głośno zareklamować społeczność P2P, aby wykorzystała tę nową listę. Ale stałoby się to sytuacją, w której agresor (zjadający węzeł) stopniowo pobierałby te listy i celował w nowe, odważne węzły ładowania początkowego, a następnie również w trybie offline.
Nie tylko nauczyliśmy się odpowiedzi na oryginalne pytanie, ale także dowiedzieliśmy się trochę o naturze systemu BitTorrent i jego słabych punktach.
Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.