Bittorrent

Spre deosebire de sistemul tradițional de partajare a fișierelor, bittorrentul este conceput pentru a distribui eficient același fișier sau o colecție de fișiere unui grup mare de utilizatori. Când te conectezi la internet, legatura respectiva este constituita dintr-o lățime de banda pentru descărcarea datelor sau informațiilor si o lățime de banda pentru încărcarea lor sau efectuarea cererilor de informație.
Pentru a mari eficacitatea distribuirii fișierelor, Bittorent folosește banda de upload a celui care descarca fișierul pentru a-l trimite mai departe utilizatorilor conectați ulterior, evitand astfel suprasolicitarea serverului. In același timp programul il avantajează pe cel care încarcă fișierul mai repede prin diferite metode. Astfel, in timp ce descarci un fișier și il trimiți mai departe toata lumea este mulțumită si se evita costurile de întreținere necesare pentru un server.
Bittorrent este folosit la scara larga, legal, pentru descărcarea diferitelor distribuții Linux, a muzicii gratuite, programelor sau jocurilor demonstrative de dimensiuni mari.

Bittorrent vs HTTP sau FTP

Cand un fișier este disponibil prin HTTP toata lățimea de banda folosita la descărcarea lui este asigurata de serverul pe care este stocat fișierul. Acest server trimite fișierul spre fiecare client care il solicita. La acesta se pot conecta un numar limitat de utilizatori care impart banda respectiva. Acestea comunica doar cu serverul si nu schimba informatii intre ei.
Prin Bittorrent, cand mai multi utilizatori descarca același fișier, acestia schimba intre ei părțile finisate, iar costul necesat pentru banda de upload este redistribuit acelora care-l descarca, făcând posibila, teoretic, descărcarea din infinite instanțe. In acest fel se pate rezolva problema limitarii traficului sau a numărului de conexiuni existente pe anumite servere din punctul de vedere a celui care doreste sa distribuie un fișier si nu dispune de resurse suficiente.
In comparație cu FTP-ul (File Transfer Protocol) se poate spune ca reprezinta o evolutie catre MFTP (multi-source file transfer protocol). MFTP-ul a fost comceput pentru a oferi posibilitatea procurarii unui fisier mai rapid, cu ajutorul mai multor surse. Astfel viteza este cumulata, spre exemplu de la 6 surse care au fiecare o viteza de 1MB/s si rezulta o viteza totala de 6MB/s. Daca adaugam posibilitatea trasformarii intr-o noua sursa a fisierului in curs de descărcare rezulta Bittorrent.

Mod de funcționare

Bittorrentul identifica totul prin intermediul URL-ului si este conceput pentru a se integra perfect cu interfata Web. Cei care doresc sa descarce un fisier sunt nevoiti sa folosească un client de bittorrent.
Distribuirea unui fișier prin Bittorrent este constituita din urmatoarele : un server Web normal, un fisier "metainfo", un tracker(server central care monitorizează adresele si informațiile dar NU stochează conținutul fisierului), fișierul original care se dorește a fi distribuit, browser-ul Web si clientul Bittorrent al utilizatorului care dorește fisierul.
Lucrurile sunt foarte simple: trebuie instalat clientul, si sa efectueze click pe fisierul pus la dispozitie. Astfel clientul bittorrent porneste automat si întreabă destinația descărcării fișierului, după care incepe descărcarea.
Conexiunea se realizeaza in felul urmator: trackerul primeste informații periodice și statistici prin HTTP sau HTTPS despre cei care descarca fișierul si trimite inapoi informații despre clientii la care se pot conecta.
Fișierul metainfo care cuprinde toate informațiile, este trimis intr-un format simplu numit "bencoding" si cuprinde URL-ul trackerului, numele care este sugerat pentru a salva fișierul si un index de informații despre părțile în care a fost separat. Fișierele sunt împărțite in marimi fixe, de obicei marimea este putere a lui 2, cu excepția ultimei bucăți care poate fi trunchiata. Fișierul mai conține si codul de identificarea a celui care descarca fișierul, cod care este generat la fiecare pornire sau repornire a transferului, adresa IP, porturile la care este așteptată conexiunea, precum si cantitatea datelor descărcate si incarcate. La inceput, numărul celor care dețin fișierul incomplet creste brusc, iar majoritatea celor cu conexiuni de viteze apropiate finiseaza descărcarea in mod simultan, numarul fișierelor complete disponibile pentru descărcare (seeds = seminte) crescând exponențial.
Comunicarea intre clienți este simetrica, iar mesajele transmise in orice direcție arata la fel, după terminarea descărcării unui parți clientul anunța ca este gata sa o trimită mai departe.

