Você está na página 1de 7

Sisteme peer-to-peer pentru

partajarea de fisiere

Bittorrent este o tehnologie de transfer de date peer-to-peer, fiind una


din cele mai cunoscute si mai folosite tehnologii de acest tip. Implemantat
initial de programatorul Bram Cohen in 2001, protocolul Bittorrent a fost
adoptat aproape “peste noapte” de utilizatori, si le permite acestora sa
distribuie cantitati impresionante de date fara a investi mult in costurile ce
tin de partea hardware, providerului de internet sau hostingul pe World Wide
Web. De aceea traficul privitor doar la acest protocol a crescut impresionant
de la data lansarii sale, statisticile spunand ca 30% - 40% din traficul total
de pe internet facandu-se cu ajutorul acestui protocol.

Clientii de BitTorrent s-au dezvoltat de asemenea intr-un numar


exponential, ajungandu-se in prezent la o concurenta foarte serioasa intre
diferite companii producatoare de software, care folosesc limbaje de
programare diferite si au oferte pentru cele mai diferite sisteme de operare
pentru PC.
Functionalitatea unui client de BitTorrent difera destul de mult de
clasicul protocol HTTP, fiind net superioara in ce priveste viteza de
transmitere a datelor si integritatea fisierelor. Initial este creat un mic fisier
de cativa kilobiti numit "torrent/torent" care contine informatii atat despre
totalitatea fisierelor de transmis cat si despre serverul/serverele care
coordoneaza distribuirea fisierelor, acestea purtand numele de "tracker".
Doritorii care vor sa descarce un torent vor avea astfel nevoie mai intai de
exact acest mic fisier pe care il incarca mai apoi in clientul de torent si abia
dupa aceea este posibil tranferul de date propriu-zis.
Clientii de BitTorrent sunt in general distribuiti in mod gratuit, iar cei
care percep taxe pentru astfel de programe sunt de obicei eliminati de pe
piata de software printr-un sabotaj tacit tocmai pentru ca avantajele care
decurg prin simpla punere la dispozitie a unui client de torent performant pot
fi atat de mari incat sa percepi taxe pentru asa ceva pare o adevarata
prostie. Printre cei mai buni clienti de BitTorrent de la ora actuala putem
aminti programele BitComet, BitTornado, Deluge, KTorrent, Azureus,
Shareaza si µTorrent. Cel mai fiabil dintre acestea, in special pentru
calculatoarele de generatie mai veche ramane µTorrent care foloseste foarte
putina memorie RAM si este deosebit de prietenos cu partea de hardware,
dar si usor de integrat in interfata nativa a oricarui sistem Windows.
Exista si motoare de cautare special destinate protocolului BitTorrent,
iar dintre acestea putem mentiona Demonoid, isoHunt, Mininova,
myBittorrent, The Pirate Bay, Torrentz si Supernova.org. Doritorii nu trebuie
decat sa viziteze aceste website-uri pentru a cauta torentul dorit, fie acela
un fisier de muzica, sau unul video ori chiar un joc, iar odata gasit acesta nu
mai ramane decat sa il descarci in calculatorul personal dupa care sa il
incarci in clientul tau preferat de torent si sa astepti incheierea transferului,
continuand sa iti desfasori activitatea in fata calculatorului fara nici cel mai
mic impediment din partea clientului de torrent.
Protocolul Bittorrent a aparut datorita nevoii de descentralizare a
datelor. Si ca exemplu vom lua un DVD cu un joc. Inainte de aceasta
descentralizare, cine dorea sa ofere spre download jocul respectiv (de obicei
jocurile sunt cele mai cautate iar traficul asteptat in cazul jocului nostru este
si el mare) avea nevoie de un server sau cateva servere WEB foarte
puternice pentru a face fata numarului mare de conexiuni ale userilor ce
doreau sa downloadeze jocul. S-a incercat folosirea serverelor mirror care
sunt copii ale serverelor de baza care sa se afle cat mai aproape (desi e
relativ ce inseamna exact “aproape”) de utilizatorii care doresc sa
downloadeze jocul, insa nici aceasta metoda nu a reusit sa resolve problema.
Singura solutie pentru rezolvarea acestei probleme a fost Bittorrent,
iar in randurile ce urmeaza voi explica cum functioneaza acest protocol,
plecand de la exemplu de mai sus cu DVD-ul cu jocul:

1. cel ce doreste sa partajeze fisierul genereaza cu ajutorul unui program


(majoritatea clientilor BitTorrent de exemplu stiu sa faca acest lucru) un
fisier .torrent care contine metainformatii ce descriu fisierul/ele oferite.
Fisierul .torrent contine printre altele:

