Torrent | |
---|---|
Estensione | .torrent
|
Tipo MIME | application/x-bittorrent
|
Standard | BEP-0003 |
Torrent (o metainfo[1]) è un formato di file utilizzato dal protocollo peer-to-peer BitTorrent per la distribuzione e la condivisione di file tramite Internet.[2][3][4]
La funzione di questo tipo di file è quella di condividere contenuti personali. Ogni utente, infatti, può creare e pubblicare un proprio torrent. La diffusione dei file .torrent si è avuta parallelamente alla diffusione della banda larga (ADSL).
Tecnicamente, i .torrent sono file di piccole dimensioni che, aperti con programmi appositi, portano a scaricare il contenuto memorizzato nel computer delle persone che stanno condividendo il file. Si tratta di file di tipo binario, che contengono tutte le informazioni di riferimento del file da scaricare e condividere.
La codifica utilizzata per i file torrent viene chiamata Bencode.
Bencode è una codifica derivata da XML, sebbene la sua sintassi sia completamente diversa. Bencode ha infatti la scalabilità, l'inclusione e l'estensibilità completa di un documento XML, ma permette di risparmiare caratteri (e, quindi, byte in trasmissione) per codificare le informazioni.[5]
I quattro tipi fondamentali di Bencode sono il dizionario, la lista, l'intero e la stringa. Differentemente da XML il tipo intero è separato dal tipo stringa. Un dizionario e una lista possono contenere un numero infinito di elementi di natura qualsiasi, mentre intero e stringa non possono contenere altri elementi.
Una stringa XXXXX viene codificata come l:XXXXX, dove l è la lunghezza in caratteri della stringa.
Esempi:
foo => 3:foo bar => 3:bar spam => 4:spam eggs => 4:eggs Ciao Mondo => 10:Ciao Mondo
Un intero Y viene codificato come iYe.
Esempi:
8 => i8e 765 => i765e
Un dizionario consiste in una serie di elementi ciascuno identificato da una stringa. Gli elementi non hanno limitazioni di tipo. Possono essere anch'essi dizionari. Un dizionario con un elemento XYZ => ABC, indicando (ABC) la codifica in Bencode dell'elemento, è rappresentato dalla stringa d3:XYZ(ABC)e. Il carattere e è un terminatore.
Esempi:
{ filename => miofile.txt size => 76500 attributes => { readonly => 1 hidden => 0 } } equivale a d8:filename11:miofile.txt4:sizei76500e10:attributesd8:readonlyi1e6:hiddeni0eee
Una lista inizia con il carattere l e termina col carattere e. Gli elementi sono disposti nel loro ordine, ciascuno nella rispettiva codifica.
Esempio:
{ foo bar spam { ciao => mondo num => 5 } } equivale a l3:foo3:bar4:spamd4:ciao5:mondo3:numi5eee
Il file torrent, come già visto, contiene le informazioni necessarie per identificare e scaricare un file dalla Rete in tutta sicurezza. Si tratta di un file di testo che contiene la codifica in Bencode di un unico grande dizionario, il quale contiene a sua volta i dati (anch'essi sotto forma di dizionari) che identificano il torrent.
I seguenti elementi fanno parte del protocollo standard e comprendono le ultime estensioni [6]: (quelli in grassetto sono richiesti dal protocollo standard)
I suoi elementi possono variare se il torrent è composto da uno o da più file
In caso di file singolo:
In caso di archivio con più file: