Skip to content

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

27 de lipiec de 2021
sshot51b0d3b1d8a7c

Kiedy twój klient torrent dołącza do roju, aby dzielić się i zbierać fragmenty plików, skąd dokładnie wie, gdzie są wszyscy jego rówieśnicy? Czytaj dalej, gdy zaglądamy do mechanizmów obsługujących protokół BitTorrent.

Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser — pododdziału Stack Exchange, społecznościowej grupy witryn internetowych z pytaniami i odpowiedziami.

Pytanie

Czytnik SuperUser Steve V. miał bardzo konkretne pytanie dotyczące systemu Distributed Hash Table (DHT) w ramach protokołu BitTorrent:

już czytałemta odpowiedź SuperUserorazten artykuł w Wikipediiale oba są dla mnie zbyt techniczne, abym mógł się naprawdę ogarnąć.

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

Rozumiem też ideę wymiany peerów: klienci już w roju przesyłają sobie nawzajem kompletną listę swoich peerów. Jeśli zostaną wykryci nowi równorzędni, są dodawani do listy.

Moje pytanie brzmi, jak działa DHT? To znaczy,jak nowy klient może dołączyć do roju bez trackera lub wiedzy przynajmniej jednego członka roju, z którym mógłby wymieniać się rówieśnikami?

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

Jego pytanie z kolei skłoniło do bardzo szczegółowej odpowiedzi na temat różnych funkcji systemu BitTorrent; spójrzmy na to teraz.

Odpowiedź

Współtwórca SuperUser Allquixotic oferuje szczegółowe wyjaśnienie:

Jak nowy klient może dołączyć do roju bez trackera lub wiedzy przynajmniej jednego członka roju, z którym mógłby wymieniać się rówieśnikami?

Nie możesz. To jest niemożliwe.*

*(Chyba że węzeł na twoimsieć lokalnazdarza się, że jest już węzłem w DHT. W takim przypadku możesz użyć mechanizmu rozgłaszania, takiego jak Avahi, aby „odkryć” tego peera i uruchomić go z niego. Ale jak?onibootstrap sami? W końcu znajdziesz się w sytuacji, w której musisz połączyć się z publicznym Internetem. Publiczny Internet działa tylko w trybie emisji pojedynczej, a nie multiemisji, więc utkniesz w korzystaniu z wcześniej określonych list równorzędnych).

Bibliografia

Bittorrent DHTjest implementowany za pomocą protokołu znanego jakoKademli, co jest szczególnym przypadkiem teoretycznej koncepcji aRozproszona tablica mieszająca.

Ekspozycja

Dzięki protokołowi Kademlia po dołączeniu do sieci przechodzisz przezładowanie początkoweprocedura, która bezwzględnie 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 sam być węzłem DHT. Po połączeniu się z jednym węzłem DHT, przechodzisz do pobierania informacji z DHT, które dostarczają informacji o łączności dla większej liczby węzłów, a następnie poruszasz się po strukturze „grafu”, aby uzyskać połączenia z coraz większą liczbą węzłów, które mogą zapewnić oba łączność z innymi węzłami i dane dotyczące ładunku (fragmenty pobierania).

Myślę, że twoje rzeczywiste pytanie jest pogrubione – jak dołączyć do sieci Kademlia DHT bez wiedzykażdypozostali członkowie — opiera się na fałszywym założeniu.

Prostą odpowiedzią na Twoje pytanie pogrubioną czcionką jest:ty nie. Jeśli nie znasz ŻADNYCH informacji o nawet jednym hoście, który może zawierać metadane DHT, utkniesz — nie możesz nawet zacząć. Mam na myśli, że możesz brutalną próbę wykrycia adresu IP w publicznym Internecie z otwartym portem, który może transmitować 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 prowadzi do stabilnego węzła DHT, który dostarcza tylko metadane DHT.

Zasadniczo DHT jest tak zdecentralizowany, jak mechanizm łączenia, a ponieważ mechanizm łączenia jest dość kruchy (nie ma możliwości „nadawania” przez cały Internet!, więc musisz to zrobićunicastdo indywidualnego, wstępnie przypisanego hosta, aby uzyskać dane DHT), Kademlia DHT nie jestnaprawdęzdecentralizowany. Nie w ścisłym tego słowa znaczeniu.

Wyobraź sobie taki scenariusz: ktoś, kto chce, aby P2P przestało działać, wychodzi i przygotowuje atak nawszystkopowszechnie używane stabilne węzły DHT, które są używane do ładowania początkowego. Kiedy już zaatakują, rozpoczynają gowszystkowszystkie węzły na raz.Wham; każdy pojedynczy węzeł ładowania DHT jest wyłączony za jednym zamachem. Co teraz? Utknąłeś z łączeniem się zscentralizowane trackerypobierać z nich tradycyjne listy rówieśników. Cóż, jeśli zaatakują też tropicieli, 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 trzeba by skutecznie zaatakować lub wyłączyć, aby zapobiec >90% użytkowników przed łączeniem się z siecią.

Gdy wszystkie „pseudo-scentralizowane” węzły ładowania początkowego znikną, wewnętrzne węzły DHT, które nie są uruchamiane, ponieważnikt poza DHT nie wie o węzłach wewnętrznych, są bezużyteczne; nie mogą wprowadzać nowych węzłów do DHT. Tak więc, gdy każdy węzeł wewnętrzny z czasem odłącza się od DHT, albo z powodu ludzi wyłączających swoje komputery, restartujących się w celu aktualizacji itp., sieć upada.

Oczywiście, aby obejść ten problem, ktoś mógłby wdrożyć łatanego klienta BitTorrent z nową listą wstępnie określonych stabilnych węzłów DHT lub adresów DNS i głośno reklamować społeczności P2P, aby zamiast tego korzystała z tej nowej listy. Ale stałoby się to sytuacją typu „whack-a-mole”, w której agresor (pożeracz węzłów) stopniowo sam pobierałby te listy i celował w nowe, odważne węzły ładowania początkowego, a następnie przenosił je również do trybu offline.

Nie tylko poznaliśmy odpowiedź na pierwotne pytanie, ale także dowiedzieliśmy się sporo o naturze systemu BitTorrent i jego lukach.

Masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych doświadczonych technologicznie użytkowników Stack Exchange?Sprawdź pełny wątek dyskusji tutaj.

Czy ten post był pomocny?