# BitTorrent

BitTorrent és tant una aplicació client de distribució de fitxers pel sistema d'igual a igual (P2P), així com un protocol de compartició de fitxers. Van ser creats pel programador Bram Cohen.
BitTorrent està dissenyat per a distribuir grans quantitats de dades sense haver de dependre de costosos recursos de servidors i amplada de banda. Segons CacheLogic, BitTorrent és el responsable del ~35% del trànsit a Internet.
L'aplicació BitTorrent original estava implementada en Python i el seu codi font va ser publicat amb la llicència de codi obert BitTorrent (una versió modificada de la Llicència de codi obert XMPP/Jabber). Hi ha nombrosos clients compatibles amb el protocol BitTorrent, escrits amb una gran varietat de llenguatges i per a diverses plataformes.

## Funcionament

A diferència dels sistemes d'intercanvi de fitxers tradicionals, el seu principal objectiu és proporcionar una forma eficient de distribuir un mateix fitxer a un gran grup de persones, forçant tots aquells qui descarreguen un fitxer a compartir-lo també amb els altres. Primer es distribueix per mitjans convencionals un petit fitxer amb extensió .torrent. Aquest fitxer és estàtic i per això sovint es troba en pàgines web o fins i tot es distribueix per correu electrònic. El fitxer 'torrent' conté l'adreça d'un "servidor de recerca", el qual s'encarrega de localitzar possibles fonts amb el fitxer o part d'ell.
Aquest servidor realment es troba centralitzat i proporciona estadístiques sobre el nombre de transferències, el nombre de nodes amb una còpia completa del fitxer i el nombre de nodes que en posseeixen només una porció.
El fitxer o col·lecció de fitxers desitjat és descarregat de les fonts oposades pel servidor de recerca i, al mateix temps que es realitza la descàrrega, es comencen a pujar les parts disponibles del fitxer a altres fonts, utilitzant l'amplada de banda assignat a això. Com que l'acció de compartir comença fins i tot abans de completar la descàrrega d'un fitxer, cada node inevitablement contribueix a la distribució d'aquest fitxer. El sistema s'encarrega de premiar els qui comparteixen més, a major amplada de banda major és el nombre de connexions a nodes de descàrrega que s'establiran.
Quan un usuari comença la descàrrega d'un fitxer, BitTorrent no necessàriament comença pel principi del fitxer, sinó que es baixa per parts a l'atzar. Després els usuaris es connecten entre si per a baixar el fitxer. Si entre els usuaris connectats es disposa de cada part del fitxer complet (encara estant escampat), finalment tots n'obtindran una còpia completa. Per descomptat, inicialment algú ha de posseir el fitxer complet per a començar el procés. Aquest mètode produeix importants millores en la velocitat de transferència quan molts usuaris es connecten per a baixar un mateix fitxer.
Quan no existeixen ja més nodes amb el fitxer complet ("llavors" o "seeds") connectats al servidor de recerca, hi ha la possibilitat que el fitxer no puga ser completat.

### Creació i publicació d'arxius "torrent"

Els nodes que distribueixen l'arxiu el tracten com una separació en un cert nombre de peces dimensionades idènticament, normalment d'entre 32 KB i 4 MB cadascuna. Cada node realitza una suma de revisió mèdica (checksum) per a cada part, usant l'algorisme SHA-1, i emmagatzemant-lo en l'arxiu torrent. Peces majors a 512 kB reduiran la grandària d'un arxiu torrent per a cada càrrega útil, però açò reduiria l'eficiència del protocol. Quan altre node més endavant reba una peça en particular, es realitza la suma de revisió mèdica de la peça la qual és comparada amb la suma de revisió mèdica d'aqueixa peça que està emmagatzema, per a comprovar que es troba lliure d'error. Els nodes que ofereixen un arxiu complet són anomenats llavors (seeders), i el node que ofereix la còpia inicial de l'arxiu és dit llavor inicial (initial seeder).
La informació exacta que es troba continguda en l'arxiu torrent depèn de la versió del protocol BitTorrent. Per convenció, el nom d'un arxiu torrent té el sufix ".torrent". Els arxius torrent tenen una secció dita "anunci", la qual especifica l'URL del seu servidor central, i una secció "informació", la qual conté els noms dels arxius, les seues grandàries, longitud de peces utilitzades, i el codi hash SHA-1 per cadascuna de les peces; tota aquesta informació és usada pels clients per verificar la integritat de les dades rebudes.
Una vegada completats els arxius torrents, són publicats en algun lloc web o en altra part, i són registrats amb un servidor d'origen al que es coneix com a tracker, aquest manté la llista de clients que actualment estan participant sobre l'arxiu torrent. Alternativament, en un sistema descentralitzat, cada node actua com un servidor d'origen. Açò està sent implementat pels clients Client BitTorrent, µTorrent, BitComet, KTorrent i Deluge, a través de mètodes de Taula de Hash Distribuït (DHT). Azureus també suporta el mètode del traçabilitat de nodes que és incompatible (des d'abril de 2007) amb el DHT que ofereix als seus clients.

