Come i client torrent riassemblano e conservano pezzi?

Mi stavo chiedendo, come vengono scaricati i pezzi scaricati da client torrent e riassemblati? Utilizzano metadati? Sembra che questo non sia il caso perché uno è in grado di suonarli se sono file a metà formato? Non ho idea di come sia stato fatto? Quindi, in fondo, sto chiedendo come sono organizzati i pezzi del file scaricato? È solo dal primo all'ultimo, o ci sono spazi di buffer tra di loro?

Benvenuti nel meraviglioso mondo dei torrenti! Ci sono alcuni pezzi che comprendono il protocollo Bittorrent: hai il tuo file, legalthing.iso e vuoi distribuirlo a più persone ansible. Quindi crei un file "torrent", che descrive legalting.iso e distribuisci il file torrent attraverso un sito web o qualsiasi altro modo che ti piace. Il file torrent può puntare direttamente sul tuo computer (e tu stai agendo come il seme) o il file torrent può indicare un "tracker", che è un server che collega "semi" (utenti con l'integer legalting.iso file già) e "peer" (utenti che stanno triggersmente scaricando il file).

Ora avvicini alla tua domanda. Il file stesso, legalthing.iso, viene crittografato in modo che each persona che legge il file torrent e inizia a scaricare legalthing.iso può controllare each pezzo contro la hash e assicurarsi che non stiano scaricare un pezzo modificato dall'originale. I pezzi che non hanno controlli hash vengono eliminati.

Ora finga di essere un computer che scarichi un file, usando Bittorrent. Il protocollo può funzionare in due modi, oppure scaricherai pezzi casuali del file o scaricherai prima i pezzi più rari. Quest'ultimo approccio è quello di aumentare la "salute" globale (disponibilità) del torrente.

Quindi, cosa c'è nel file torrent reale? Esso varia a seconda del cliente usato per farlo, ma in genere contiene una sezione "annuncio" che è l'indirizzo del tracker che stai utilizzando e una grande list enorme di tutti i pezzi del file che si desidera scaricare. Ogni pezzo è di un formato uniforms (32 kb, 512kb, 4mb, in realtà qualsiasi dimensione ti piace) e each pezzo ha un hash associato ad esso. Ogni volta che un collega ottiene un pezzo, confronta l'hash per quel pezzo (utilizzando il codice hash SHA-1) con il hash elencato nel file torrent. Ecco come si scopre che i pezzi sono buoni.

Poiché il file torrent elenca each pezzo del file che stai scaricando, each volta che il tuo client scarica e ripara un pezzo, scrive il pezzo alla posizione corretta sul disco rigido all'interno del file. Ecco perché se scarichi un file da 1 GB, il client metterà da parte un disco vuoto di spazio sul tuo disco che è di 1 GB di size, per ospitare i pezzi del torrent che scaricherai.

Ora alcuni riproduttori video e altri file viewer possono occuparsi di file "danneggiati". ovviamente, un torrent medio scaricato non è corrotto, ma manca pezzi e un programma come VLC, sembra solo rotto. Così VLC farà il meglio di poter riprodurre i dati che può trovare e questo è il motivo per cui possono riprodurli parzialmente scaricati.

Ci sono aspetti molto più complicati (google DHT, torrent write buffering, tutte le cose divertenti) ma sono le basi di come funziona Bittorrent.