Wie funktionieren BitTorrent-Magnetverbindungen?
Zum ersten mal habe ich eine magnet-link. Neugierig, wie es funktioniert, ich schaute auf die Spezifikationen und nicht finden die Antworten. Die wiki sagt xt
bedeutet "exakte Thema" und wird gefolgt vom format (btih
in diesem Fall) mit einem SHA1-hash. Ich sah base32 erwähnt, zu wissen, es ist 5 bits pro Zeichen und 32 Zeichen, ich fand es hält genau 160bits, das ist genau die Größe die SHA1.
Da ist kein Raum für eine IP-Adresse oder irgendetwas, es ist nur ein SHA1-Hash. Also, wie funktioniert der BitTorrent-client finden Sie die aktuelle Datei? Ich drehte mich auf den URL Snooper, um zu sehen, Besuche die eine Seite (mit TCP) oder führt eine Suche aus oder ähnliches, aber nichts passiert. Ich habe keine Ahnung, wie der client findet peers. Wie funktioniert das?
Auch, was ist der Hasch? Ist es ein hash ein array von Datei-hashes zusammen? Vielleicht ist es ein hash des eigentlichen torrent-Datei erforderlich (stripping bestimmte Informationen)?
In einer VM habe ich versucht, ein magnet-link mit uTorrent (das war frisch installiert) und es geschafft, finden die Kollegen. Wo entstanden die ersten peer her? Es war frisch und es gab auch keine anderen torrents.
InformationsquelleAutor der Frage | 2010-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen BitTorrent-magnet-link identifiziert eine torrent mit1 eine SHA-1 oder abgeschnitten, SHA-256 hash-Wert, bekannt als die "infohash". Dies ist der gleiche Wert, der peers (clients) verwenden, um zu identifizieren, torrents, wenn die Kommunikation mit den Trackern oder anderen peers. Eine traditionelle .torrent-Datei enthält eine Daten-Struktur mit zwei top-level-Tasten:
announce
sind, die Ermittlung der tracker(s) für das herunterladen, undinfo
mit den Dateinamen und hashes, für den torrent. Die "infohash" ist die hash-codierteinfo
Daten.Einigen magnet-links enthalten-Tracker oder web-Samen, aber oft nicht. Ihr Kunde kann nichts wissen über das torrent-mit Ausnahme der infohash. Das erste, was es braucht, ist das Auffinden von anderen peers, die den Download der torrent. Er tut dies mit Hilfe eines separaten peer-to-peer-Netzwerk2 Betrieb einer "distributed hash table" (DHT). Eine DHT ist ein großer verteilter index, die Karten torrents (identifiziert durch infohashes) Liste der peers (identifiziert durch IP-Adresse und ports), die Teilnahme an einem Schwarm für diesen torrent (hochladen/herunterladen von Daten oder Metadaten).
Ersten mal einen client in das DHT-Netzwerk erzeugt es eine zufällige 160-bit ID von den gleichen Platz wie infohashes. Dann startet seine Verbindung mit dem DHT-Netzwerk mit entweder hart-codiert-Adressen der clients gesteuert durch die client-Entwickler oder DHT-Unterstützung von clients, die zuvor begegnet torrent-Schwarm. Wenn Sie teilnehmen möchte, die in einem Schwarm für einen bestimmten torrent, sucht es den DHT-Netzwerk für mehrere andere Kunden, deren IDs sind so nah3 wie möglich an den infohash. Es informiert diese Kunden, dass er teilnehmen möchte, der Schwarm, und bittet Sie um die Verbindungsinformationen für irgendwelche Kollegen, die Sie bereits kennen, wer sind die teilnehmenden in der Schwarm.
Wenn peers Upload/Download eines bestimmten torrent, versuchen Sie, sich gegenseitig zu sagen über all die anderen Kollegen, Sie wissen, dass die Teilnahme in den gleichen torrent-Schwarm. So können peers wissen jeder andere, schnell, zu Unterwerfen, ohne einen tracker oder DHT zu den ständigen Anfragen. Sobald Sie gelernt haben, von ein paar Kollegen aus der DHT, wird der client in der Lage sein, zu bitten, diese Kollegen für die Verbindung von Informationen von noch mehr Kollegen in der torrent-Schwarm, bis du alle peers, die Sie benötigen.
Schließlich können wir verlangen, dass diese Kollegen für die torrent
info
Metadaten enthält, die Dateinamen und hash-Liste. Haben wir einmal heruntergeladen diese Informationen und bestätigt, dass es korrekt mit den bekannteninfohash
wir sind in praktisch der gleichen position wie ein client, der begann mit einem regelmäßigen.torrent
- Datei und bekam eine Liste von peers vom tracker enthalten.Der download kann beginnen.
1 Der infohash ist in der Regel hex-kodiert, aber einige alte clients genutzt, die Basis 32 statt. v1 (
urn:btih:
) verwendet die SHA-1-digest direkt, während v2 (urn:bimh:
) fügt eine multihash Präfix zur Identifizierung der hash-Algorithmus-und die digest-Länge.2 Es gibt zwei primäre DHT-Netze: die einfacheren "mainline" DHT, und ein komplizierteres Protokoll, Azureus.
3 Der Abstand gemessen wird, das sich durch ein XOR.
Weiter Lesen
InformationsquelleAutor der Antwort Jeremy
Peer discovery und "resource discovery" - Dateien (in deinem Fall) sind zwei verschiedene Dinge.
Ich bin mehr vertraut mit JXTA aber alle peer-to-peer-Netzwerke arbeiten auf den gleichen Grundprinzipien.
Die erste Sache, die geschehen muss, ist peer discovery.
Peer Discovery
Meisten p2p-Netzwerke sind "entkernt" Netzwerke: beim ersten Start ein peer eine Verbindung zu einem bekannten (hart-codiert) Adresse zum abrufen einer Liste der aktiven peers. Es kann sein, Direktsaat, wie die Verbindung zu
dht.transmissionbt.com
wie bereits erwähnt in einem anderen post oder indirekte seeding als in der Regel getan mit JXTA, wo der peer eine Verbindung zu einer Adresse, der liefert nur eine plain-text Liste von anderen peers im Netzwerk Adressen.Wenn die Verbindung einmal mit der ersten (paar) peer(s), die Verbindung der peer führt eine Entdeckung anderer peers (durch das senden von Anfragen aus) und unterhält eine Tabelle von Ihnen. Da die Anzahl der peers riesig sein kann, die Verbindung peer stellt nur einen Teil einer Verteilten Hash-Tabelle (DHT) der peers. Der Algorithmus, um zu bestimmen, welcher Teil der Tabelle der peer-Verbindung aufrecht erhalten sollten, variiert je nach Netzwerk. BitTorrent benutzt Kademlia mit 160 bit Bezeichner/keys.
"Resource Discovery"
Einmal ein paar Kollegen haben entdeckt, durch die Verbindung der peer, der letztere sendet ein paar Anfragen, die sich für die Entdeckung von Ressourcen. Magnet-links identifiziert die Ressourcen und sind so gebaut, dass Sie eine "Signatur" für eine Ressource und garantieren, dass Sie eindeutig zu identifizieren der angeforderten Inhalte unter allen Kollegen.
Die Verbindung der peer sendet eine discovery-Anfrage für den magnet-link/Ressource zu Gleichaltrigen um ihn herum. Die DHT ist so gebaut, dass es hilft bei der Bestimmung der peers sollte zuerst gefragt werden, die für die Ressource (Lesen Sie auf Kademlia in der Wikipedia für weitere Informationen).
Wenn der angeforderte peer nicht über die angeforderte Ressource wird es in der Regel "pass auf" die Abfrage auf weitere peers holte aus seinen eigenen DHT.
Die Anzahl der "hops" die Abfrage übergeben werden kann, ist in der Regel begrenzt ist; 4 ist eine übliche Zahl mit JXTA Netze.
Wenn ein peer hält die Ressource, es antwortet mit seinem vollen details. Die Verbindung der peer kann dann eine Verbindung zu der peer-holding der Ressource (direkt oder über ein relais - ich gehe nicht in details hier) und starten abrufen.
Ressourcen/Dienste in P2P-Netzen sind nicht direkt an die Netzwerk-Adressen: Sie verteilt werden, und das ist die Schönheit dieser hoch skalierbare Netze.
InformationsquelleAutor der Antwort Bruno Grieder
War ich neugierig, die von der gleichen Frage mich. Lesen Sie den code für die übertragung, fand ich das folgende in
libtrnasmission/tr-dht.c
:Er versucht, die 6-mal, warten 40(!) Sekunden zwischen den versuchen. Ich denke, testen kann man es durch löschen des config-Dateien (
~/.config/transmission
auf unix), und blockiert alle Kommunikation zudht.transmissionbt.com
und sehen, was passiert (warten 240 Sekunden mindestens).So scheint es, hat der AUFTRAGGEBER eine bootstrap-Knoten gebaut, um mit zu beginnen. Natürlich, sobald es bekommen in dem Netzwerk, müssen Sie nicht das bootstrap-Knoten mehr.
InformationsquelleAutor der Antwort yhager
Schließlich fand ich-Spezifikation. Zum ersten mal google wollte nicht helfen. (wiki verlinkt bittorrent.com das ist die Haupt-Website. Ich Klickte auf den Entwickler link, beachten Sie die bittorrent.org Registerkarte auf der rechten Seite dann war es einfach von dort. Seine schwer zu finden-links, wenn Sie keine Idee haben, was Sie sind beschriftet und viele Klicks).
Es scheint, wie alle torrents haben ein Netzwerk von Gleichgesinnten. Finden Sie Kollegen aus Tracker und halten Sie Sie zwischen den Sitzungen. Das Netzwerk ermöglicht es Ihnen, zu finden, peers und andere Dinge. Ich habe nicht gelesen, wie es eingesetzt wird, mit magnet-links aber wie es scheint, ist es undefiniert, wie eine frische client finden Kollegen. Vielleicht haben einige gebacken, oder Sie nutzen Ihr home-server oder bekannte Tracker eingebettet in den client zu bekommen der erste peer in das Netzwerk.
InformationsquelleAutor der Antwort
Als ich angefangen habe, deine Frage zu beantworten, ich wusste nicht, Sie wurden gefragt, wie die magnet-System funktioniert. Dachte nur, Sie wollten wissen, wie die relevanten Teile, um das bittorrent-Protokoll generiert wurden.
Den hash aufgelistet in der magnet-uri ist der torrent info hash-codiert in base32. Die info-hash ist den sha1-hash des bencoded info-block des torrent.
Diese python-code zeigt, wie es berechnet werden kann.
Schrieb ich einen (sehr naiven) C# - Implementierung zu testen, da ich nicht eine bencoder auf der hand, und es entspricht dem was erwartet wird, von dem client.
Wie ich es verstehe, ist dieser hash enthält keine Informationen auf, wie Sie die tracker, die der Kunde benötigt, um das herauszufinden, durch andere Mittel (die announce-url). Das ist genau das, was unterscheidet einen torrent von einem auf den tracker.
Alles Bezug auf das bittorrent-Protokoll immer noch dreht sich um den Verfolger. Es ist immer noch das primäre Mittel der Kommunikation unter den Schwarm. Die magnet-uri-Schema wurde nicht speziell für die Verwendung von bittorrent. Es ist durch alle P2P-Protokolle als eine alternative form der Kommunikation. Bittorrent-clients angepasst zu akzeptieren, die magnet-links als einen anderen Weg zu identifizieren, torrents, die Art und Weise, die Sie nicht herunterladen müssen .torrent-Dateien mehr. Die magnet-uri muss noch angeben
tr
acker, um ihn zu suchen, so dass die Kunden beteiligen können. Es können Informationen enthalten, die über andere Protokolle, aber ist irrelevant für das bittorrent-Protokoll. Das bittorrent-Protokoll wird letztlich nicht ohne die Tracker.InformationsquelleAutor der Antwort Jeff Mercado
die Liste von peers, sind wohl gefüllt torrent, upgrades der client (z.B. es gibt einen torrent bei utorrent, upgrades). solange jeder mit dem gleichen client, sollte es gut sein, weil Sie keine Wahl haben aber zu teilen der Aktualisierung.
InformationsquelleAutor der Antwort Moe