Eine BitTorrent-Magnetverbindung identifiziert einen Torrent unter Verwendung von 1 a SHA-1 oder abgeschnittenem SHA-256-Hashwert, der als "Infohash" bekannt ist. Dies ist derselbe Wert, den Peers (Clients) verwenden, um Torrents bei der Kommunikation mit Trackern oder anderen Peers zu identifizieren. Eine herkömmliche Torrent-Datei enthält eine Datenstruktur mit zwei Schlüsseln der obersten Ebene: announce
Identifizieren der für den Download zu verwendenden Tracker und info
der Dateinamen und Hashes für den Torrent. Der "Infohash" ist der Hash der codierten info
Daten.
Einige Magnet-Links enthalten Tracker oder Web-Seeds, aber oft nicht. Ihr Kunde weiß möglicherweise nichts über den Torrent außer seinem Infohash. Das erste, was es braucht, ist, andere Peers zu finden, die den Torrent herunterladen. Dies geschieht über ein separates Peer-to-Peer-Netzwerk 2, das eine "Distributed Hash Table" (DHT) betreibt. Ein DHT ist ein großer verteilter Index, der Torrents (identifiziert durch Infohashes) Listen von Peers (identifiziert durch IP-Adresse und Ports) zuordnet, die an einem Schwarm für diesen Torrent teilnehmen (Hochladen / Herunterladen von Daten oder Metadaten).
Wenn ein Client zum ersten Mal dem DHT-Netzwerk beitritt, generiert er eine zufällige 160-Bit-ID aus demselben Bereich wie Infohashes. Anschließend wird die Verbindung zum DHT-Netzwerk mithilfe von fest codierten Adressen von Clients, die vom Cliententwickler gesteuert werden, oder von DHT-unterstützenden Clients, die zuvor in einem Torrent-Schwarm angetroffen wurden, gebootet. Wenn sie will in einem Schwarm für einen bestimmten Strom teilnehmen, sucht es die DHT - Netzwerk für mehrere andere Kunden , deren IDs sind so nah 3 wie möglich an der infohash. Es benachrichtigt diese Kunden, dass sie am Schwarm teilnehmen möchten, und fragt sie nach den Verbindungsinformationen aller Peers, von denen sie bereits wissen, wer am Schwarm teilnimmt.
Wenn Peers einen bestimmten Torrent hochladen / herunterladen, versuchen sie, sich gegenseitig über alle anderen Peers zu informieren, von denen sie wissen, dass sie am selben Torrent-Schwarm teilnehmen. Auf diese Weise werden Peers schnell voneinander informiert, ohne dass ein Tracker oder DHT ständigen Anforderungen ausgesetzt ist. Sobald Sie einige Peers aus dem DHT kennengelernt haben, kann Ihr Client diese Peers nach den Verbindungsinformationen von noch mehr Peers im Torrent-Schwarm fragen, bis Sie alle Peers haben, die Sie benötigen.
Schließlich können wir diese Peers nach den info
Metadaten des Torrents fragen , die die Dateinamen und die Hash-Liste enthalten. Nachdem wir diese Informationen heruntergeladen und anhand der bekannten Informationen überprüft haben, ob sie korrekt sind infohash
, befinden wir uns praktisch an der gleichen Position wie ein Client, der mit einer regulären .torrent
Datei begonnen und eine Liste der Peers vom enthaltenen Tracker erhalten hat.
Der Download kann beginnen.
1 Der Infohash ist normalerweise hexadezimal codiert, aber einige alte Clients verwendeten stattdessen Basis 32. v1 ( urn:btih:
) verwendet den SHA-1-Digest direkt, während v2 ( urn:bimh:
) ein Multihash- Präfix hinzufügt , um den Hash-Algorithmus und die Digest-Länge zu identifizieren.
2 Es gibt zwei primäre DHT-Netzwerke: das einfachere "Haupt" -DHT und ein komplizierteres Protokoll, das von Azureus verwendet wird.
3 Der Abstand wird mit XOR gemessen.
Weiterführende Literatur