## BitTorrent en comparació amb altres xarxes P2P

El mètode utilitzat per BitTorrent per a la distribució de fitxers és similar en molts aspectes al que fa servir la xarxa eDonkey 2000, però generalment els nodes en aquesta xarxa comparteixen i descarreguen més quantitat de fitxers, perquè redueixen l'amplada de banda disponible per a cada transferència. Les transferències en BitTorrent són normalment molt ràpides, ja que tots els nodes en un grup es concentren en la transferència d'un sol fitxer o una col·lecció de fitxers. A més el protocol eDonkey2000 no premia aquells usuaris que comparteixen una amplada de banda més gran. No obstant això, cal aclarir que el client més estès per a la xarxa eDonkey, l'emule, sí que incorpora un sistema de crèdits per recompensar aquells que més comparteixen.
Al contrari que altres xarxes d'intercanvi, BitTorrent no inclou cap mecanisme de cerca de fitxers. Els usuaris de BitTorrent haurien de localitzar pels seus propis mitjans els fitxers torrent que necessita el protocol. Normalment, aquests fitxers es poden descarregar des de les pàgines web que publiquen grans fitxers (com les distribucions GNU/Linux) o des d'índexs web de cerca (com The Pirate Bay, Ktorrents o Bitgle Arxivat 2016-09-23 a Wayback Machine.).
BitTorrent fou programat originalment en Python encara que actualment es poden trobar clients escrits en C o en Java per exemple.
Segons CacheLogic, durant l'any 2005 BitTorrent s'utilitzava especialment en Àsia, mentre que eDonkey2000 es preferia a Europa i Amèrica.

## Programes client

Els clients de BitTorrent són programes dissenyats per compartir arxius que utilitzen el protocol BitTorrent. Entre aquests cal destacar:
* Programari lliure (i generalment gratuït): Ares Galaxy, Deluge, KTorrent, Transmission, Vuze i BitTornado.
* Programari no lliure (però sí gratuït): BitComet, μTorrent i Opera.
D'aquests programes, Vuze i μTorrent ofereixen també una interfície en català des de fa anys i com a mínim fins al 2017.

## Estructura d'una xarxa Bittorrent

Una xarxa en Bittorrent està formada per:
* Peers (Parells): Es denomina així a tots els usuaris que estan en la xarxa.
* Leechers: Es denomina així a tots els usuaris que estan en la xarxa descarregant l'arxiu però que encara no tenen l'arxiu complet.
* Seeds (Llavors): Són els usuaris de la xarxa que posseeixen l'arxiu complet. Només pugen parts als altres peers, però no baixen gens.
* Tracker: Un tracker de BitTorrent és un servidor especial que conté la informació necessària perquè els peers es connecten uns amb uns altres. Inicialment és l'única forma de localitzar quins usuaris contenen l'arxiu que es vol descarregar.
Mecànica del funcionament:
1r: Un usuari baixa d'un servidor web un arxiu .torrent que conté la informació del fitxer que volem descarregar. Entre altra molta informació conté l'adreça del tracker al que ens hem de connectar per a unir-nos a l'eixam de peers.
2n: Aquest arxiu .torrent s'obri amb algun programa client, que sap interpretar aquesta informació.
3r: El tracker i el peer es comuniquen a través d'una connexió HTTP. El tracker informa de la llista de tots els peers i seeds que contenen parts de l'arxiu que volem descarregar. El tracker s'actualitza amb la informació del nou peer que acaba d'ingressar.
4t: Una vegada que el peer sap on ha de cercar les parts necessàries, aquest peer es comunica amb uns altres mitjançant sockets TCP o UDP i l'arxiu comença a descarregar-se en l'ordinador de l'usuari. Cada part descarregada es comparteix automàticament amb altres peers.

## Referències

* ↑ Pasick, Adam «LIVEWIRE - File-sharing network thrives beneath the radar». Yahoo! News, 04-11-2004.
* ↑ «CacheLogic Announces eDonkey Has Become World's Largest P2P File Trading Network, Surpassing BitTorrent». Arxivat de l'original el 2007-03-14. [Consulta: 13 setembre 2009].

## Enllaços externs

* BitTorrent