BitTorrent: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
 
(558 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
{{IPstackNota disambigua}}
{{C|Linguaggio a tratti non enciclopedico|informatica|maggio 2009}}
[[Immagine:BitTorrent.png|thumb|350px|Una finestra del client grafico originario BitTorrent]]
[[File:BitTorrentlogo.gif|thumb|Logo]]
 
In [[informatica]] '''BitTorrent''' (spesso abbreviato BT) è un [[protocollo di rete|protocollo]] di tipo [[peer-to-peer]] (P2P) finalizzato allo scambio ovvero alla distribuzione e [[file sharing|condivisione di file]] nella [[Internet|Rete]].
'''BitTorrent''' è un protocollo [[peer-to-peer]] (P2P) che consente la distribuzione e la condivisione di file su [[Internet]].<br />Esiste anche un software che implementa questo protocollo e che si chiama nello stesso modo, ossia BitTorrent. E' stato sviluppato da [[Bram Cohen]], un programmatore di [[San Francisco]], e ha debuttato al [[CodeCon]] del [[2002]]. È scritto in linguaggio [[Python]] ed è stato rilasciato originariamente sotto licenza [[Massachusetts Institute of Technology|MIT]]. Dalla versione 4.0.0 del [[7 marzo]] [[2005]] la licenza è cambiata nella BitTorrent Open Source License. Il software è disponibile per i [[Sistema operativo|sistemi operativi]] [[Microsoft Windows]], [[Mac OS]] e [[Linux]].
 
==Come funzionaDescrizione ==
Scritto in linguaggio [[Python]], originariamente distribuito sotto [[Licenza MIT]], dalla versione 4.0.0 del 7 marzo [[2005]] la licenza è cambiata in BitTorrent Open Source License ed è disponibile per i [[Sistema operativo|sistemi operativi]] [[Microsoft Windows]], [[Mac OS]], [[Linux]] e [[Android]]. In realtà non è da considerarsi come un algoritmo distribuito puro, dato che la sua architettura prevede la presenza di un [[BitTorrent tracker|server]] utilizzato per la fase di aggancio alla rete. L'omonimo [[client]] originale e il protocollo sono stati sviluppati da [[Bram Cohen]], un programmatore di [[San Francisco]], nel [[2002]]. In precedenza, Cohen aveva scritto "Moyonation", un programma che frammentava i file e li inviava via web.
A differenza dei tradizionali sistemi di [[File sharing|file sharing]], l'obiettivo di BitTorrent è di realizzare e fornire un sistema efficiente per distribuire lo stesso [[file]] verso il maggior numero di utenti disponibili sia che lo stiano prelevando ([[download]]) che inviando ([[upload]]). Si tratta quindi di un meccanismo per coordinare in automatico il lavoro di moltitudini di computer, ottenendo il miglior beneficio comune possibile.
Ecco come funziona:
 
== Funzionamento ==
===Il file originale===
[[File:Torrentcomp small.gif|thumb|upright=2.7|Animazione del protocollo: i punti colorati sotto ogni computer rappresentano le differenti parti del file che viene condiviso. Con il passare del tempo viene completata la copia di ognuna di queste parti nel computer di destinazione.]]
BitTorrent è un protocollo che permette di distribuire file di qualsiasi tipo. Per facilitare la trasmissione, il documento originale viene spezzettato in tanti piccoli frammenti, che poi saranno ricomposti a destinazione. Le parti hanno dimensione fissa, la [[fingerprint]] calcolata con l'algoritmo [[SHA1]] viene distribuita agli altri client per verifica mediante i network (come il [[Web]])
 
A differenza dei tradizionali sistemi di ''[[file sharing]]'', l'obiettivo di BitTorrent è di realizzare e fornire un sistema efficiente per distribuire lo stesso [[file]] verso il maggior numero di utenti disponibili, che possono sia prelevarlo scaricandolo sul proprio terminale ([[download]]) sia inviarlo ad altri ([[upload]]).
===Il file .torrent===
[[Immagine:Azureus.png|left]]
È un semplice file, di dimensioni modeste, che può essere pubblicato, ad esempio, su una pagina Web. Per poter usufruire del sistema è quindi necessario, prima di tutto, prelevare un file con l'estensione <tt>.torrent</tt>. Tale file svolge la funzione di indice, con la descrizione di tutti i pacchetti in cui è stato suddiviso un originale, incluse le chiavi hash che garantiscono l'integrità dei vari pezzi. Tecnicamente altro non è che un file statico, e contiene delle informazioni codificate mediante un algoritmo di [[hashing]] che descrivono i file da prelevare e/o da trasferire. Inoltre contiene l'indirizzo [[URL]], cioè un link, di un '''server traccia''' (in inglese '''tracker''') utilizzato per localizzare le sorgenti che posseggono il file o parte di esso. Questo '''tracker''' è un piccolo programma che svolge il ruolo di vigile urbano, coordinando le richieste degli utenti che cercano di scaricare un certo file e informandoli a vicenda di chi possiede quali pezzi.
 
BitTorrent impone di fatto un meccanismo di coordinamento del lavoro di numerosi computer, ottenendo il massimo beneficio possibile per tutti. Grazie a questo sistema ogni nodo contribuisce alla diffusione del file. Maggiore è l'ampiezza di banda in uscita su quel nodo, maggiori sono le probabilità che il file venga diffuso verso altri nodi. Questo metodo ha anche il pregio di ridurre l'impatto della cosiddetta '''"''leech resistance''"''' (vedere in proposito la sezione [[#Leecher|''Leecher'']]).
La lista dei file tracker viene definita per ogni file <TT>.torrent</TT>.
Solitamente, i siti tracker forniscono anche delle statistiche sul numero di trasferimenti, il numero di nodi che hanno completato la copia del file e il numero di nodi che posseggono una copia parziale del file.
 
=== Il file originale ===
I file o la serie di file che si desidera scaricare da un computer sorgente viene fornita dal "tracker server" e, mentre lo si sta scaricando, questo viene diffuso in parallelo verso altri computer sorgente, utilizzando una parte della [[banda (elettronica)|banda]] dell'utente non impegnata durante il trasferimento principale.
BitTorrent permette di distribuire file di qualsiasi tipo. Il documento originale viene frammentato in tanti piccoli pezzi che poi saranno ricomposti a destinazione. Le parti hanno dimensione fissa, il ''[[fingerprint]]'' calcolato con l'algoritmo [[Secure Hash Algorithm|SHA1]] viene distribuito agli altri client per verifica mediante le reti (come il [[Web]]).
 
=== File torrent ===
Grazie a questo sistema, ogni nodo contribuisce inevitabilmente alla diffusione del file. Maggiore è l'ampiezza di banda su quel nodo, maggiori sono le probabilità che il file venga diffuso verso altri nodi. Questo metodo ha anche il pregio di ridurre l'impatto della cosiddetta '''"leech resistance"''' (in italiano ''"resistenza della sanguisuga"''), condizione che si manifesta nel momento in cui sulla rete sono presenti molti utenti che desiderano scaricare file più velocemente possibile, per poi sconnettersi appena terminato, senza consentire agli altri il prelievo.
{{vedi anche|Torrent (file)}}
 
Per poter usufruire del sistema è quindi necessario prima di tutto prelevare un file caratterizzato dall'estensione <kbd>.torrent</kbd> di ridotte dimensioni (poche decine di [[Kilobyte|KB]]). Questo file svolge la funzione di indice in quanto contiene la descrizione di tutti i pacchetti in cui è stato suddiviso il documento o file originale e le chiavi hash che garantiscono l'integrità dei vari pezzi. Tecnicamente altro non è che un file statico contenente informazioni, codificate mediante un algoritmo di ''[[hashing]]'', che descrivono i file da prelevare e/o da trasferire. Un qualsiasi ''[[client]]'' BitTorrent, oltre a leggere i file torrent e compiere le operazioni possibili, è anche in grado di generare i file torrent.
Nel momento in cui viene inviata una richiesta di [[download]], BitTorrent non sempre inizia subito il prelievo. Per iniziare il processo di distribuzione, BitTorrent ha bisogno di trovare in rete almeno una copia completa di tutti i frammenti del file originale. Questa copia online, detta file '''seme''', può essere ospitata su qualsiasi computer, purché collegato in banda larga. È quindi necessario che ci sia un numero sufficiente di utenti connessi, perché se ce ne sono pochi è possibile condividere solo alcune parti del file. Questo sistema ha l'effetto di incrementare la velocità di [[download]] nel momento in cui sono connessi molti utenti che stanno scaricando e/o prelevando file.
 
==== Motori di ricerca torrent ====
I '''"[[peer]]"''' che possiedono il file completo, chiamati '''semi''' ('''"seed"''') fanno in modo di completare il [[download]] sul personal computer dell'utente solo nel momento in cui hanno completato la copia del file stesso verso altri '''"[[peer]]"'''.
Per trovare file torrent esistono [[motore di ricerca|motori di ricerca]] appositi che indicizzano solo file torrent.
 
===Lo scambioTracker forzato===
{{vedi anche|BitTorrent tracker}}
Quando un utente decide di scaricare un file, cliccando sul file torrent che ha visto su un sito, il programma chiama il tracker, si fa indicare dove trovare un frammento, e appena lo ha scaricato lo condivide immediatamente con gli altri utenti in rete. Il balletto di questi scambi è coordinato per privilegiare il transito dei pezzi più rari, assicurando la propagazione equilibrata del seed originario.
 
In aggiunta alle informazioni sui dati da scaricare, i file torrent contengono l'indirizzo [[URL]] di uno o più '''''tracker''''' ('''server traccia'''), utilizzati per localizzare le sorgenti che posseggono il file o parte di esso. Il '''''tracker''''' si occupa di coordinare i rapporti fra utenti richiedenti il file e quelli che lo offrono. Solitamente i siti ''tracker'' forniscono anche delle statistiche sul numero di trasferimenti, il numero di nodi che hanno completato la copia del file e il numero di nodi che ne posseggono una copia parziale.
===Massima efficacia===
In questo turbinio di transazioni elettroniche si sfrutta al meglio la capacità teorica massima del segmento di Rete a cui si è collegati. L'utente finale vede solo un file che viene scaricato velocemente, utilizzando buona parte della propria connessione a banda larga.
 
==Il= protocolloWeb diseed BitTorrent===
Il Web seeding è la capacità del client BitTorrent di scaricare parti di torrent da una fonte HTTP, oltre che dallo ''Swarm''. Il vantaggio di questa caratteristica è che si può usare un sito web per distribuire un torrent rendendo disponibili i file per lo scaricamento da questo stesso server web. Utilizzando un Web seed è dunque possibile pubblicare i file di un torrent senza l'obbligo di avere almeno un ''client seed'' nella rete: non si ha dunque l'obbligo di avere un ''releaser'' iniziale in quanto questo compito è svolto da un sito web. Questa tecnica permette di mantenere sempre alte le velocità di scaricamento dei file: quando una release è poco diffusa il trasferimento usa principalmente l'HTTP, quando il file è molto richiesto il carico sul server web viene alleggerito dal seeding effettuato dai singoli ''peer''.
BitTorrent utilizza un protocollo nuovo ai sistemi P2P. La sua caratteristica principale è la facile estensibilità, segue il limitato consumo di banda. Il protocollo si basa su un algoritmo di codifica detto Bencode, utilizzato per le comunicazioni [[client]]/[[server]] e client/client.
 
== Nodi ==
===Bencode e il metainfo===
I ''nodi'' della rete BitTorrent sono costituiti dagli utenti che condividono tra loro i file.
Bencode è una codifica derivata da [[XML]], sebbene la sua sintassi sia completamente diversa dal markup estensibile. Bencode ha infatti in comune la scalabilità, l'inclusione e l'estensibilità completa di un documento XML, risparmiando caratteri ([[byte]] in trasmissione) per codificare le informazioni.
 
===''Seed''===
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.
I '''''seed''''' (in italiano ''semi'') o '''''seeder''''' sono quei nodi della rete costituiti da coloro che hanno già scaricato il file (o i file) associato al ''.torrent'' e ora lo stanno solo inviando ad altri. Questa fase di solo invio (caricamento) prende il nome di ''seeding'' ed è la fase in cui si trova il file dopo che è stato scaricato. Il primo ''seed'' di un torrent è il ''releaser'' che trasmette parti ai ''peer'' fino a quando almeno uno di loro completa lo scaricamento del torrent, diventando a sua volta un seed.
Un dizionario e una lista possono contenere un numero infinito di elementi di natura qualsiasi, mentre intero e stringa non possono contenere altri elementi.
 
=== Peer ===
*'''Codifica della stringa'''
I '''peer''' sono nodi che non sono ancora in possesso del file completo e fungono contemporaneamente sia da [[client]] rispetto ai seed, sia da [[server]] verso gli altri peer. Quindi i peer, oltre a ricevere e salvare durante il download parti di file, inviano le parti di cui sono già in possesso ad altri peer.
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 tipo particolare di peer sono i cosiddetti '''''peer'' locali''', ovvero i ''peer'' che condividono lo stesso torrent mediante una [[Local Area Network|rete LAN]]. In molti client è possibile abilitare una funzione di ricerca dei peer locali in modo da connettersi a loro più velocemente.
*'''Codifica dell'intero'''
Un intero Y viene codificato come ''iYe''
Esempi:
8 => i8e
765 => i765e
 
====''Leecher''====
*'''Codifica del dizionario'''
Il rapporto tra dati inviati e scaricati è detto ''share ratio'', cioè ''"rapporto di condivisione"''. Coloro che inviano solo pochi dati rispetto a quanti ne scaricano, quindi che hanno un pessimo share ratio, vengono detti [[Leecher (informatica)|leecher]], ovvero ''sanguisughe''. Questo comportamento è altamente disapprovato dalla comunità di BitTorrent in quanto l'intero protocollo si basa sulla condivisione: chi scarica un file è in grado di farlo solo grazie ai ''seed'' e/o ai ''peer'' che gli inviano i dati di cui necessita, se quindi per assurdo tutti gli utenti si comportassero da ''leecher'' si arriverebbe alla "morte" del sistema, ossia non si riuscirebbe a scaricare più nulla. Per questo motivo vengono utilizzate delle contromisure contro i ''[[Leecher (informatica)|leecher]]'', come per esempio privilegiare i ''peer'' con elevato share ratio che otterranno velocità di scaricamento più elevate, fino al [[Ban (Internet)|ban]] da un ''tracker''.
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
 
=== Swarm ===
{
Con "''swarm''" (in italiano ''sciame'') s'intende il numero complessivo di ''seed'' e di ''peer'' che condividono lo stesso file torrent. Questo valore indica però il numero di fonti ''totali'', non quelle effettivamente connesse al proprio client.
filename => miofile.txt
size=> 76500
attributes => {
readonly => 1
hidden => 0
}
}
equivale a
d8:filename11:miofile.txt4:sizei76500e10:attributesd8:readonlyi1e6:hiddeni0eee
 
== Client ==
*'''Codifica della lista'''
[[File:Azureus2304 linux.png|thumb|upright=1.6|Azureus 2.3.0.4 sotto GNU/Linux]]
Una lista inizia con il carattere ''l'' e termina col carattere ''e''. Gli elementi sono disposti nel loro ordine, ciascuno nella rispettiva codifica.
 
Con '''''client''''' (in italiano ''cliente'') nel linguaggio informatico si intende una componente, [[hardware]] o [[software]], che accede ai servizi o alle risorse di un altro componente detto [[server]]. Quindi un computer collegato ad un server tramite una rete informatica funge da apparato hardware e come tale è detto per l'appunto '''''client'''''.
Esempio
 
Un '''''Client BitTorrent''''' si occupa di accedere all'omonima rete ed effettuare lo scaricamento/caricamento da e verso tutti i nodi ad esso collegati. Il client è quindi lo strumento fondamentale che permette lo scambio dei dati.<br />Il primo client BitTorrent fu creato da Cohen basandosi su quella che lui definisce "Golden Rule": più velocemente un utente realizza un caricamento, più velocemente potrà scaricare.<ref name="SCHIESEL">{{Cita web|url=https://www.nytimes.com/2004/02/12/technology/circuits/12shar.html?ex=1391922000&en=da75cefbee224928&ei=5007&partner=USERLAND|titolo=File Sharing's New Face|cognome=Schiesel|nome=Seth|editore=The New York Times Company|accesso=5 ottobre 2008|dataarchivio=4 ottobre 2008|urlarchivio=https://web.archive.org/web/20081004171613/http://www.nytimes.com/2004/02/12/technology/circuits/12shar.html?ex=1391922000&en=da75cefbee224928&ei=5007&partner=USERLAND|urlmorto=no}}</ref> Questo client porta lo stesso nome del protocollo. In seguito sono nati altri numerosissimi client che si adattano alle esigenze dei più svariati utenti.
{
foo
bar
spam
{
ciao => mondo
num => 5
}
}
equivale a
l3:foo3:bar4:spamd4:ciao5:mondo3:numi5eee
 
=== Lista dei maggiori Client ===
===Il file di meta-informazioni===
{{div col|cols=3}}
Il file torrent, come già visto, contiene le informazioni necessarie e sufficienti per identificare e scaricare un file dalla Rete in tutta sicurezza. Il file torrent è un file di testo che contiene la codifica in Bencode di un unico grande dizionario, il quale contiene a sua volta i dati, sotto forma di dizionari, che identificano il torrent. I seguenti elementi fanno parte del protocollo standard e comprendono le ultime estensioni: (quelli in '''grassetto''' sono richiesti dal protocollo standard)
* ABC
* [[Acquisition]]
* [[BitComet]]
* [[BitLord]]
* [[BitSpirit]]
* [[BitTyrant]]
* BitTornado
* [[BitTorrent (software)|BitTorrent]]
* [[Brave (browser)|Brave]]
* [[Burst!]]
* [[Deluge]]
* [[FrostWire]]
* [[Halite Client]]
* [[KTorrent]]
* [[LimeWire]]
* [[Lphant]]
* [[Mophant]]
* [[Opera (browser)|Opera]]
* [[qBittorrent]]
* [[QTorrent]]
* [[rTorrent]]
* [[Shareaza]]
* [[SharkTorrent]]
* [[Tixati]]
* [[Tomato Torrent]]
* [[TornTV]]
* [[Transmission]]
* [[Tribler]]
* [[Turbo Torrent]]
* [[µTorrent]]
* [[Vuze]]
* [[XTorrent]]
{{div col end}}
 
== Dati tecnici ==
*'''announce'''(stringa): indirizzo [[URL]] del tracker codificato come stringa [[ASCII]]
BitTorrent utilizza un protocollo nuovo rispetto ad altri sistemi P2P. La sua caratteristica principale è la facile estensibilità, segue il limitato consumo di banda. Il protocollo si basa su un algoritmo di codifica detto Bencode, utilizzato per le comunicazioni [[client]]/[[server]] e client/client.
*''announce-list''(lista): estensione del protocollo verso il Multitracker. Il dizionario ''announce'' è comunque richiesto per retrocompatibilità
*''creation date''(intero): data di creazione codificata come [[timestamp Unix]]
*''comment''(stringa): un commento al Torrent codificato come stringa ASCII
*''created by''(stringa): programma che ha generato il Torrent
*'''info'''(dizionario): dizionario principale che descrive il contenuto del Torrent.
I suoi elementi possono variare se il Torrent è composto da uno o da più file
In caso di file singolo:
*'''length'''(intero): dimensione del file in byte
*''md5sum''(stringa): fingerprint [[MD5]] del file per migliore identificazione
*'''name'''(stringa): il nome del file in formato ASCII (i nomi UTF-8 e Unicode generano problemi di codifica)
In caso di archivio con più file:
*'''files'''(lista): la lista dei file contenuti nel Torrent
*(dizionario): ogni file è rappresentato da un dizionario con la seguente struttura:
*'''length'''(intero): dimensione del file in byte
*''md5sum''(stringa): fingerprint [[MD5]] del file per migliore identificazione
*'''path'''(lista): lista di stringhe che permette di ricostruire il percorso del file prendendo gli elementi del loro ordine
*(stringa): l'ultimo elemento rappresenta nome e estensione del file (esempio: "Dir1", "Dir2", "File.ext" rappresenta Dir1/Dir2/File.ext)
*'''piece length'''(integer): lunghezza in byte di ogni parte in cui è suddiviso il(i) file
*'''pieces'''(stringa): stringa che concatena le fingerprint [[SHA1]] del/i file in formato ASCII. Se in fase di creazione la stringa non ha lunghezza multipla di 20, essa viene completata con zeri.
<!-- Se qualcuno mi da una mano a formattare questo schema come struttura dati gli sarò grato -->
 
I seguenti paragrafi trattano, nell'ordine:
===Protocollo client/server - Announce e l'ottenimento dei peer===
# la codifica Bencode, utilizzata nei file torrent;
Un client che intende scaricare un torrent, una volta ottenuto il file di meta-informazioni, deve contattare il tracker tramite il protocollo [[HTTP]] con una richiesta GET. Esso fornirà al tracker i dati richiesti tramite la Query String, e riceverà in risposta un dizionario Bencode contenente informazioni sul tracker e gli [[indirizzo IP|indirizzi IP]] dei client connessi.
# la struttura vera e propria del file torrent;
# il protocollo client/server;
# il sistema Scrape.
 
=== La codifica Bencode ===
{{vedi anche|Bencode}}
 
La codifica Bencode è quella utilizzata per i file torrent. È stata progettata per avere al tempo stesso la flessibilità dell'[[XML]] e la "leggerezza" necessaria per ridurre al minimo le dimensioni del file torrent (cioè il numero di [[byte]] inviati dal server al client).
 
=== Il file di meta-informazioni ===
{{vedi anche|Torrent (file)}}
 
Il file torrent comprende la lista dei file disponibili e i relativi checksum (per garantire l'integrità delle parti di file che vengono scaricate).
 
=== Protocollo client/server - Announce e l'ottenimento dei peer ===
{{vedi anche|Bencode}}
 
Un client che intende scaricare un torrent, una volta ottenuto il file di meta-informazioni, deve contattare il ''tracker'' tramite il protocollo [[Hypertext Transfer Protocol|HTTP]] con una richiesta GET. Esso fornirà al tracker i dati richiesti tramite la Query String, e riceverà in risposta un dizionario Bencode contenente informazioni sul tracker e gli [[indirizzo IP|indirizzi IP]] dei client connessi.
 
Questi sono i parametri che devono essere inviati al tracker (in '''grassetto''' quelli richiesti dal protocollo standard):
* '''info_hash''': hash SHA1 del dizionario ''info'' codificato in Bencode, in formato stringa codificata secondo le convenzioni URL
* '''peer_id''': una stringa di 20 caratteri che permette di identificare in maniera quasi-univoca l'utente sul ''tracker''
* '''port''': numero di [[porta (software)]] sulla quale il client è in ascolto. Le porte tipiche sono nel range 6881-6900.
* '''uploaded''': bytes inviati agli altri client dall'inizio della sessione, codificati in ASCII base-10
* '''downloaded''': bytes scaricati dagli altri client dall'inizio della sessione, codificati in ASCII base-10
* '''left''': bytes rimanenti al completamento del file, codificati in ASCII base-10. Il valore 0 indica un ''seeder''
* ''compact'': indica al tracker di utilizzare il ''Compact Announce'', per l'elenco dei peer. Si veda l'elemento ''peers'' della risposta
* '''event''': può assumere i tre seguenti valori: "started", "stopped", "completed". Il primo viene inviato a inizio sessione e indica al ''tracker'' che si sta iniziando una nuova sessione. Il secondo chiude la connessione con il tracker e chiede di essere rimosso dalla lista dei peer. L'ultimo comunica al tracker il completamento del scaricamento e il passaggio allo status di seeder.
* ''ip'': [[indirizzo IP]] da comunicare agli altri ''peer''. Solitamente utilizzato se si è dietro [[Network address translation|NAT]]/[[router]]
* ''numwant'': numero di fonti massimo che il tracker deve comunicare
* ''key'': stringa [[random]]izzata per una migliore identificazione univoca del client
* ''trackerid'': se il tracker ha comunicato in precedenza un tracker id, esso va inviato qui
 
Announce risponde con una stringa ([[MIME]] [[text/plain]]). Le eventuali condizioni di errore '''non''' possono essere comunicate con i [[Hypertext Transfer Protocol]].
*'''info_hash''': hash SHA1 del dizionario ''info'' codificato in Bencode, in formato stringa codificata secondo le convenzioni URL
*'''peer_id''': una stringa di 20 caratteri che permette di identificare in maniera quasi-univoca l'utente sul tracker
*'''port''': numero di porta sulla quale il client è in ascolto. Le porte tipiche sono nel range 6881-6900.
*'''uploaded''': bytes inviati agli altri client dall'inizio della sessione, codificati in ASCII base-10
*'''downloaded''': bytes scaricati dagli altri client dall'inizio della sessione, codificati in ASCII base-10
*'''left''': bytes rimanenti al completamento del file, codificati in ASCII base-10. Il valore 0 indica un seeder
*''compact'': indica al tracker di utilizzare il ''Compact Announce'', per l'elenco dei peer. Si veda l'elemento ''peers'' della risposta
*'''event''': può assumere i tre seguenti valori: "started", "stopped", "completed". Il primo viene inviato a inizio sessione e indica al tracker che si sta iniziando una nuova sessione. Il secondo chiude la connessione con il tracker e chiede di essere rimosso dalla lista dei peer. L'ultimo comunica al tracker il completamento del download e il passaggio allo status di seeder.
*''ip'': indirizzo IP da comunicare agli altri peer. Solitamente utilizzato se si è dietro [[NAT]]/[[router]]
*''numwant'': numero di fonti massimo che il tracker deve comunicare
*''key'': stringa [[randomizzata]] per una migliore identificazione univoca del client
*''trackerid'': se il tracker ha comunicato in precedenza un tracker id, esso va inviato qui
 
Announce risponde con una stringa ([[MIME]] [[text/plain]]). Le eventuali condizioni di errore '''non''' possono essere comunicate con i [[HTTP|codici di stato HTTP]]. La stringa rappresenta un dizionario con i seguenti elementi:
* '''''failure reason'''''(stringa): se presente, rappresenta la condizione di errore in formato ''[[human-readable]]''. In presenza di ''failure reason'' non devono essere presenti ulteriori elementi
* ''warning message''(stringa): rappresenta una condizione di allerta in formato ''human-readable''. L'elaborazione della risposta di Announce non viene interrotta e all'utente viene mostrato un messaggio descrittivo
* ''min interval''(intero): tempo minimo in secondi che deve trascorrere tra due richieste Announce, pena il rifiuto da parte del server
* ''interval''(intero): tempo in secondi da raccomandare al client per gli intervalli tra gli aggiornamenti Announce, al fine di non sovraccaricare il server.
Deve essere compreso tra il valore di ''min interval'' e il [[Time out (informatica)|time-out]] per la disconnessione forzata dei peer morti
* ''tracker id''(stringa): una stringa che identifichi univocamente il tracker.
* ''complete''(intero): seeder attualmente connessi (utile se il numero di peer connessi supera di molto il limite di risposta)
* ''incomplete''(intero): ''leecher'' attualmente connessi (utile se il numero di peer connessi supera di molto il limite di risposta)
 
Se il client utilizza il ''Compact Announce''
*'''failure reason'''(stringa): se presente, rappresenta la condizione di errore in formato [[human-readable]]. In presenza di ''failure reason'' non devono essere presenti ulteriori elementi
* '''peers'''(stringa): ogni peer occupa 6 byte in questa stringa. I primi 4 rappresentano l'indirizzo IP in formato numerico, e gli altri 2 la porta. I peer sono concatenati tra di loro in ordine di rete.
*''warning message''(stringa): rappresenta una condizione di allerta in formato human-readable. L'elaborazione della risposta di Announce non viene interrotta e all'utente viene mostrato un messaggio descrittivo
 
*''min interval''(intero): tempo minimo in secondi che deve trascorrere tra due richieste Announce, pena il rifiuto da parte del server
Se il client non utilizza il ''Compact Announce''
*''interval''(intero): tempo in secondi da raccomandare al client per gli intervalli tra gli aggiornamenti Announce, al fine di non sovraccaricare il server.
* '''peers'''(lista): lista di dizionari, ciascuno dei quali contiene informazioni sul peer
Deve essere compreso tra il valore di ''min interval'' e il [[time-out]] per la sconnessione forzata dei peer morti
** (dizionario): contiene i dati necessari a identificare e contattare un peer
*''tracker id''(stringa): una stringa che identifichi univocamente il tracker.
*** ''complete'peer id'''(interostringa): seederil attualmentevalore connessiarbitrario (utile seche il numero di peer connessiha superafornito diin molto il limitefase di risposta)connessione
*** '''ip'''(stringa): l'[[indirizzo IP]] in formato [[IPv4]], [[IPv6]] o [[Domain Name System|DNS]]
*''incomplete''(intero): leecher attualmente connessi (utile se il numero di peer connessi supera di molto il limite di risposta)
*** '''port'''(intero): numero di porta usato dal peer
Se il client utilizza il ''Compact Announce''
*'''peers'''(stringa): ogni peer occupa 6 byte in questa stringa. I primi 4 rappresentano l'indirizzo IP in formato numerico, e gli altri 2 la porta.
I peer sono concatenati tra di loro in ordine di rete.
Se il client non utilizza il ''Compact Announce''
*'''peers'''(lista): lista di dizionari, ciascuno dei quali contiene informazioni sul peer
*(dizionario): contiene i dati necessari a identificare e contattare un peer
*'''peer id'''(stringa): il valore arbitrario che il peer ha fornito in fase di connessione
*'''ip'''(stringa): l'[[indirizzo IP]] in formato [[IPv4]], [[IPv6]] o [[DNS]]
*'''port'''(intero): numero di porta usato dal peer
 
Per convenzione il numero massimo di peer forniti durante un'interrogazione di Announce non dovrebbe superare i 50.
 
=== Protocollo client/server - Scrape e il conteggio dei peer ===
{{vedi anche|Bencode}}
Un tracker può ospitare al proprio indirizzo uno script denominato ''scrape'' che permette il solo conteggio dei peer connessi al tracker per uno o più Torrent registrati.
 
Solo se l'indirizzo del tracker termina con ''announce'', eventualmente seguito da un'estensione, è possibile utilizzare la convenzione scrape. Senza specificare altri parametri, sarà il client ad operare una sostituzione testuale nell'indirizzo URL del tracker in modo da ottenere l'URL Scrape.
Un tracker può ospitare al proprio indirizzo uno script denominato ''scrape'' che permette il solo conteggio dei peer connessi al ''tracker'' per uno o più Torrent registrati.
Solo se l'indirizzo del tracker termina con ''announce'', eventualmente seguito da un'estensione, è possibile utilizzare la convenzione ''scrape''. Senza specificare altri parametri, sarà il client ad operare una sostituzione testuale nell'indirizzo URL del tracker in modo da ottenere l'URL Scrape.
Ad esempio:
* http://www.example.com/announce → http://www.example.com/scrape
<nowiki>
* http://www.trackerexample.com/x/announce.php => http://www.trackerexample.com/x/scrape.php
* {{Collegamento interrotto|1=http://www90.tracker60.com/x90.160/announce.phpaspx =>}} → {{Collegamento interrotto|1=http://www90.tracker60.com/x90.160/scrape.phpaspx }}
* http://www.example.com/Announce → RISULTATO NON PREVEDIBILE (Scrape o scrape?)
http://90.60.90.160/announce.aspx => http://90.60.90.160/scrape.aspx
* http://www.trackerexample.com:6969/Announceannounce => RISULTATO NON PREVEDIBILE (Scrape o http://www.example.com:6969/scrape?)
* http://www.trackerexample.com:6969/announcetrkscript => http://www.tracker.com:6969/scrapeNON APPLICABILE
* http://www.example.com/announce/announce.php → RISULTATO NON PREVEDIBILE (solo l'ultimo announce va sostituito, ma alcuni client potrebbero operare una sostituzione "cerca *& sostituisci")
http://www.tracker.com/trkscript => NON APPLICABILE
* http://www.example.com/announce?x=3434 → http://www.example.com/scrape?x=3434
http://www.tracker.com/announce/announce.php => RISULTATO NON PREVEDIBILE (solo l'ultimo announce va sostituito, ma alcuni client potrebbero operare una sostituzione "cerca & sostituisci")
 
http://www.tracker.com/announce?x=3434 => http://www.tracker.com/scrape?x=3434
</nowiki>
Scrape viene contattato con richiesta HTTP GET: può essere specificato il parametro '''info_hash''' per identificare il Torrent di interesse, o tale parametro può essere omesso per ottenere l'intera lista di Torrent registrati al tracker. La seconda opzione richiede molta più banda della prima.
 
Il server restituisce una stringa ([[MIME]] [[text/plain]]) che rappresenta un dizionario con i seguenti elementi:
* '''files'''(dizionario): elenca tutti i Torrent in base al loro ''info hash''
 
** '''files[info-hash]'''(dizionario): elencarappresenta tuttiun isingolo Torrent in base al loro ''info hash''
*** '''complete'''(intero): seeder attualmente connessi al tracker
*'''[info-hash]'''(dizionario): rappresenta un singolo Torrent
*** *'''completeincomplete'''(intero): seederleechers attualmente connessi al tracker
*** '''downloaded'''(intero): numero di volte che il file è stato completato (event=completed)
*'''incomplete'''(intero): leechers attualmente connessi al tracker
*** ''name''(stringa): nome del Torrent
*'''downloaded'''(intero): numero di volte che il file è stato completato (event=completed)
*''name''(stringa): nome del Torrent
 
Se il parametro di richiesta ''info_hash'' è specificato, il dizionario ''files'' conterrà un solo elemento.
 
==BitTorrent a confrontoConfronto con altri sistemi peer-to-peer ==
Tra BitTorrent e i sistemi [[peer-to-peer]] più conosciuti vi sono due principali differenze. Prima di tutto, BitTorrent non ha la ricerca dei file per nome: l'utente deve prima prelevare da un sito web apposito (ad esempio annunciato su un forum di discussione o trovato con una ricerca sul web a partire da un [[motore di ricerca]]) un file <kbd>.torrent</kbd>. Inoltre, BitTorrent non tenta affatto di nascondere l'ultimo host responsabile della disponibilità di un dato file: una persona che desidera rendere disponibile un file deve prima eseguire un server traccia su uno specifico host o serie di host e distribuire l'indirizzo della traccia o gli indirizzi di traccia in un file <kbd>.torrent</kbd>. Uno dei notevoli svantaggi di BitTorrent rispetto agli altri sistemi di peer-to-peer è che i file muoiono con facilità perché è un programma pensato più che altro per diffondere file piuttosto che per condividerli.
[[Immagine:Torrentcomp small.gif|f|frame|right|Il paradigma peer-2-peer]]
Il metodo utilizzato da BitTorrent per distribuire file in parallelo a un gran numero di utenti, assomiglia a quello che utilizza la rete [[eDonkey]]; purtroppo ogni nodo di quest'ultima di solito condivide e scarica una grande quantità di file senza nessun bilanciamento agli altri nodi presenti.
 
Mentre è possibile eseguire semplicemente un server traccia su un host immune dal pericolo di azioni legali per violazioni del copyright, questo protocollo scarica, attraverso il "'''seeding'''" ("[[semina]]"), la responsabilità su altri protocolli. Con un peer-to-peer tradizionale, invece, per la sua natura intrinsecamente più individuabile, è abbastanza facile costringere alla chiusura un [[Internet Service Provider|fornitore di servizi internet]] nel momento in cui vengono identificati utenti che scaricano file protetti da [[copyright]].
Invece, gli scambi di file mediante BitTorrent riescono sempre a essere molto veloci per tutti i client coinvolti, in quanto tutti i nodi di un gruppo sono concentrati sul trasferimento di un singolo file o di un gruppo di file. Inoltre lo standard del protocollo eDonkey2000 causa purtroppo una bassa '''"leech resistance"''': non c'è alcun guadagno concreto nel fornire tanta banda in upload, ma solo un rapporto upload/download svantaggioso nel caso in cui la propria banda in upload sia inferiore ai 10 kB/s. In altre parole, chi non ha la banda larga e dispone di connessioni [[PSTN]] come una comune 56k, riceverà relativamente poca velocità o sensibili differenze nell'usare BitTorrent. Chi invece ha una connessione a banda larga, apprezzerà subito una sensibile differenza nella velocità di download e di completamento dei file usando questo innovativo sistema peer-to-peer.
 
BitTorrent sembra sempre di più essere l'unico protocollo P2P utilizzabile per scopi legali: è molto diffuso per diffondere le distribuzioni in ambiente [[GNU/Linux]]. A seguito del suo successo, il creatore di BitTorrent, [[Bram Cohen]], ha sviluppato un sistema per distribuire [[patch (informatica)|patch]], altri contenuti e [[plugin (informatica)|plug-in]] per [[videogioco|videogiochi]] on line.
Tra BitTorrent e i sistemi [[peer-to-peer]] più conosciuti vi sono due principali differenze. Prima di tutto, BitTorrent non ha la ricerca dei file per nome: l'utente deve prima prelevare da un sito web apposito (ad esempio annunciato su un forum di discussione o trovato con una ricerca sul web) un file <TT>.torrent</TT>. Inoltre, BitTorrent non tenta affatto di nascondere l'ultimo host responsabile della disponibilità di un dato file: una persona che desidera rendere disponibile un file deve prima eseguire una traccia su di uno specifico host o serie di host e distribuire l'indirizzo di traccia o gli indirizzi di traccia in un file <TT>.torrent</TT>. Uno dei grossi svantaggi di BitTorrent rispetto agli altri sistemi di peer-to-peer, è che i file muoiono con facilità perché è un programma pensato più che altro per diffondere file piuttosto che per condividerli.
 
=== Rispetto ad eMule ===
Mentre è possibile operare semplicemente una traccia su di un server immune dal pericolo di azioni legali per violazioni del copyright, questo protocollo scarica, attraverso il '''"seeding'''" ("inseminazione"), la responsabilità su altri protocolli. Con un peer-to-peer tradizionale, invece, per la sua natura intrinsecamente più individuabile, è abbastanza facile costringere alla chiusura un [[Internet Service Provider]] nel momento in cui vengono identificati utenti che scaricano file protetti da [[copyright]].
Il metodo utilizzato da BitTorrent per distribuire file somiglia a quello utilizzato dalla reti [[eDonkey]] e [[Kademlia|Kad]] ma, oltre alle analogie, ci sono anche molte differenze:
# In BitTorrent gli scambi sono sempre molto veloci per tutti i partecipanti in quanto tutti i nodi si scambiano parti di file a vicenda senza distinzioni di sorta.
# Con eMule ogni nodo di solito condivide e scarica una grande quantità di dati senza alcun bilanciamento fra i nodi presenti. La causa di ciò sono il ''sistema dei crediti'' e il ''sistema delle code'', assenti in BitTorrent.
# Lo standard del protocollo eDonkey/Kad causa una bassa "'''leech resistance'''": non c'è l'obbligo costante di caricare come in BitTorrent e, finché non si viene comunque identificati dai sistemi anti-leech dei clients, si può scaricare senza condividere più di tanto usando le comunque disoneste ''leech mod''.
# In BitTorrent l'assenza dei ''crediti'' comporta subito, per chi ha una connessione a banda larga, una buona velocità nello scaricamento senza dover prima attendere il conseguimento dei crediti verso gli altri utenti.
# I file su BitTorrent però sono spesso destinati a ''morire'' prima dei file condivisi di [[eMule]].
 
== BitTorrent nella società ==
BitTorrent sembra sempre di più essere l'unico protocollo P2P utilizzabile per scopi legali: è molto diffuso per la distribuire di distribuzioni [[GNU/Linux]]. A seguito del suo successo, il creatore di BitTorrent, [[Bram Cohen]], ha sviluppato un sistema per distribuire [[patch (informatica)|patch]] e altri contenuti e [[plug-in]] per [[videogioco|videogiochi]] on line.
Un numero crescente di persone e organizzazioni utilizza BitTorrent come mezzo di condivisione dei propri lavori. Già nel 2011, BitTorrent possedeva un numero di utenti (circa 100 milioni) maggiore di quello di [[Netflix]] e [[Hulu]] messi assieme<ref>{{Cita news|lingua=en|url=https://www.fastcompany.com/1714001/bittorrent-has-more-users-netflix-and-hulu-combined-and-doubled|titolo=BitTorrent Has More Users Than Netflix and Hulu Combined–and Doubled|pubblicazione=Fast Company|data=4 gennaio 2011|accesso=6 giugno 2018|dataarchivio=14 maggio 2018|urlarchivio=https://web.archive.org/web/20180514220835/https://www.fastcompany.com/1714001/bittorrent-has-more-users-netflix-and-hulu-combined-and-doubled|urlmorto=no}}</ref>. Nel 2015, [[AT&T]] ha stimato che BitTorrent rappresenta circa il 20% di tutto il traffico delle connessioni a banda larga<ref>{{Cita news|lingua=en|url=https://thestack.com/world/2015/02/19/att-patents-system-to-fast-lane-bittorrent-traffic/|titolo=AT&T patents system to 'fast-lane' BitTorrent traffic {{!}} The Stack|pubblicazione=The Stack|data=19 febbraio 2015|accesso=6 giugno 2018|dataarchivio=13 settembre 2016|urlarchivio=https://web.archive.org/web/20160913023132/https://thestack.com/world/2015/02/19/att-patents-system-to-fast-lane-bittorrent-traffic/|urlmorto=no}}</ref>.
 
=== Film, video, musica ===
==Diritto d'autore==
* [[Sub Pop Records]] rilascia ogni anno tracce e videoclip sul sito BitTorrent.Inc.<ref>{{Cita web|url=http://www.bittorrent.com/users/subpoprecords/|titolo=Download content from SubPopRecords at BitTorrent|data=14 gennaio 2007|accesso=6 giugno 2018|dataarchivio=14 gennaio 2007|urlarchivio=https://web.archive.org/web/20070114140652/http://www.bittorrent.com/users/subpoprecords/|urlmorto=sì}}</ref>. I [[Babyshambles]] (gruppo [[indie rock]] [[Inghilterra|inglese]]) hanno sfruttato il protocollo BitTorrent per distribuire migliaia di anteprime e riprese di concerti. Anche la famosa band dei [[Nine Inch Nails]] ha pubblicato diversi album con BitTorrent.<ref>{{Cita news|lingua=en|url=https://torrentfreak.com/nin-launches-bittorrent-tracker-for-new-release-090320/|titolo=NIN Launches BitTorrent Tracker for New Release - TorrentFreak|pubblicazione=TorrentFreak|data=20 marzo 2009|accesso=6 giugno 2018|dataarchivio=15 settembre 2018|urlarchivio=https://web.archive.org/web/20180915192523/https://torrentfreak.com/nin-launches-bittorrent-tracker-for-new-release-090320/|urlmorto=no}}</ref>
Per la sua natura intrinsecamente trasparente e per il notevole risparmio di banda che procura BitTorrent è probabilmente il protocollo di condivisione dei file più utilizzato per scopi legali, che cioè non violano il diritto d'autore. Esempi di questo tipo di contenuti sono le distribuzioni [[GNU/Linux]] e i [[movie trailer|trailer cinematografici]] di grandi dimensioni. Tuttavia sempre più spesso attraverso BitTorrent passa lo scambio di file musicali, film e software coperti da [[copyright]], andando a sostituire in maniera crescente altri protocolli solitamente usati a questo scopo. A questo riguardo ci sono molte discussioni su chi sia perseguibile e in che termini secondo le leggi vigenti (vedi la voce [[peer-to-peer]] per ulteriori informazioni), ma dato che l'occultamento degli utilizzatori non è uno degli scopi dell'applicazione, di fatto il suo utilizzo potrebbe comportare per l'utente finale rischi maggiori rispetto ad altri programmi simili. È ben noto che BitTorrent fu utilizzato per distribuire copie ad alta qualità del film [[Matrix_Reloaded|The Matrix Reloaded]], pochi giorni dopo che venne proiettato per la prima volta nelle sale.
* [[VODO]] è un servizio che distribuisce film e serie TV via BitTorrent<ref>{{Cita web|url=https://boingboing.net/2009/10/15/vodo-a-filesharing-s.html|titolo=Vodo: a filesharing service for film-makers / Boing Boing|sito=boingboing.net|lingua=en|accesso=6 giugno 2018|dataarchivio=30 aprile 2019|urlarchivio=https://web.archive.org/web/20190430142254/https://boingboing.net/2009/10/15/vodo-a-filesharing-s.html|urlmorto=no}}</ref>.
 
===Il ''caso''Broadcasters Suprnova.org===
* Nel 2008, la [[Canadian Broadcasting Corporation|CBC]] si qualifica come il primo servizio pubblico radiotelevisivo nell'America del Nord a rendere disponibile lo scaricamento con BitTorrent di un intero show (''Canada's Next Great Prime Minister'')<ref>{{Cita web|url=http://www.cbc.ca/nextprimeminister/blog/2008/03/canadas_next_great_prime_minis.html|titolo=Canada's Next Great Prime Minister {{!}} CBC Television: CBC to BitTorrent Canada's Next Great Prime Minister|data=14 giugno 2010|accesso=6 giugno 2018|dataarchivio=14 giugno 2010|urlarchivio=https://web.archive.org/web/20100614220807/http://www.cbc.ca/nextprimeminister/blog/2008/03/canadas_next_great_prime_minis.html|urlmorto=sì}}</ref>.
A circa un anno dall'uscita di BitTorrent, in concomitanza con la sua diffusione su vasta scala, [[Andrej Preston]], conosciuto anche come ''Sloncek'', aprì la prima community BitTorrent su vasta scala, [[Suprnova.org]]. Sul sito era possibile scaricare gratuitamente torrent di ogni genere, e quelli dal contenuto pirata erano persino in bella mostra.
Nel [[2004]] Suprnova.org era primo in classifica su tutti i [[motore di ricerca|motori di ricerca]], riceveva milioni di contatti giornalieri ed era entrato nel mirino di [[RIAA]] e delle case discografiche unite nella lotta alla pirateria. Senza finire in tribunale, già in vista di una sentenza a sfavore del sito, Suprnova.org chiuse spontaneamente i battenti e il proprietario iniziò a lavorare ad un nuovo progetto peer-to-peer basato su BitTorrent.
Tale progetto è [[eXeem]], vittima di numerose polemiche per via dei sorgenti chiusi.
 
=== Videogiochi ===
==Sviluppi recenti==
* [[Blizzard Entertainment]] ha usato BitTorrent (attraverso un client proprietario denominato "Blizzard Downloader") per rilasciare contenuti aggiuntivi e patch per [[Diablo III]], [[StarCraft II]] e [[World of Warcraft]]<ref>{{Cita web|url=https://wow.gamepedia.com/Blizzard_Downloader|titolo=Blizzard Downloader|sito=Wowpedia|lingua=en|accesso=6 giugno 2018|dataarchivio=14 gennaio 2019|urlarchivio=https://web.archive.org/web/20190114210448/https://wow.gamepedia.com/Blizzard_Downloader|urlmorto=no}}</ref>.
* [[Wargaming.net|Wargaming]] pubblica gli aggiornamenti di [[World of Tanks]], [[World of Warships]] e [[World of Warplanes]] con BitTorrent<ref>{{Cita web|url=https://worldoftanks.eu/en/content/guide/general/frequently_asked_questions/#a3a|titolo=Frequently Asked Questions {{!}} Game|sito=World of Tanks|lingua=en|accesso=6 giugno 2018|dataarchivio=28 dicembre 2018|urlarchivio=https://web.archive.org/web/20181228035551/https://worldoftanks.eu/en/content/guide/general/frequently_asked_questions/#a3a|urlmorto=no}}</ref>.
 
=== Governi ===
Il protocollo BitTorrent è ancora in sviluppo, pertanto è possibile acquisire nuove versioni sempre più complete ed efficienti. Una delle più recenti implementazioni è il [[web seeding]], in italiano "inseminazione del web", sistema che abbiamo spiegato all'inizio di questa pagina.
* Il governo Inglese usa BitTorrent per diffondere pubblicamente sul Web dati relativi all'impiego dei soldi provenienti dalle tasse dei cittadini inglesi<ref>{{Cita web|url=https://data.gov.uk/dataset/3266d22c-9d0f-4ebe-b0bc-ea622f858e15/combined-online-information-system|titolo=Combined Online Information System - data.gov.uk|sito=data.gov.uk|lingua=en|accesso=6 giugno 2018|dataarchivio=7 gennaio 2019|urlarchivio=https://web.archive.org/web/20190107203942/https://data.gov.uk/dataset/3266d22c-9d0f-4ebe-b0bc-ea622f858e15/combined-online-information-system|urlmorto=no}}</ref><ref>{{Cita news|lingua=en|url=https://torrentfreak.com/uk-government-uses-bittorrent-to-share-public-spending-data-100604/|titolo=UK Government Uses BitTorrent to Share Public Spending Data - TorrentFreak|pubblicazione=TorrentFreak|data=4 giugno 2010|accesso=6 giugno 2018|dataarchivio=23 giugno 2018|urlarchivio=https://web.archive.org/web/20180623220940/https://torrentfreak.com/uk-government-uses-bittorrent-to-share-public-spending-data-100604/|urlmorto=no}}</ref>.
 
=== Università e Progetti ===
Gli sviluppatori della rete BitTorrent stanno lavorando sodo per ottenere una rete decentralizzata.
* La [[Università statale della Florida|Florida State University]] distribuisce grandi [[dataset]] scientifici ai propri ricercatori con BitTorrent<ref>{{Cita news|lingua=en|url=https://www.techzim.co.zw/2013/01/legitimate-uses-of-bittorrent/|titolo=Legitimate uses of BitTorrent - Techzim|pubblicazione=Techzim|data=29 gennaio 2013|accesso=6 giugno 2018|dataarchivio=17 settembre 2017|urlarchivio=https://web.archive.org/web/20170917053805/http://www.techzim.co.zw/2013/01/legitimate-uses-of-bittorrent/|urlmorto=no}}</ref>.
Un primo passo è stata l'introduzione del '''DHT''' (''Distributed Hash Table'', ''tabella di Hash distribuita''). Al momento è stata introdotta dal client BitTorrent ufficiale, da [[Azureus]], da [[BitComet]], da [[uTorrent]], da [[KTorrent]] e da [[Tomato Torrent]].
* [[Human Connectome Project]] usa BitTorrent come mezzo di diffusione dei propri studi e ricerche su malattie gravi, quali la [[malattia di Alzheimer]] e la [[schizofrenia]]<ref>{{Cita news|lingua=en|url=https://torrentfreak.com/torrents-help-researchers-worldwide-to-study-babies-brains-170603/|titolo=Torrents Help Researchers Worldwide to Study Babies' Brains - TorrentFreak|pubblicazione=TorrentFreak|data=3 giugno 2017|accesso=6 giugno 2018|dataarchivio=5 gennaio 2018|urlarchivio=https://web.archive.org/web/20180105011741/https://torrentfreak.com/torrents-help-researchers-worldwide-to-study-babies-brains-170603/|urlmorto=no}}</ref>.
 
== Controversie ==
Per fronteggiare l'attacco legale contro i siti BitTorrent, lanciato prima dalla [[RIAA]] e dopo dalla [[MPAA]], i webmaster stanno lavorando per ottenere un vero motore di ricerca per file.torrent (altro punto debole della rete).
Per la sua natura intrinsecamente trasparente e per il notevole risparmio di banda che procura BitTorrent è probabilmente il protocollo di condivisione dei file più utilizzato per scopi legali, che cioè non violano il diritto d'autore. Esempi di questo tipo di contenuti sono le distribuzioni [[GNU/Linux]] e i [[movie trailer|trailer cinematografici]] di grandi dimensioni. Tuttavia sempre più spesso BitTorrent viene utilizzato per lo scambio di file musicali, film e software coperti da [[copyright]]. A questo riguardo ci sono molte discussioni su chi sia perseguibile e in che termini secondo le leggi vigenti (vedi la voce [[peer-to-peer]] per ulteriori informazioni).
 
Dato che l'occultamento degli utilizzatori non è ancora una funzionalità implementata nel diversi client BitTorrent, la privacy dell'utente finale non viene tutelata in alcun modo e, che egli ''scarichi illegalmente'' o meno, può essere soggetto a violazioni della propria privacy da parte di società spia anti-p2p.
Anche in questo caso già sul sito ufficiale di BitTorrent c'è motore di ricerca in "stile" Google ed anche [http://www.defiant.ws Defiant](chiuso) e [http://thepiratebay.org/ PirateBay] stanno seguendo la stessa strategia.
 
Per cercare di risolvere, o almeno mitigare, tale problema è possibile utilizzare:
===DHT (Distributed Hash Table)===
* un [[proxy]] per la connessione del client che ''mascheri'' il vero [[Indirizzo IP|IP]] dell'utente,
* una rete di anonimato, come quella offerta dal programma [[Tor (software di anonimato)|Tor]] (in cui il proxy è comunque incluso), sconsigliata però dai creatori poiché non è stato concepito per un tale sforzo in termini di banda<ref>{{Cita web |url=https://www.torproject.org/docs/faq.html.en#FileSharing |titolo=Tor Project: FAQ |accesso=10 febbraio 2016 |dataarchivio=22 ottobre 2016 |urlarchivio=https://web.archive.org/web/20161022004822/https://www.torproject.org/docs/faq.html.en#FileSharing |urlmorto=no }}</ref>
* una block-list degli [[Indirizzo IP|indirizzi IP]] ritenuti ''malevoli'' da inserire nel client stesso (qualora esso supporti tale funzionalità),
* uno speciale [[firewall]] come [[Peerguardian]] (ora convertito nel progetto [[Peerblock]]).
 
=== Il ''caso'' Finreactor ===
Il '''DHT''' (''[[Distributed Hash Table]]'', ovvero ''Tabella di Hash distribuita'') è forse il primo vero passo per ottenere una rete BitTorrent decentralizzata. Ovviamente siamo ancora lontani dal poterlo affermare, ma sembra che tutti gli sviluppatori BT credano in questa nuova strada.
Nel dicembre 2004, la polizia finlandese ha fatto irruzione nella sede dei server Finreactor, un importante sito BitTorrent.<ref>{{Cita web|url=https://www.theregister.com/2004/12/14/finnish_police_raid_bittorrent_site/|titolo=Finnish police raid BitTorrent site|lingua=en|accesso=2020-06-18|dataarchivio=18 giugno 2020|urlarchivio=https://web.archive.org/web/20200618155055/https://www.theregister.com/2004/12/14/finnish_police_raid_bittorrent_site/|urlmorto=no}}</ref> A sette amministratori di sistema e ad altri 4 dipendenti hanno dovuto pagare danni in valore di centinaia di migliaia di euro. Gli imputati hanno fatto appello alla Corte Suprema finlandese, ma non sono riusciti ad annullare il verdetto.<ref>{{Cita web|url=http://www.helsinkitimes.fi/|titolo=Helsinki Times|sito=Helsinki Times|lingua=en|accesso=2020-06-18|dataarchivio=3 giugno 2009|urlarchivio=https://web.archive.org/web/20090603085112/http://www.helsinkitimes.fi/|urlmorto=no}}</ref> Due imputati sono stati assolti poiché erano minorenni all'epoca, ma sono ritenuti responsabili per le spese legali e il risarcimento in valore di 60.000 euro per la distribuzione illegale di beni protetti da diritto d'autore. Il tribunale ha fissato la loro ammenda al 10% del prezzo al dettaglio dei prodotti distribuiti<ref>{{Cita web|url=https://torrentfreak.com/underage-finnish-bittorrent-admins-fined-60000-each/|titolo=Underage Finnish BitTorrent admins fined $60,000 each * TorrentFreak|sito=TorrentFreak|data=2006-10-26|lingua=en|accesso=2020-06-18|dataarchivio=20 giugno 2020|urlarchivio=https://web.archive.org/web/20200620041026/https://torrentfreak.com/underage-finnish-bittorrent-admins-fined-60000-each/|urlmorto=no}}</ref>
 
=== Hong Kong: azioni individuali ===
È doveroso ricordare che è '''sbagliato''' pensare che il '''DHT''' fornisca già una rete BitTorrent decentralizzata.
Il 24 ottobre 2005, l'utente di BitTorrent Chan Nai-ming (陳乃明),), chiamato il 古惑 天皇 (''Il Maestro dell'astuzia'', sebbene il magistrato lo chiamasse ''"Il Grande Truffatore"'') è stato condannato per violazione del copyright caricando [[Daredevil (film)|Daredevil]], [[Pianeta rosso|Red Planet]] e [[Miss Detective|Miss Congenialità]] a un newsgroup (capitolo 528 della legge di Hong Kong).<ref>{{Cita web|url=http://news.gov.hk/en/category/lawandorder/051024/html/051024en08004.htm|titolo=Peer-to-peer infringer convicted|sito=web.archive.org|data=2007-09-30|accesso=2020-06-18|dataarchivio=30 settembre 2007|urlarchivio=https://web.archive.org/web/20070930031321/http://news.gov.hk/en/category/lawandorder/051024/html/051024en08004.htm|urlmorto=sì}}</ref> Il magistrato ha osservato che le azioni di Chan hanno danneggiato significativamente l'interesse dei detentori del copyright. È stato rilasciato su cauzione per HK $ 5.000, in attesa di un'udienza di condanna, sebbene lo stesso magistrato abbia ammesso la difficoltà nel determinare come dovrebbe essere condannato a causa della mancanza di precedenti. Il 7 novembre 2005 è stato condannato a tre mesi di carcere, ma gli è stata immediatamente concessa la cauzione in attesa di un ricorso.<ref>{{Cita news|lingua=en|nome=Keith|cognome=Bradsher|url=https://www.nytimes.com/2005/11/08/technology/in-hong-kong-a-jail-sentence-for-online-filesharing.html|titolo=In Hong Kong, a Jail Sentence for Online File-Sharing|pubblicazione=The New York Times|data=2005-11-08|accesso=2020-06-18|dataarchivio=20 giugno 2020|urlarchivio=https://web.archive.org/web/20200620072032/https://www.nytimes.com/2005/11/08/technology/in-hong-kong-a-jail-sentence-for-online-filesharing.html|urlmorto=no}}</ref> Il ricorso è stato respinto dal Tribunale di primo grado il 12 dicembre 2006 e Chan è stato immediatamente incarcerato. Il 3 gennaio 2007 è stato rilasciato in attesa di appello alla Corte di appello finale il 9 maggio 2007.
Il '''DHT''' non fa parte del protocollo BitTorrent ed è solo un sistema che aiuta la distribuzione di file e di informazioni quando un tracker è offline.
 
Due casi simili sono quelli di una donna e di un uomo che sono stati arrestati per il caricamento illegale di file Bittorrent nel settembre del 2008 e aprile 2009, rispettivamente.<ref>{{Cita web|url=http://chinaplus.cri.cn/|titolo=China Plus|sito=chinaplus.cri.cn|accesso=2020-06-18|dataarchivio=17 giugno 2020|urlarchivio=https://web.archive.org/web/20200617140353/http://chinaplus.cri.cn/|urlmorto=no}}</ref><ref>{{Cita web|url=http://news.sina.com.hk/cgi-bin/nw/show.cgi/2/1/1/1117305/1.html|titolo=分段上載電影 侵權無業漢被拘 - 新浪網 - 新聞|sito=web.archive.org|data=2009-07-07|accesso=2020-06-18|dataarchivio=7 luglio 2009|urlarchivio=https://web.archive.org/web/20090707200653/http://news.sina.com.hk/cgi-bin/nw/show.cgi/2/1/1/1117305/1.html|urlmorto=sì}}</ref>
Per capire meglio quanto appena detto, supponiamo che 50 utenti partecipino contemporaneamente in un network.
 
=== Il ''caso'' Supernova.org ===
All'inizio tutti i 50 utenti utilizzeranno un grande tracker che farà loro da indice durante il download. Durante il "soggiorno" sul network, ogni client (che supporta il sistema DHT) dei 50 utenti, creerà un indice virtuale che punterà al grande tracker. In questo modo se sto scaricando un file di modeste dimensioni ed il grande tracker cade l'indice virtuale mi consentirà di continuare il download e cercare nuove fonti.
A circa un anno dall'uscita di BitTorrent, in concomitanza con la sua diffusione su vasta scala, [[Andrej Preston]], conosciuto anche come ''Sloncek'', aprì la prima grande community BitTorrent: Supernova.org. Sul sito era possibile scaricare gratuitamente torrent di ogni genere, anche quelli che non rispettavano le leggi sul diritto d'autore.
Anche a causa della sua grossa popolarità, nel [[2004]] Supernova.org era primo in classifica su tutti i [[motore di ricerca|motori di ricerca]] con milioni di contatti giornalieri, il sito entrò nel mirino delle case discografiche unite nella lotta alla pirateria e della [[RIAA]]. Senza finire in tribunale, già in vista di una sentenza a suo sfavore, Supernova.org chiuse spontaneamente i battenti e il proprietario iniziò a lavorare ad un nuovo progetto peer-to-peer basato su BitTorrent. Tale progetto è [[eXeem]], vittima di numerose polemiche per via dei codici sorgenti chiusi.
 
Questo enorme sito è stato riaperto in agosto [[2007]] grazie al supporto del team di [[The Pirate Bay]].
Per il momento il sistema '''DHT''' di [[BitComet]] è compatibile con la versione 4.1.2 di BitTorrent ufficiale, mentre non lo è con [[Azureus]].
Sembra attualmente che il progetto eXeem sia stato abbandonato dal team di sviluppo ufficiale e la sua rete di eXeem al momento non è più funzionante.
 
=== Il ''caso'' The Pirate Bay ===
==Alcuni software client==
{{vedi anche|Processo a The Pirate Bay}}
*[[Azureus]]
*[[ABC (BitTorrent)|ABC (Yet Another BitTorrent Client)]]
*[[BitComet]]
*[[BitTornado]]
*[[KTorrent]]
*[[MLDonkey]]
*[[Shareaza]]
*[[uTorrent|μTorrent]]
 
== Sviluppi recenti ==
==Alcuni software server==
Il protocollo e tutti i client BitTorrent sono in continuo sviluppo. Una delle più recenti implementazioni è il [[#Web seed|web seeding]]. Gli sviluppatori della rete BitTorrent inoltre stanno lavorando sodo per ottenere una rete decentralizzata indipendente dai Tracker, ritenuti un punto debole facilmente sfruttabile da coloro che conducono la lotta al [[p2p]].
*[[BNBT]]
Un primo passo è stata l'introduzione del [[tabella di hash distribuita|DHT]] (''Distributed Hash Table'', "tabella di Hash distribuita") che al momento è stata introdotta nel client BitTorrent ufficiale, su [[Azureus]], su [[Transmission]], su [[BitComet]], su [[Deluge]], su [[μTorrent]], su [[rTorrent]], su [[KTorrent]], su [[Tomato Torrent]] e su [[qBittorrent]].
*[[XBT]]
*[[TorrentTrader]]
*[http://phpmybittorrent.com/ phpMyBitTorrent]
*[[Hypercube (BitTorrent)|Hypercube]]
 
=== DHT (Distributed Hash Table) ===
==Collegamenti esterni==
{{vedi anche|Tabella di hash distribuita}}
*{{en}} [http://www.BitTorrent.com/ Sito ufficiale di BitTorrent]
*{{en}} http://azureus.sourceforge.net/index.php - [[Azureus]] è uno dei più diffusi [[client]] per il protocollo bittorrent
*{{en}} [http://www.nytimes.com/2004/02/12/technology/circuits/12shar.html File Sharing's New Face] - Articolo del [[New York Times]].
*{{en}} [http://f.scarywater.net/ BitTorrent Files] per le vittime dell'effetto [[Slashdot]].
===Principali siti indice===
* http://www.tntvillage.org/ - Politica di scambio etico torrent
*{{en}} http://www.fulldls.com/
*{{en}} http://isohunt.com/
*{{en}} http://www.torrentspy.com/
*{{en}} http://torrentreactor.net/
*{{en}} http://www.thepiratebay.org/ - [[The Pirate Bay]] tra maggio e giugno del [[2006]] è stato al centro di una feroce polemica giudiziaria
*{{en}} http://www.mininova.org/
*{{en}} http://www.seektorrent.com/
 
Il «DHT» (''[[Distributed Hash Table]]'', ovvero «Tabella di Hash distribuita») è forse il primo vero passo per ottenere una rete BitTorrent decentralizzata. Il ''DHT'' è un sistema che aiuta la distribuzione di file e di informazioni quando un tracker è offline, e non fa parte del protocollo BitTorrent.
[[categoria:Peer2peer]]
 
[[Categoria:Client BitTorrent|*]]
Per capire meglio quanto appena detto, supponiamo che 50 utenti partecipino contemporaneamente in un network.
 
All'inizio tutti i 50 utenti utilizzeranno un grande tracker che farà loro da indice durante lo scaricamento. Durante il "soggiorno" sul network, ogni client (che supporta il sistema DHT) dei 50 utenti, creerà un indice virtuale che punterà al grande tracker. In questo modo se sto scaricando un file di modeste dimensioni ed il grande tracker cade l'indice virtuale mi consentirà di continuare lo scaricamento e cercare nuove fonti.
 
Per il momento il sistema ''DHT'' di [[BitComet]] è compatibile con la versione 4.1.2 di BitTorrent ufficiale, e con [[Ktorrent]] a partire dalla versione 2.2.0 mentre non lo è con [[Azureus]].
 
== Il futuro ==
L'evoluzione del protocollo BitTorrent prevede, tra l'altro, la possibilità di aumentare la velocità di scaricamento dei file utilizzando le parti (byte) in comune dei vari pezzi di file.
 
=== CarTorrent ===
I ricercatori dell'[[Università della California, Los Angeles|UCLA Engineering]] con a capo [[Mario Gerla]] e [[Giovanni Pau]] stanno implementando un protocollo basato su BitTorrent per condividere informazioni via wireless fra automobili.
Il nome del progetto è [[CarTorrent]].<ref>{{Cita web |url=http://punto-informatico.it/p.aspx?i=2163786 |titolo=PI: CarTorrent, per condividere anche in auto<!-- Titolo generato automaticamente --> |accesso=17 gennaio 2008 |dataarchivio=19 gennaio 2008 |urlarchivio=https://web.archive.org/web/20080119033237/http://punto-informatico.it/p.aspx?i=2163786 |urlmorto=no }}</ref>
 
=== Browser ===
[[Opera (browser)|Opera]] è il primo ''[[browser]]'' ad integrare un ''client'' per la gestione dei file torrent, che si possono scaricare direttamente all'interno di Opera senza aprire altri programmi.
 
=== Peer to Peer web hosting ===
Il software [[zeronet]] utilizza il protocollo bittorrent per permettere ai singoli nodi della rete di ospitare interi [[sito web|siti web]] senza l'ausilio di server centrali.
 
== Note ==
<references/>
 
== Altri progetti ==
{{interprogetto}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* [https://broadband.mpi-sws.org/transparency/bttest.php Glasnost] test per il [[traffic shaping]] su BitTorrent ([[Max Planck Institute]])
 
{{IPstack}}
{{BitTorrent}}
{{Portale|telematica}}
 
[[Categoria:BitTorrent| ]]
[[ar:بت تورنت]]
[[ca:BitTorrent]]
[[cs:BitTorrent]]
[[da:BitTorrent]]
[[de:BitTorrent]]
[[en:BitTorrent]]
[[es:BitTorrent]]
[[fa:بیت‌تورنت]]
[[fi:BitTorrent]]
[[fr:BitTorrent]]
[[gl:BitTorrent]]
[[he:ביטורנט]]
[[hu:BitTorrent]]
[[id:BitTorrent]]
[[ilo:BitTorrent]]
[[ja:BitTorrent]]
[[ka:ტორენტი]]
[[ko:빗토렌트]]
[[lt:BitTorrent]]
[[lv:BitTorrent]]
[[ms:BitTorrent]]
[[nl:BitTorrent]]
[[nn:BitTorrent]]
[[no:BitTorrent]]
[[pl:BitTorrent (protokół)]]
[[pt:BitTorrent]]
[[ro:BitTorrent]]
[[ru:BitTorrent]]
[[sk:BitTorrent]]
[[sl:BitTorrent]]
[[sq:BitTorrent]]
[[sv:Bittorrent]]
[[ta:பிட்டொரென்ட்]]
[[th:บิตทอร์เรนต์]]
[[tr:BitTorrent]]
[[uk:Бітторент]]
[[vi:BitTorrent]]
[[zh:BitTorrent]]
[[zh-yue:BitTorrent]]