Un collegamento magnete BitTorrent identifica un torrent usando 1 a SHA-1 o troncato valore hash SHA-256 noto come "infohash". Questo è lo stesso valore utilizzato dai peer (client) per identificare i torrent quando comunicano con tracker o altri peer. Un file .torrent tradizionale contiene una struttura di dati con due chiavi di livello superiore: announce
identificare i tracker da utilizzare per il download e info
contenere i nomi dei file e gli hash per il torrent. "Infohash" è l'hash dei info
dati codificati .
Alcuni collegamenti magnetici includono tracker o semi web, ma spesso non lo fanno. Il tuo client potrebbe non sapere nulla del torrent tranne che per il suo infohash. La prima cosa che deve fare è trovare altri peer che stanno scaricando il torrent. Lo fa usando una rete peer-to-peer 2 separata che gestisce una "tabella hash distribuita" (DHT). Un DHT è un grande indice distribuito che mappa i torrent (identificati da infohash) agli elenchi di peer (identificati da indirizzo IP e porte) che partecipano a uno sciame per quel torrent (caricamento / download di dati o metadati).
La prima volta che un client si unisce alla rete DHT, genera un ID casuale a 160 bit dallo stesso spazio delle infohash. Quindi avvia la sua connessione alla rete DHT usando indirizzi hardcoded di client controllati dallo sviluppatore del client o client che supportano DHT precedentemente incontrati in uno sciame torrent. Quando si vuole partecipare a uno sciame per un dato torrente, cerca la rete DHT per diversi altri clienti i cui ID sono il più vicino 3 possibile al infohash. Comunica a questi clienti che vorrebbe partecipare allo sciame e chiede loro le informazioni di connessione di tutti i peer che già conoscono e che partecipano allo sciame.
Quando i peer caricano / scaricano un particolare torrent, provano a parlarsi di tutti gli altri peer di cui sono a conoscenza e che partecipano allo stesso sciame di torrent. Ciò consente ai peer di conoscersi rapidamente, senza sottoporre un tracker o DHT a richieste costanti. Dopo aver appreso alcuni peer dal DHT, il tuo client sarà in grado di chiedere a quei peer le informazioni di connessione di altri peer nello sciame torrent, fino a quando non avrai tutti i peer di cui hai bisogno.
Infine, possiamo chiedere a questi peer i info
metadati del torrent , contenenti i nomi dei file e l'elenco di hash. Una volta scaricate queste informazioni e verificato che sia corretto utilizzando il noto infohash
, siamo praticamente nella stessa posizione di un client che ha iniziato con un .torrent
file normale e ha ottenuto un elenco di peer dal tracker incluso.
Il download potrebbe iniziare.
1 Infohash è in genere codificato in esadecimale, ma alcuni vecchi client hanno utilizzato invece la base 32. v1 ( urn:btih:
) utilizza direttamente il digest SHA-1, mentre v2 ( urn:bimh:
) aggiunge un prefisso multihash per identificare l'algoritmo hash e la lunghezza del digest.
2 Esistono due reti DHT primarie: la DHT "mainline" più semplice e un protocollo più complicato usato da Azureus.
3 La distanza è misurata da XOR.
Ulteriori letture