Il P2P

BitTorrent: Il funzionamento

Vediamo ora quali sono le fasi essenziali di una condivisione file nel caso di BitTorrent. In tutti gli altri protocolli il procedimento è pressoché identico. Un peer per ottenere un file deve attraversare sempre quattro fasi: 

1. L'inserimento nel Torrent

Per poter partecipare attivamente alla condivisione di un file, un Peer deve entrare nel Torrent relativo a quel file, in cui ovviamente possono trovarsi già molti altri peer collegati. Per prima cosa il Peer viene memorizzato nel Tracker in una posizione arbitraria.

Inizialmente il Peer non possiede chunks ma ne accumulerà nel tempo. La logica è che deve prelevare il primo chunk. BitTorrent fa in modo che il nuovo arrivato chieda il primo chunk ai Peer che sono più vicini a lui nella lista del Tracker detti Neighboring Peers. Una volta ottenuto il primo chunk, il Peer diventa effettivo e completamente operativo nel Torrent.

2. Prelievo di Chunks

Una volta recuperato il primo chunk, il Peer è pronto a riceverne altri e a condividere quelli che ne accumula. Il Peer deve collezionare tutti i chunks per completare il file. BitTorrent prevede un meccanismo noto come algoritmo Rarest First: quando un Peer entra per la prima volta in un Torrent preleva dai propri Peer vicini nella lista, prima i chunks che nel Torrent sono posseduti da meno Peers così da aumentare il numero delle copie di quei chunks all'interno del Torrent.  

3. Invio e condivisione di Chunks

Per inviare un chunk, BitTorrent provvede a ricercare ad ogni peer un altro peer a cui inviare i chunk.  
Bisogna pensare che un Torrent è costituito da miliardi di Peer, con velocità differenti. Se un Peer è molto lento in fase di upload lo sarà anche in fase di download. Dunque BitTorrent prevede un meccanismo noto come algoritmo Tit-for-Tat (Pan per Focaccia), in cui costituisce in base ad una stima di frequenze di upload e download un insieme di 4-Top-Peer, ovvero un insieme di 4 Peer più veloci del Torrent.

La scelta del Peer a cui inviare ricadrà naturalmente prima sui 4 Top-Peer. Ciò favorisce naturalmente anche il download da questi, e ne giova tutta la struttura. 

4. Uscita del Peer dal Torrent 

Una volta che un Peer ha completato i chunks del file, può decidere liberamente se abbandonare il Torrent oppure no. Se un Peer abbandona il Torrent quest'ultimo avrà perso il privilegio di avere un Peer con il file con tutti i chunks, in caso contrario, il Peer diventa in poco tempo uno dei Top Peer del Torrent stesso. In ogni caso è il protocollo di BitTorent provvederà ad eliminarlo eventualmente dal Tracker e dal Torrent o confermarlo Top Peer.

In figura sottostante è mostrata la struttura con alcune accezioni che si usano in BitTorrent:

1. Seeders :  Peers che hanno il file completo e lo mettono in condivisione.
2. Peers :  Peers che non hanno il file completo, sono in fase upload/download.
3. Leechers : Peers che scaricano il file pur non mettendolo in condivisione (letteralm. "sanguisughe").