Wie erkennt ein Bittorrent-Client anfänglich seine Kollegen?
Wenn Ihr Torrent-Client sich dem Schwarm anschließt, um Aktenstücke auszutauschen und zu sammeln, woher weiß er genau, wo sich alle Peers befinden? Lesen Sie weiter, während wir uns in den Mechanismen des BitTorrent-Protokolls auseinandersetzen.
Die heutige Question & Answer-Sitzung wird dank SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.
Die Frage
Der Superuser-Leser Steve V. hatte eine sehr spezifische Frage zum DHT-System (Distributed Hash Table) im BitTorrent-Protokoll:
Ich habe diese SuperUser-Antwort und diesen Wikipedia-Artikel bereits gelesen, aber beide sind zu technisch, als dass ich meinen Kopf wirklich einwickeln könnte.
Ich verstehe die Idee eines Trackers: Clients stellen eine Verbindung zu einem zentralen Server her, der eine Liste von Peers in einem Schwarm verwaltet.
Ich verstehe auch die Idee des Peer-Austauschs: Kunden, die sich bereits in einem Schwarm befinden, senden die vollständige Liste ihrer Kollegen aneinander. 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 ein Tracker oder das Wissen von mindestens einem Mitglied des Schwarms vorhanden ist, mit dem er sich mit Kollegen austauschen kann??
(Anmerkung: einfache Erklärungen sind am besten.)
Seine Frage veranlasste ihn zu einer wirklich detaillierten Antwort auf die verschiedenen Funktionen des BitTorrent-Systems. Lassen Sie uns jetzt einen Blick darauf werfen.
Die Antwort
SuperUser-Mitwirkender Allquixotic bietet eine ausführliche Erklärung:
Wie kann ein neuer Kunde einem Schwarm beitreten, ohne einen Tracker oder das Wissen von mindestens einem Mitglied des Schwarms, mit dem er sich austauschen kann??
Du kannst nicht Es ist unmöglich.*
* (Es sei denn, ein Knoten auf Ihrem lokales Netzwerk ist schon ein Knoten in der DHT. In diesem Fall könnten Sie einen Broadcasting-Mechanismus wie Avahi verwenden, um diesen Peer zu "entdecken" und von ihnen Bootstraps auszuführen. 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 Unicast und kein Multicast. Daher müssen Sie festgelegte Listen von Peers verwenden.)
Verweise
Bittorrent DHT wird über ein Protokoll namens Kademlia implementiert, das ein Spezialfall des theoretischen Konzepts einer Distributed-Hash-Tabelle ist.
Exposition
Beim Kademlia-Protokoll durchlaufen Sie beim Beitritt zum Netzwerk eine Bootstrapping-Prozedur, die Sie unbedingt kennen müssen, im Voraus, die IP-Adresse und den Port von mindestens einem Knoten, der bereits am DHT-Netzwerk beteiligt ist. Der Tracker, mit dem Sie sich verbinden, kann beispielsweise selbst ein DHT-Knoten sein. Sobald Sie mit einem DHT-Knoten verbunden sind, fahren Sie mit dem Herunterladen von Informationen vom DHT fort, wodurch Sie Konnektivitätsinformationen für mehrere Knoten erhalten. Anschließend navigieren Sie durch diese "Diagramm" -Struktur, um Verbindungen zu immer mehr Knoten zu erhalten. Wer kann beides bereitstellen? Konnektivität zu anderen Knoten und Nutzdaten (Chunks des Downloads).
Ich denke, Ihre eigentliche Frage ist fett - die Frage, wie Sie sich einem Kademlia DHT-Netzwerk anschließen können, ohne es zu wissen irgendeinandere Mitglieder - basiert auf einer falschen Annahme.
Die einfache Antwort auf Ihre Frage ist fett, du nicht. Wenn Sie KEINE Informationen zu einem Host kennen, der möglicherweise DHT-Metadaten enthält, stecken Sie fest - Sie können nicht einmal anfangen. Ich meine, sicher, Sie könnten einen Versuch unternehmen, eine IP im öffentlichen Internet mit einem offenen Port zu entdecken, der DHT-Informationen überträgt. Es ist jedoch wahrscheinlicher, dass Ihr BT-Client mit einer bestimmten statischen IP oder DNS fest codiert ist, die in einen stabilen DHT-Knoten aufgelöst wird, der nur die DHT-Metadaten bereitstellt.
Grundsätzlich ist das 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 "übertragen"!), Müssen Sie also Unicastzu einem vorab zugewiesenen Host, um die DHT-Daten zu erhalten), Kademlia DHT nicht Ja wirklich dezentral. Nicht im engsten Sinne des Wortes.
Stellen Sie sich dieses Szenario vor: Jemand, der P2P zum Stoppen bringen will, geht raus und bereitet einen Angriff 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 DHT-Knoten für das Bootstrapping ist auf einen Schlag aus. Was jetzt? Du bleibst beim Verbinden mit zentralisierte Tracker Hier können Sie traditionelle Listen von Kollegen herunterladen. 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 angreifen oder offline nehmen müssten, um> 90% zu verhindern. von Benutzern von der Verbindung zum Netzwerk.
Sobald die "pseudo-zentralisierten" Bootstrapping-Knoten alle verschwunden sind, werden die inneren Knoten des DHT nicht mehr bootstrapping, weil dies der Fall ist niemand außerhalb des DHT weiß über die inneren Knoten Bescheid, sind nutzlos; Sie können keine neuen Knoten in das DHT bringen. Wenn also jeder interne Knoten im Laufe der Zeit die Verbindung zum DHT trennt, 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 Situation werden, in der der Angreifer (der Knotenfresser) diese Listen schrittweise selbst herunterlädt und auf die mutigen neuen Bootstrapping-Knoten abzielt und sie dann auch offline nimmt.
Wir haben nicht nur die Antwort auf die ursprüngliche Frage gelernt, sondern auch viel über die Natur des BitTorrent-Systems und seine Schwachstellen gelernt.
Haben Sie der Erklärung etwas hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.