Koduję implementację p2p, którą chciałbym zdecentralizować, ale mam pewne problemy z uchwyceniem DHT w protokołach, takich jak bittorrent. W jaki sposób klient wie, gdzie znajdują się rówieśnicy, jeśli nie ma trackera? Czy peery są przechowywane w aktualnym pliku torrent?Jak działa DHT w torrentach?
Odpowiedz
Torrenty trackerless/DHT, adresy IP peer są przechowywane w DHT za pomocą klucza BitTorrent infohash. Ponieważ wszystkie trackery zasadniczo odpowiadają na żądania put/get, ta funkcja dokładnie odpowiada interfejsowi, który zapewnia DHT (rozproszony tablica asocjacyjna): umożliwia wyszukiwanie i przechowywanie adresów IP w DHT przez infohash.
Tak więc, żądanie "get" wyszuka informacje BT i zwróci zestaw adresów IP. "Put" przechowuje adres IP dla danego infohash. Odpowiada to żądaniu "ogłoszenia", które w przeciwnym razie zostałoby wykonane przez moduł śledzący w celu otrzymania słownika adresów IP peerów.
W systemie DHT rówieśniki są losowo przypisywane do wartości przechowywanych należących do niewielkiej części przestrzeni kluczy; funkcja mieszania zapewnia, że klucze są rozdzielane losowo między uczestniczącymi rówieśnikami. Protokół DHT (Kademlia dla BitTorrent) zapewnia, że żądania wysyłania/odbierania są efektywnie kierowane do równorzędnych podmiotów odpowiedzialnych za utrzymywanie list adresów IP danego klucza.
Ogólna teoria znajduje się w artykule wikipedia na temat Kademlia. Specyficzna specyfikacja protokołu używana w bittorrent znajduje się tutaj: http://wiki.theory.org/BitTorrentDraftDHTProtocol
Co się dzieje z bittorrent i DHT, że na początku bittorrent używa informacji zawartych w pliku torrent, aby przejść do trackera lub jednego z zestawu węzłów z DHT. Następnie, gdy znajdzie jeden węzeł, może nadal znajdować inne i nadal korzystać z DHT bez potrzeby korzystania ze scentralizowanego trackera, aby go utrzymać.
Oryginalna informacja uruchamia później korzystanie z DHT.
Węzły DHT mają unikalne identyfikatory, określane jako Node ID. Identyfikatory węzłów wybierane są losowo z tej samej 160-bitowej przestrzeni, co hashtoty z informacjami o BitTorrentu. Bliskość mierzy się porównując tabele trasowania identyfikatora węzła, im bliżej węzła, tym bardziej szczegółowe, co daje w rezultacie optymalną wartość. Co czyni je bardziej optymalnymi niż poprzednik "Kademlia", który używał prostych liczb całkowitych bez znaku: odległość (A, B) = | A xor B | Mniejsze wartości są bliższe. XOR. Poza tym, że nie jest bezpieczny, jego logika była wadliwa.
Jeśli twój klient obsługuje DHT, zarezerwowano 8 bajtów, w których znajduje się 0x09, a następnie 2-bajtowy ładunek z portem UDP i węzłem DHT. Jeśli uzgadnianie zakończy się powodzeniem, powyższe będzie kontynuowane.
gdzie jest numer portu dla każdego adresu IP? –
Port jest dołączony wraz z adresem IP peera: http://www.bittorrent.org/beps/bep_0005.html#contact-encoding – cce
Czy wartości klucza zostały utracone/wygasły? – schulwitz