Metode aplicate pentru mentinerea proporției.

Au fost implementatea diferite metode si algoritmi pentru o balansare cat mai buna a resurselor. S-a incercat o rezolvare practica însa s-a demostrat a fi prea complicata. Metoda egalității este cel mai greu de realizat, deoarece teoretic cantitatea de date descărcata trebuie sa fie egala cu cea încărcata, o repartizare proporționala fiind imperativa. A limita descarcarea la un nivel redus si a lasa încărcarea la capacitatea maxima pentru echilibare nu este cea mai buna soluție. Un client nu detine un mecanism central de de alocarea a resurselor fiecare client fiind direct responsabil pentru mărirea vitezei de descărcare. Toate problemele de descărcare sunt rezolvate direct intre utilizatori, informațiile despre rata de transfer in ambele directii sunt transmise tracker-ului doar pentru statistica. Rolul tracker-ului este limitat doar la găsirea reciproca a clienților.
  Strategia de stopare a descărcării pentru anumiți utilizatori poarta numele de "choking". Simpla anunțare pe care o face fiecare client despre fiecare client despre partile complete foloseste sub 1% din lățimea de banda disponibila pentru încărcare si s-a dovedit a fi o metoda buna, fiind utilizata frecvent.
  Clientul Bittorrent imparte fișierul in mai multe părți iar ordinea distribuirii si multiplicarii lor este foarte importanta. Cu un algoritm slab de selectare si distribuire a părților se poate ajunge in situația in care un utilizator sa părăsească rețeaua, iar anumite parți ale fișierului nu vor mai fi disponibile, acesta rămânând incomplet in cazul in care sursa inițiala a fost si ea îndepărtata. Pentru a evita aceasta situație s-au stabilit anumite priorități.
"Rarest first" este prima metoda, folosita atunci cand este selectata o anumita parte pentru descărcare, cea care este disponibila in putine variante va avea prioritate, iar cele comune multor utilizatori vor fi lăsate la sfârșit.
  De exemplu, daca exista o singura sursa si doi utilizatori unul pornește descărcarea de la un capăt, altul de la celalalt capăt. Daca alți 4 utilizatori se vor conecta ulterior, se va proceda la fel, doi dintre ei vor descarca prima parte a fisierului de la ambele capete, iar ceilalți doi vor descarca similar partea a doua. Acesta este doar un model teoretic, dar aici apar diferite probleme. In acest mod fișierul este divizat in doua parti mai mari, ulterior este divizata in doua parți mai mici si tot asa. Tendința intre utilizatori este de a schimba " asta pentru asta" , adică vor fi facilitate conexiunile reciproce iar cei care nu vor coopera vor primi statutul "choke", ce reprezinta un refuz temporar de upload.
Acest algoritm este necesat pentru o buna performanta, izoland utilizatorii care doar descarca, fără a încărca fișiere.
 Exista doua diferente majore intre Bittorrent si programele P2P. Prima este lipsa facilității de căutare mai avansate, care il face mai putin util celor care încalcă copyright-ul. A doua este posibilitatea de distribuire a fișierelor doar printr-un tracker, care trebuie rulat pe un server specific și a cărui adresa este publica. Pentru a încălca drepturile de autor acest server poate fi plasat fizic într-o zona în care nu se pot la măsuri legale pentru oprirea lui, însa exista o portiță: trimiterea unei cereri care ISP care sa atenționeze utilizatorul adresei respective sa o blocheze în cazul neconformarii.
Aceasta metoda este mult mai practica pentru ca este mai ușor a bloca un singur utilizator decât toți utilizatorii dintr-o rețea P2P obișnuita.

Niciun comentariu:

Trimiteți un comentariu