In einfachen Worten, wie erkennt ein BitTorrent-Client anfänglich Peers, die DHT verwenden?


43

Ich habe schon gelesen diese SuperUser Antwort und dieser Wikipedia-Artikel Aber beide sind zu technisch, als dass ich mich wirklich darum kümmern könnte.

Ich verstehe die Idee eines Trackers: Clients verbinden sich mit einem zentralen Server, der eine Liste von Peers in einem Swarm verwaltet.

Ich verstehe auch die Idee des Peer-Austauschs: Kunden, die sich bereits in einem Schwarm befinden, senden die vollständige Liste ihrer Kollegen miteinander. Wenn neue Peers entdeckt werden, werden sie der Liste hinzugefügt.

Meine Frage ist, wie funktioniert DHT? Das ist, Wie kann ein neuer Kunde einem Schwarm beitreten, ohne dass er einen Tracker oder das Wissen mindestens eines Mitglieds des Schwarms besitzt, mit dem er Peers austauschen kann?

(Anmerkung: einfache Erklärungen sind am besten.)

Antworten:


47

Zusammenfassung

Wie kann ein neuer Kunde einem Schwarm beitreten, ohne dass er einen Tracker oder das Wissen mindestens eines Mitglieds des Schwarms besitzt, mit dem er Peers austauschen kann?

Das kannst du nicht. Es ist unmöglich.*

