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.
Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupowania witryn 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:
Przeczytałem już tę odpowiedź SuperUsera i ten artykuł w Wikipedii, ale oba są zbyt techniczne, abym mógł się naprawdę objąć.
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 śledzenia lub wiedzy co najmniej jednego członka roju,?
(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.
Odpowiedź
Uczestnik SuperUser Allquixotic oferuje szczegółowe wyjaśnienie:
W jaki sposób nowy klient może dołączyć do roju bez trackera lub wiedzy co najmniej jednego członka roju w celu wymiany rówieśników?
Nie możesz. To jest niemożliwe.*
* (Chyba że w twoim węźle sieć lokalna już się stanie 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 od nich. Ale jak to się stało one 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 utknąłeś z wykorzystaniem 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 tabeli rozkładu.
Ekspozycja
Z protokołem Kademlia, kiedy dołączasz do sieci, przechodzisz procedurę ładowania, która absolutnie wymaga twojej wiedzy, 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, możesz kontynuować pobieranie informacji z DHT, który dostarcza informacji o połączeniach 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órzy mogą zapewnić zarówno łączność z innymi węzłami i dane ładunku (porcje pobrania).
Wydaje mi się, że twoje aktualne pytanie brzmi pogrubione - o tym, jak dołączyć do sieci Kademlia DHT, nie wiedząc każdyinni członkowie - opiera się na fałszywym założeniu.
Prosta odpowiedź na twoje pytanie pogrubioną jest, 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 stałe 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 przypisanego hosta, aby uzyskać dane DHT), Kademlia DHT nie jest naprawdę zdecentralizowany. Nie w ścisłym znaczeniu tego słowa.
Wyobraź sobie ten scenariusz: Ktoś, kto chce, aby P2P przestał wychodzić i przygotowuje atak wszystko powszechnie używane stabilne węzły DHT, które są używane do ładowania początkowego. Po wykonaniu ataku, uruchamiają go wszystko 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ę z scentralizowane ś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 musiałbyś skutecznie zaatakować lub przejść do trybu 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ła.
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 zamiast tego używać tej nowej listy. Ale stanie się to sytuacją, w której agresor (zjadający węzeł) stopniowo pobierze te listy i zaatakuje nowe, odważne węzły ładujące, a następnie zabierze je również do trybu 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.