1Sep

W jaki sposób klient Bittorrent początkowo odkrywa swoich rówieśników?

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.

Dzisiejsze pytanie &Sesja odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupy Q & A.

Pytanie

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ź SuperUser i ten artykuł Wikipedii, ale oba są zbyt techniczne, bym mógł naprawdęchylę głowę.

Rozumiem ideę trackera: klienci łączą się z centralnym serwerem, który utrzymuje listę rówieśników w roju.

Rozumiem także 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 trackera lub wiedzy co najmniej jednego członka roju, z którym można wymieniać się równorzędnymi?

( Uwaga: proste wyjaśnienia są najlepsze.)

Jego pytanie z kolei spowodowało bardzo szczegółową odpowiedź na temat różnych funkcji systemu BitTorrent;spójrzmy teraz na to.

Odpowiedź

Pomocnik SuperUser Allquixotic oferuje dogłębne wyjaśnienie:

W jaki sposób nowy klient może dołączyć do roju bez śledzenia lub z wiedzy co najmniej jednego członka roju, z którym można wymieniać się równorzędnymi?

Nie możesz. Jest to niemożliwe. *

* ( chyba, że ​​węzeł w twojej lokalnej sieci jest już węzłem w DHT.) W takim przypadku możesz użyć mechanizmu nadawania, takiego jak Avahi, aby "odkryć" tego peerai bootstrap od nich, ale w jaki sposób oni się ładują? 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 utknąłeśprzy użyciu wcześniej ustalonych list rówieśników.)

Referencje

Bittorrent DHT jest zaimplementowany za pomocą protokołu znanego jako Kademlia, który jest szczególnym przypadkiem teoretycznej koncepcji tablicy rozkładu rozproszonego.

Ekspozycja

Wraz z protokołem Kademlia, po dołączeniu do sieci, przechodzisz procedurę ładowania początkowego, która bezwzględnie wymaga wcześniejszego , adresu IP i portu 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 pogrubione - to, w jaki sposób dołączyć do sieci Kademlia DHT, nie znając żadnego innego członka - opiera się na fałszywym założeniu.

Prostą odpowiedzią na twoje pytanie pogrubioną jest , a 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 "rozgłaszanie" w całym Internecie! , więc musisz unicast do indywidualnego, predefiniowanego hosta douzyskać dane DHT), Kademlia DHT nie jest zdecentralizowana naprawdę .Nie w ścisłym znaczeniu tego słowa.

Wyobraź sobie ten scenariusz: Ktoś, kto chce, aby P2P przestał gasnąć, przygotowuje atak na wszystkie powszechnie używane stabilne węzły DHT , które są używane do ładowania początkowego. Po wykonaniu ataku, uruchamiają go na wszystkie węzły wszystkie naraz. Wham ;każdy pojedynczy węzeł DHT ładowania początkowego jest za jednym zamachem. Co teraz? Utknąłeś na łączeniu się ze scentralizowanymi trackerami , aby pobrać od nich tradycyjne listy rówieśników. Cóż, jeśli zaatakują też trackery, to tak naprawdę, 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 musiałbyś skutecznie zaatakować lub przejść do trybu offline, aby zapobiec> 90% użytkowników nie łączy się z siecią.

Po zniknięciu "pseudo-scentralizowanych" węzłów ładujących, wewnętrzne węzły DHT, które nie ładują się, ponieważ nikt na zewnątrz DHT nie wie o wewnętrznych węzłach , 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ś mógł zainstalować poprawionego klienta BitTorrenta na nowej liście wstępnie ustalonych stabilnych węzłów DHT lub adresów DNS i głośno reklamować się społeczności P2P, aby zamiast tego używać tej nowej listy. 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.