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. Acestia 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. Cum functioneaza 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.
Concluzii
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.