Cos’è e come funziona BitTorrent?

bittorrentbig

A quasi tutti è capitato almeno una volta di scaricare un file torrent da internet. Ma forse in pochi si sono posti queste semplici domande: come funziona? Cosa sono i Seed? Posso creare un mio torrent?

Il BitTorrent è un protocollo che si basa su una rete P2P (peer to peer) , e quindi non necessita di un computer (server) che resti in ascolto su una porta pronto a rispondere a richieste da parte di altri computer (client) fornendo informazioni, file, pagine web; bensì sono tutti uguali tra di loro e ciascuno, a turno, possono essere sia client che serventi nei riguardi delle altre macchine all'interno della rete.

p2p

Le componenti principali del protocollo risultano essere: il file .torrent (file che contiene le informazioni necessarie per scaricare la risorsa necessaria), il tracker che ha il compito di coordinare le attività, qualcuno che fornisca il file .torrent (un web server per esempio), e i client ( meglio denominati come peer), ovvero coloro che scaricano e permettono di scaricare il file). Il .torrent contiene al suo interno informazioni molto importanti come la dimensione e il nome del file, l'hash e la grandezza di ciascun blocco (chunk) in qui è stato suddiviso il file e l’indirizzo del tracker.

Ogni peer ha un ruolo ben definito all’interno della rete che può essere: seed, leecher o reseeder.

I seed possiedono una copia intera del file,e risulta quindi necessaria l'esistenza di almeno uno di essi per permettere il download della risorsa.

I leecher sono coloro che non hanno ancora una copia del file intero e dovranno quindi scaricare le parti mancanti. Per loro sarà fondamentale permettere una elevata banda in quanto la loro velocità di download dipenderà dalla quella di upload.

I reseeder, invece, sono coloro che hanno già terminato il download del file, tuttavia rimangono connessi alla rete condividendo la risorsa. Quest'ultimi risultano essere molto utili alla comunità.

Ma come si coordinano tra di loro? Grazie al tracker che conosce l'indirizzo, il chunk e lo stato del download di ciascun peer.

  1. Passiamo ora dalla teoria alla pratica. Vediamo infatti come effettivamente avviene lo scambio di dati tra i vari peer e come si instaurano le connessioni tra di essi passo per passo:
  1. Scaricare il file .torrent da chi lo fornisce e attivarlo
  2. Il peer contatta il tracker indicandogli quale file vuole scaricare e la porta sulla quale riceverà la lista di peer per il download
  3. Il tracker restituisce la lista peer da cui è possibile effettuare il download
  4. Il peer crea connessioni con gli altri peer scelti dalla lista (fase denominata Handshake)
  5. Bitfield: ogni peer informa gli altri di quali chunk di file ha a disposizione e ne controllano l’integrità con SHA1
  6. Scambio di dati

E’ importante sottolineare quanto sia cruciale la decisione dell’algoritmo da adottare per la scelta dei chunk: infatti, per una maggiore efficienza, si dovranno scaricare per primi i blocchi più rari, evitando così che il file non possa essere scaricato completamente per via dell’abbandono del peer dalla rete.

Prima di concludere mi sembra doveroso mostrarvi come creare un proprio file .torrent.

Per comodità possiamo installare il seguente pacchetto ctorrent. Tramite Ubuntu basta digitare:

sudo apt-get install ctorrent

Archlinux:

yaourt -S enhanced-ctorrent

Analizziamo qualche opzione che ci fornisce ctorrent:

-t : permette di creare un nuovo torrent

-u URL: specifica attraverso una URL il tracker

-c comment: specifichiamo un commento

-M max_peer: il massimo numero di peer

-m min_peer: il minimo numero di peer

-p port: numero della porta

-I ip: indirizzo ip pubblico per la connessione dei peer

-P peer_id: specifica un ID prefissato per il peer

Esiste comunque una guida dettagliata qui: guida.

Gli indirizzi dei tracker si possono invece reperire a questo sito.

Ecco un esempio di comando:

ctorrent -t -u "http://announce.torrentsmd.com:6969/announce" -s example.torrent file_or_dir_to_upload

Ora potete condividere il vostro file torrent e farlo scaricare da altre persone.

La cosa più importante da ricordare e che scaricare torrent è legale, ma non si può dire lo stesso del suo contenuto. Quindi, buon download! 😉

Laureando in Informatica. Appassionato di Web Development, Linux, Open Source e dalle reti informatiche che mi hanno portato ad un loro approfondimento nel mio percorso di studio. Il mio fine è quello di gestire la grafica e la parte back end del sito.

Lascia un commento