1. o lista de trackere (acestea sunt servere care pastreaza mereu


starea peerilor din sistem, informatii legate de cantitatea de date
download/upload a fiecaruia, etc)
2. lista de fisiere oferite spre download
3. fiecare fisier este impartit virtual in mai multe fragmente de
dimensiune egala (mai putin evident ultimul fragment) si se
calculeaza un hash pentru fiecare pentru verificarea
downloadului (acelasi hash se calculeaza si la destinatie pe
datele downloadate si se compara cu cel din fisierul .torrent);
dimensiunea fragmentului este lasata la latitudinea programului
care creeaza fisierul .torrent, dar daca este prea mica vor rezulta
prea multe fragmente si datorita numaului de hash-uri crescut,
unul per fragment, este posibil ca fisierul .torrent sa fie prea
mare.

2. fisierul .torrent este uploadat pe un tracker (element de importanta


majora in sistemul Bittorrent) in general printr-o interfata web-based. Datele
in sine raman pe calculatorul celui ce a generat .torrent-ul, niciodata datele
nu se afla pe serverul tracker!

3. Clientul de torrent al celui ce a creat fisierul .torrent pune acum acest


torrent in starea “Seeding” asteptand conexiuni de la alti utilizatori. Seed-erii
sunt acei utilizatori care au downloadat complet fisierul si il ofera spre
download altora. Clientul anunta si trackerul ca ofera fisierul (ca este in
starea “Seeding”) urmand ca trackerul sa trimita datele de conectare oricui
este interesat de download.

4. Serverele tip tracker au in general o interfata prin care se pot vedea


fisierele .torrent disponibile. Daca un utilizator doreste sa downloadeze ceva,
isi alege un fisier .torrent, il downloadeaza si il deschide intr-un client
BitTorrent (ex: uTorrent, Vuze, Transmission, BitTorrent, etc).

5. clientul bittorrent deschide fisierul .torrent si gaseste aici toate


informatiile de care are nevoie pentru a incepe downloadul. Se conecteaza la
tracker(ele) pe care il (le) gaseste in fisierul .torrent si cere o lista de surse
la care sa se poata conecta sa inceapa downloadul

6. dupa cum spuneam  un tracker nu are in sine continutul de


downloadat, datele initial sunt doar la cel ce a creat torrentul si s-a
inregistrat apoi la tracker ca Seeder. In momentul in care un server tracker
primeste o cerere de peeri de la un client BITTORRENT care doreste sa
downloadeze fisierul, acesta pe baza informatiilor referitoare la cei care sunt
conectati genereaza un raspuns in care insereaza IP-urile tuturor celor ce
ofera fisierul spre download, fie ca acestia sunt in starea Seeder (au fisierul
complet, doar uploadeaza) sau in starea Leecher (au inceput downloadul si
pot oferi altora fragmentele deja downloadate dar si ei la randul lor mai au
de downloadat informatii).

7. odata ce un client a primit lista de posibili peeri cu toate datele de


conectare la ei de la trakcer, el va incepe sa se conecteze la acestia si sa le
ceara informatiile spre download, fragment cu fragment. In acest moment
clientul este in starea Leecher si cand va termina downloadul va fi in starea
Seeder si va continua sa ofere informatiile altor Leecheri care le cer.
8. in mod constant clientii BITTORRENT comunica cu trackerul
anuntandu-l evenimentele importante, cerand noi liste de peeri, informandu-
l de progresul downloadului, etc. Astfel, constant trackerul are informatii
proaspete referitoare la participantii la comunicatie fie ei Seederi sau
Leecheri.

Dezvoltari ulterioare si optimizari

Desi sistemul BITTORRENT este unul destul de eficient i se pot gasi diverse
probleme si se pot identifica comportamente suboptime. Optimizari au venit
si de la creatorul original dar si de la diversi creatori de clienti BitTorrent
(ex: uTorrent cu protocolul uTP/Micro Transfer Protocol sau Vuze cu
implementarea sa DHT-distributed database/trackerless system).

1. DHT - Distributed Hash Tables - sistem prin care un client poate


gasi peeri si in absenta tracker-ului specificat in .torrent. Exista
implementarea Mainline (propusa de clientul BitTorrent) dar si o
implementare necompatibila propusa de Azureus/Vuze inainte de cea
Mainline. Ambele se bazeaza pe sistemul Kademlia (folosit si de unii clienti ai
retelei peer-to-peer eDonkey sub forma retelei KaD) care permite peerilor sa
creeze o retea virtuala in care fiecare este un nod si in care informatia este
transmisa intre noduri  fara nevoia unui server central de tracking. Fiecare
nod pastreaza o lista cu resursele disponibile pe alte noduri sub forma de
hash-uri de fisiere, cautarile fiind facute nod-cu-nod pana la gasirea
informatiilor cautate. Sistemul construieste practic un mare graf in care
fiecare peer ce implementeaza DHT este un nod si pune la dispozitie
algoritmi de cautare a informatiilor necesare in “norul” de noduri.

2. PEX - Peer Exchange - sistem prin care fiecare client BITTORRENT