* (Es sei denn, ein Knoten auf Ihrer lokales Netzwerk ist zufällig schon ein Knoten im DHT. In diesem Fall könnten Sie einen Broadcast-Mechanismus wie Avahi verwenden, um diesen Peer zu "entdecken" und von ihm zu booten. Aber wie war das? Sie Bootstrap selbst? Schließlich werden Sie in eine Situation geraten, in der Sie eine Verbindung zum öffentlichen Internet herstellen müssen. Und das öffentliche Internet ist nur für Unicast gedacht, nicht für Multicast.


Verweise

Bittorrent DHT wird über ein Protokoll implementiert, das als Kademlia Dies ist ein Spezialfall des theoretischen Konzepts von a Verteilte Hashtabelle .


Exposition

Wenn Sie sich mit dem Kademlia-Protokoll dem Netzwerk anschließen, durchlaufen Sie a Bootstrapping Verfahren, das unbedingt erfordert, dass Sie wissen, im Voraus , die IP-Adresse und den Port von mindestens einem Knoten, der bereits am DHT-Netzwerk teilnimmt. Der Tracker, mit dem Sie sich beispielsweise verbinden, kann selbst ein DHT-Knoten sein. Sobald Sie mit einem DHT-Knoten verbunden sind, laden Sie Informationen vom DHT herunter, die Ihnen Konnektivitätsinformationen für mehr Knoten bereitstellen. Navigieren Sie dann zu dieser "Diagramm" -Struktur, um Verbindungen zu immer mehr Knoten zu erhalten, die beide bereitstellen können Konnektivität zu anderen Knoten und Nutzdaten (Teile des Downloads).

Ich denke, Ihre eigentliche Frage ist fett gedruckt: Wie kann man einem Kademlia DHT-Netzwerk beitreten, ohne es zu wissen? irgendein andere Mitglieder - basiert auf einer falschen Annahme.

Die einfache Antwort auf Ihre Frage in Fettdruck lautet: du nicht . Wenn Sie überhaupt keine Informationen über einen Host kennen, der DHT-Metadaten enthalten könnte, stecken Sie fest - Sie können nicht einmal loslegen. Ich meine, klar, Sie könnten brutal versuchen, eine IP im öffentlichen Internet mit einem offenen Port zu entdecken, der DHT-Informationen sendet. Wahrscheinlicher ist Ihr BT-Client jedoch auf eine bestimmte statische IP- oder DNS-Adresse festgelegt, die in einen stabilen DHT-Knoten aufgelöst wird, der nur die DHT-Metadaten bereitstellt.

Grundsätzlich ist die DHT nur so dezentral wie der Verbindungsmechanismus, und weil der Verbindungsmechanismus ziemlich spröde ist (es gibt keine Möglichkeit, über das gesamte Internet zu "senden"! Sie müssen also Unicast Kademlia DHT ist es nicht Ja wirklich dezentral. Nicht im engsten Sinne des Wortes.

Stellen Sie sich dieses Szenario vor: Jemand, der möchte, dass P2P gestoppt wird, geht aus und bereitet einen Angriff auf vor alles Häufig verwendete stabile DHT-Knoten, die für das Bootstrapping verwendet werden. Sobald sie ihren Angriff inszeniert haben, springen sie auf alles Knoten auf einmal. Wham ; Jeder einzelne Bootstrapping-DHT-Knoten ist auf einen Schlag ausgefallen. Was jetzt? Sie haben keine Verbindung mehr zu zentralisierte Tracker Hier können Sie traditionelle Listen von Kollegen herunterladen. Nun, wenn sie auch die Tracker angreifen, dann sind Sie wirklich Ja wirklich einen Bach hinauf. Mit anderen Worten, Kademlia und das gesamte BT-Netzwerk sind durch die Beschränkungen des Internets selbst eingeschränkt, da es eine begrenzte (und relativ kleine) Anzahl von Computern gibt, die Sie erfolgreich angreifen oder offline schalten müssten, um & gt; 90 zu verhindern % der Benutzer können keine Verbindung zum Netzwerk herstellen.

Sobald die "pseudozentralisierten" Bootstrapping-Knoten alle verschwunden sind, werden die inneren Knoten des DHT, die nicht mehr booten, da Niemand außerhalb des DHT kennt die inneren Knoten , sind nutzlos; Sie können keine neuen Knoten in die DHT bringen. Wenn sich also jeder interne Knoten im Laufe der Zeit vom DHT abmeldet, entweder weil Leute ihren Computer herunterfahren, wegen Updates neu starten usw., würde das Netzwerk zusammenbrechen.

Um dies zu umgehen, könnte jemand einen gepatchten BitTorrent-Client mit einer neuen Liste festgelegter stabiler DHT-Knoten oder DNS-Adressen bereitstellen und der P2P-Community lautstark die Verwendung dieser neuen Liste ankündigen. Dies würde jedoch zu einer "Whats-a-Mole" -Situation werden, in der der Angreifer (der Node-eater) diese Listen schrittweise selbst herunterladen und die tapferen neuen Bootstrapping-Knoten anvisieren und dann auch offline schalten würde.


Die Art, wie Sie DHT beschreiben, klingt genauso wie Peer-Exchange.
Celeritas

Das Ding das ist Verteilt Bei DHT handelt es sich um die Verteilung der tatsächlichen Nutzdaten - dh der Liste der IPs und Ports, an denen Dateien heruntergeladen werden können. Bei einem Peer-Austausch wird die gesamte Liste auf einem Computer, in der Regel dem Tracker, gespeichert und nicht anders als beim Herunterladen einer Datei heruntergeladen. Ich könnte das in meiner Antwort erwähnen, aber diese ganze Frage (und die Antworten) betrifft nur etwas anfängliche Entdeckung oder Beitritt zum DHT-Netzwerk, nicht darüber, was nach dem Beitritt passiert.
allquixotic

1
Wenn Sie alle Bootstrap-Knoten treffen, werden neue Benutzer vom Bootstrapping abgehalten, jedoch nicht notwendigerweise vorhandene Benutzer, die offline gehen und dann wieder zurückkehren. Ich habe den Eindruck, dass sich einige der Clients an ihren aktiven Knotensatz erinnern und sie zum Wiederherstellen verwenden, anstatt jedes Mal Bootstrapping durchzuführen.
clacke

Bei Projekten wie masscan ( github.com/robertdavidgraham/masscan ) Das Erkennen von DHT-Knoten ohne ein zentrales Verzeichnis sollte möglich sein
newlog

19

Kurze Antwort: Es wird aus der Torrent-Datei abgerufen.

Bei einem BitTorrent-Client erzeugt Eine trackerlose .torrent-Datei (dh, wenn jemand bereit ist, etwas Neues über BitTorrent freizugeben), fügt einen "Nodes" -Schlüssel hinzu (Schlüssel wie in "Schlüssel / Wert-Paar"; wie eine Abschnittsüberschrift, kein Kryptoschlüssel). in die Torrent-Datei, die die K nächsten DHT-Knoten enthält, die diesem Client bekannt sind.

http://www.bittorrent.org/beps/bep%5F0005.html#torrent-file-extensions

Ein trackerloses Torrent-Wörterbuch hat keinen "Announce" -Schlüssel.   Stattdessen verfügt ein trackerloser Torrent über einen "Nodes" -Schlüssel. Dieser Schlüssel sollte sein   Stellen Sie im Routing des Torrent-generierenden Clients den nächstgelegenen Knoten auf K ein   Tabelle. Alternativ könnte der Schlüssel auf einen bekanntermaßen guten Knoten wie z   als eine von der Person betrieben, die den Strom erzeugt. Bitte nicht   automatisch "router.bittorrent.com" zu Torrent-Dateien hinzufügen oder   Fügen Sie diesen Knoten automatisch zu den Routingtabellen der Clients hinzu.

Wenn Sie also Ihrem BitTorrent-Client die .torrent-Datei eines trackerlosen Torrents zuführen, den Sie herunterladen möchten, verwendet er den Wert dieses "Knoten" -Schlüssels aus der .torrent-Datei, um seine ersten DHT-Knoten zu finden.


3
Dies sind gute erklärende Informationen. Ich denke deine Antwort erklärt Was aktuelle BitTorrent-Clients tun um das zu handhaben theoretisch Einschränkungen und Probleme, die in meiner Antwort identifiziert werden. Wir hoffen, dass unsere beiden Antworten positiv bewertet werden, da sie verschiedene Aspekte der Antwort erklären.
allquixotic

3
Ist das der Grund, warum das "Zusammenführen neuer Torrent-Dateien mit dem Herunterladen von Torrents" in vielen Clients einen toten Torrent zum Leben erweckt?
Jesvin Jose

2
@aitchnyu ja, aber die Torrent-Datei kann auch zusätzliche / andere Tracker haben.
longneck

2
Es scheint, dass kein BitTorrent-Client tatsächlich die Knoteninformationen enthält. Haben Transmission, Vuze, Deluge, Mainline und andere getestet.
Aeyoun

1

du kannst nicht! man muss mindestens eine ip von einem der schwärme kennen, das ist die schwäche eines p2p netzwerks. Sie können blind Broadcasts senden, um die erste IP-Adresse zu ermitteln. In einem großen Netzwerk treten jedoch Stauprobleme auf, wenn alle dies tun. Sie können einen Cache verwenden, dies ist jedoch nur für große Schwärme möglich (größerer Peer-Adress-Cache). Sie müssen immer einen Tracker anschließen, um nur die erste IP abzufragen.

Verteilt In DHT bedeutet dies, dass Clients nicht die gesamte Liste mit der MD5-Summe des Namens der gemeinsam genutzten Dateien zusammen mit entsprechenden Peers enthalten müssen. Die Liste der Hashs besteht aus gleich großen Teilen und wird mit Redundanz über den gesamten Schwarm verteilt. Wenn eine Peer-Verbindung getrennt wird, gibt es irgendwo eine andere mit demselben Teil der Hashliste. Die Peers teilen sich die Adresse mit dem guten Inhaber des Hashlistenteils.

torrent-freak hat einen Post zu diesem Thema verfasst


0

Wie kann ein neuer Kunde einem Schwarm beitreten, ohne dass ein Tracker oder das Wissen von mindestens einem Mitglied des Schwarms vorhanden ist, mit dem er sich mit Kollegen austauschen kann?

Es fragt danach.

Bittorrent-Clients, die das unterstützen DHT Führen Sie zwei separate Peer-to-Peer-Anwendungen aus.

Der erste führt das Filesharing durch: A Schwarm In bittorrent ist lingo eine Gruppe von Peers, die ein Bittorrent-Objekt (z. B. eine Datei- oder Verzeichnisstruktur) gemeinsam nutzen. Jedes bittorente Objekt verfügt über einige Metadaten, die in einer Torrent-Datei gespeichert werden. (Dazu gehören Objektgröße, Name des Ordners, möglicherweise Trackerinformationen oder Knoten. Ect.) Der Hash der Metadaten, die zum Herunterladen dieses Bittorrent-Objekts erforderlich sind, wird als Infohash bezeichnet.

Das DHT ist im Grunde eine zweite P2P-Anwendung, die Tracker ersetzen soll: Es speichert Paare von (Infohash, Schwarm) und aktualisiert den Schwarm, wenn er Ankündigungsnachrichten empfängt. Ein neuer Client muss über Kenntnisse eines "Knotens" (Bittorrent-Jargon für einen Kollegen des DHT) verfügen, um seine DHT-Informationen zu booten. Hier gelten die Argumente von @allquixotic. Da die MDHT derzeit aus über 7 Millionen Kollegen besteht, ist ein anhaltender Denial-of-Service-Angriff unwahrscheinlich.

Es kann dann die DHT in Bezug auf einen Infohash abfragen und muss keinen Tracker verwenden oder einen Peer kennen, der Teil des Schwarms ist. Wenn einer der Peers, den er kontaktiert, unterstützt Austausch von Metadaten es muss nur der infohash die .torrent-datei aus dem schwarm holen können.


0

Die meisten p2p-Netzwerk-Clients werden von einer Liste von Seed-Peers gebootet, mit denen sie sich anfänglich verbinden. Sobald sie sich mit einem Boot-Peer verbinden, wird der Rest verteilt heruntergeladen. Es stellt eine Verbindung zum Bootstrap-Peer her und lädt die DHT-Liste der Peers herunter. Anschließend wird zu jedem dieser Peers gewechselt und das Gleiche ausgeführt usw. usw.

Zum Beispiel:

Hier ist eine Liste von Bootstrap-Knoten:

https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L10

Hier verbindet sich der Client mit ihnen, um die Peer-Liste zu hydrieren:

https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L60

Dies funktioniert ähnlich wie ein Tracker, außer dass so ziemlich jeder ein Bootstrap-Knoten sein kann, so dass es fast unmöglich ist, ihn herunterzufahren.

Bitcoin Core Wallet funktioniert genauso. Damit können Sie die Bootstrap-Seed-Peers ändern, wenn aus irgendeinem Grund die Standard-Peers heruntergefahren werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.