Wie setzen Torrent-Clients Teile wieder zusammen und speichern sie?

9

Ich habe mich gefragt, wie Teile, die von Torrent-Clients heruntergeladen wurden, gespeichert und wieder zusammengesetzt werden. Verwenden sie Metadaten? Es scheint, dass dies nicht der Fall ist, da man sie abspielen kann, wenn es sich um halb geformte Dateien handelt? Ich habe keine Ahnung, wie das gemacht wird? Im Grunde frage ich mich also, wie die Teile in der heruntergeladenen Datei organisiert sind. Ist es nur vom ersten bis zum letzten oder gibt es dazwischen Pufferräume?

Cenoc
quelle
Gibt es eine Möglichkeit, die Hälfte der heruntergeladenen Teile nach einer erneuten Überprüfung herunterzuladen? Meine Verbindung ist wie eine Einwahl ...... Bitte helfen Sie.

Antworten:

19

Willkommen in der wundervollen Welt von Torrents! Das Bittorrent-Protokoll besteht aus einigen Teilen: Sie haben Ihre Datei legalthing.iso und möchten sie an so viele Personen wie möglich verteilen. Sie erstellen also eine "Torrent" -Datei, die legalthing.iso beschreibt, und verteilen die Torrent-Datei über eine Website oder auf eine andere Art und Weise, die Sie möchten. Die Torrent-Datei kann entweder direkt auf Ihren Computer verweisen (und Sie würden als Seed fungieren) oder die Torrent-Datei kann auf einen "Tracker" verweisen, bei dem es sich um einen Server handelt, der "Seeds" (Benutzer mit der gesamten Datei legalthing.iso) verbindet Datei bereits) und "Peers" (Benutzer, die die Datei aktiv herunterladen).

Kommen Sie Ihrer Frage jetzt näher. Die Datei selbst, legalthing.iso, ist kryptografisch gehasht, sodass jede Person, die die Torrent-Datei liest und mit dem Herunterladen von legalthing.iso beginnt, jedes Stück mit dem Hash vergleichen und sicherstellen kann, dass sie kein Stück herunterlädt, das vom Original geändert wurde. Teile, die die Hash-Prüfung nicht bestehen, werden verworfen.

Stellen Sie sich nun vor, Sie sind ein Computer, der mit Bittorrent eine Datei herunterlädt. Das Protokoll kann auf zwei Arten funktionieren: Entweder laden Sie zufällige Teile der Datei herunter oder Sie laden zuerst die seltensten Teile herunter. Dieser letztere Ansatz besteht darin, die allgemeine "Gesundheit" (Verfügbarkeit) des Torrents zu erhöhen.

Was ist also in der eigentlichen Torrent-Datei? Es hängt vom Client ab, der für die Erstellung verwendet wurde. Im Allgemeinen enthält es jedoch einen Abschnitt "Ansagen", in dem die Adresse des von Ihnen verwendeten Trackers angegeben ist, sowie eine große Liste aller Teile der Datei, die Sie herunterladen möchten. Jedes Stück hat eine einheitliche Größe (32 kb, 512 kb, 4 mb, wirklich jede Größe, die Sie mögen) und jedem Stück ist ein Hash zugeordnet. Jedes Mal, wenn ein Peer ein Stück erhält, vergleicht er den Hash für dieses Stück (unter Verwendung des SHA-1-Hash-Codes) mit dem in der Torrent-Datei aufgeführten Hash. So stellt sich heraus, dass die Teile gut sind.

Da die Torrent-Datei jedes Stück der Datei auflistet, die Sie herunterladen, schreibt Ihr Client jedes Mal, wenn ein Client erfolgreich ein Stück herunterlädt und es hasht, das Stück an die richtige Position auf der Festplatte in der Datei. Wenn Sie eine 1-GB-Datei herunterladen, legt der Client daher einen leeren Block Speicherplatz auf Ihrer Festplatte mit einer Größe von 1 GB frei, um die heruntergeladenen Torrent-Teile aufzunehmen.

Jetzt können einige Videoplayer und andere Dateibetrachter mit "beschädigten" Dateien umgehen. Natürlich ist ein halb heruntergeladener Torrent nicht beschädigt, aber es fehlen Teile und für ein Programm wie VLC sieht es einfach kaputt aus. VLC wird also das Beste tun, um alle gefundenen Daten abzuspielen, und deshalb können sie abgespielt werden, während sie teilweise heruntergeladen werden.

Es gibt viel kompliziertere Aspekte (Google DHT, Torrent-Schreibpufferung, all das lustige Zeug), aber das sind die Grundlagen der Funktionsweise von Bittorrent.

Geodave
quelle
Wow, das ist eine sehr vollständige Antwort ... aber ich habe nie bemerkt, dass es wirklich eine 1-GB-Datei beiseite legt? Es scheint, dass es schrittweise wächst?
Cenoc
1
@Cenoc hängt vom Torrent-Client ab, einige Clients weisen vorab zu, andere nicht, andere haben zusätzliche
Einstellungen
Interessant, ist es also zunächst nur eine Datei, die mit Nullen gefüllt ist, und wenn die teilweise heruntergeladene Datei zum ersten Mal überprüft wird, wird sie mit den Hashes verglichen?
Cenoc
1
Es ist ein leerer Container für die eventuell vollständige Datei. Wenn jedes Teil vom Client heruntergeladen wird, wird es mit dem Hash verglichen und dann an der entsprechenden Stelle im Container abgelegt, bis die vollständige Datei vollständig ist.
Geodave
1
Wie Sathya erwähnte, hängt es vom Kunden ab. Einige weisen der gesamten Datei vorab einen Speicherplatz auf Ihrer Festplatte zu. Es wird eine Menge Speicherplatz reserviert, und andere Programme können diesen Speicherplatz auf dem Laufwerk erst verwenden, wenn Ihre Datei heruntergeladen wurde. Andere Bittorrent-Clients legen die fertigen Teile an einem temporären Speicherort ab, um Speicherplatz zu sparen, und stellen dann die vollständige Datei zusammen, sobald alle Teile heruntergeladen wurden. Dies hängt davon ab, welche Einstellungen Sie auswählen.
Geodave