poate afla de alti peeri de la un peer de-al sau, fara ajutorul serverului de
tracking. DHT si PEX sunt dezactivate in torrentele puse la dispozitie de site-
uri cu continut inchis, pentru a nu permite utilizatorilor neinregistrati sa
downloadeze datele si pentru a obliga tot traficul de control sa se faca prin
tracker.

3. Multiple servere tip tracker - in majoritatea


fisierelor .torrent actuale se gasesc mai multe trackere pentru situatia in
care un anumit server este offline. Se obittorrentine o redundanta mai buna
crescand si protectia la cazurile in care un tracker devine nefunctional

4. Criptarea - sistemul de securitate din protocolul BitTorrent a trecut


prin multe in ultimii ani, dezvoltandu-se treptat componenta cu componenta.
Securitatea implementata isi propune in principal sa ofere protectie la
identificarea usoara a datelor transferate prin acest protocol. In acest
moment criptarea intre peeri este implementata de aproape toti clientii
BITTORRENT desi nu este o setare default tip “require” ci una tip “accept”
(un client va accepta sau va cere o sesiune criptata, dar daca partea opusa
nu o doreste se va recurge la o conexiune necriptata). Criptarea aduce
bineinteles un consum sporit de resurse pe clientii care o folosesc dar face
mai dificila detectarea/limitarea traficului BITTORRENT. Este de retinut si ca
securitatea BitTorrent NU asigura intimitatea datelor 100%.

5. Localizarea - in ultimul timp datorita cresterii traficului


BITTORRENT in Internet din ce in ce mai multi ISP incearca sa optimizeze
flow-urile de trafic. O metoda interesanta se bazeaza pe localizarea
traficului. Astfel, daca un ISP isi doreste ca traficul sa ramana in principal in
interiorul retelei sale, poate recurge la o serie de echipamente speciale care
monitorizeaza traficul client-tracker (peer-tracker) si pot interveni in
raspunsurile trackerului catre client. Cum? Simplu: un client va primi de la
tracker la conectare o lista de peers de la care poate incepe sa ceara si sa
downloadeze fragmente de date. In mod normal acesti peers sunt alesi de
tracker sau trimisi in intregime clientului si pot fi localizati oriunde in lume,
ducand la o patternuri de trafic ce pot dezavantaja un ISP. Metoda
presupune crearea de catre ISP-ul in cauza a unor liste de clase “interne” si
folosirea acestor echipamente care se vor interpune ca un proxy transparent
in comunicarea client-tracker dar la primirea listei de peeri de la tracker
catre client, echipamentele vor filtra din lista peeri aflati in afara retelei si
vor trimite doar peeri din reteaua providerului nostru; obittorrentinem astfel
o buna localizare a traficului, costuri mai mici pentru upstream provideri
si/sau peeringuri si viteza imbunatatita de download/upload pentru clientii
ISP-ului. Bineinteles, folosirea criptarii de catre clienti face inutil intregul
sistem care in acest caz nu mai poate optimiza nimic.

6. uTP - Micro Transfer Protocol - protocol de transport bazat pe


UTP propus de uTorrent. Protocolul isi propune sa rezolve cateva din
problemele actuale ale conexiunilor TCP imbunatatind algoritmul acestuia de
control al congestiei si emuland facilitatile de fiabilitate ale TCP-ului in
contextul patternului de trafic BITTORRENT. Un important plus este faptul ca
folosind UTP traficul este mult mai greu de limitat: o conexiune TCP va fi
inchisa daca se va primi un pachet RST cum descriam sistemul la punctul 4,
pe cand o conversatie UDP nu implica aceste pachete de sfarsit de conexiune
si prin urmare nu exista o metoda simpla pentru un ISP sau o alta terta
parte sa inchida conexiuni sau sa limiteze traficul.

In concluzie putem afirma ca protocolul Bittorrent este o tehnologie


inovatoare, desi este inca in curs de dezvoltare, existand posibilitatea de a i
se adauga noi facilitate care sa-I imbunatateasca performantele, care sunt in
momentul de fata impresionante, si eficienta. Singurul motiv care vorbeste
in defavoarea protocolului BitTorrent, respectiv a clientilor sai specifici este
aspectul legal al transferului de date, multe dintre fisierele de torrent puse la
dispozitia doritorilor fiind de-a dreptul ilegale sau piratate intr-un mod foarte
abuziv. Este bine de stiut acest lucru pentru a putea selecta din uriasa
cantitate de informatie pusa la dispozitia noastra prin intermediul acestui
protocol doar fisierele care intrunesc intru totul conditiile legale care permit
o buna functionare a tuturor activitatilor din mediul electronic. Riscurile de a
nu proceda astfel sunt mult prea mari si nu e deloc recomandat sa incerci
marea cu degetul pentru ca alternativa este nu doar o amenda foarte
consistenta, dar chiar si privarea de libertate atunci cand este cazul.

Você também pode gostar