BitTorrentul este un protocol de distribuire a fisierelor. Se identifica continutul prin URL si este destinat sa se integreze asemanator cu webul. Avantajul oferit de HTTP este atunci cand se realizeaza downloaduri ale fisierelor in acelasi timp.
Sistemul de distributie al fisierelor BitTorrent include mai multe entitati:
- serverul de web
- metainformatiile fisierelor
- trackerul de BitTorrent
- downloadurile „originaleâ€
- userii siteurilor de torrenti
- userii de download
Ideal ar fi cat mai multi useri pentru un singur fisier.
Startul distributie de torrenti presupune mai multe etape:
1. Pornirea trackerului (sau, mai mult ca sigur acesta este deja pornit)
2. Pornirea serverului de web, similar cu apache sau unul asemanator
3. Asocierea extenisei .torrent cu mimitype application/x-bittorrent inaintea deschiderii serverului web (sau este posibil ca acest lucru sa fie deja facut)
4. Generarea metainfo-ului (.torrent) pentru folosirea completa a fisierelor ce urmeaza sa serveasca pentru URL-ului trackerului
5. Punerea fisierelor metainfo pe serverul web
6. Crearea link-urilor fisierelor metainfo (.torrent) catre o pagina web oarecare
7. Startul downloadurilor care deja sunt complete.
Startul downloadului, informatii pentru useri:
1. Instalarea unui client BitTorrent (in caz ca acesta nu este deja instalat)
2. Navigarea pe web prin listele de torrente
3. Downloadarea fisierelor .torrent
4. Selectarea locatiei unde sa fie salvate
5. Asteptarea terminarii downloadului
6. Inchidrea clientului in cazul in care nu se doreste ramanerea la seed
Conectivitatea este urmatoarea:
- Stringurile au un prefix in baza zece urmat de doua puncte (:) si un sir. De exemplu 4:spam corespunde lui “spam”
- Intregii (integers) au reprezentare “i” urmat de un numar in baza zece apoi caracterul “e”. De exemplu i3e corespunde lui 3 si i-3e corespunde lui -3. Intregii nu au marimea limitata. i-0e este o reprezentare invalida. Toate codificarile care incep cu 0, de asemenea i03e, sunt invalide, i0e corespunde bineinteles lui 0.
- Listele au codarea “l” urmata de elementele lor(de asemenea codate) si caracterul “e”. De exemplu l4:spam:eggse corespunde lui [”spam”,”eghs”].
- Dictionarele au codificarea “d” urmata de o lista alternativa a cheilor si valorile corespunzatoare lor urmata de caracterul “e”. De exemplu “d3:cow3:moo4:spam4:eggse” corespunde lui {”cow”: “moo”, “’spam”‘: “eggs”, iar d4:spaml1:a1:bee corespunde expresiei {”spam”: [”a”, “‘b’]}.
Fisierele metainfo au un dictionar de codificare cu urmatoarele chei:
announce – adresa URL a trackerului
info – este ca o harta a dictionarului contine cheile descrise in cele ce urmeaza.
- cheia name, este un sir ce sugereaza numele sub care sunt salvate fisierele sau directoarele. Este pur consultativ.
- piece length – reprezinta un numar exprimat in biti, se refera la dimensiunea bucatelelor in care au fost taiate fisierele. Este orientativ pentru transfer, fisierele sunt taiate in dimensiuni fixe si toate au aceiasi lungime cu exceptia ultimei care poate fi mai mica.
- length – lungimea fisierelor exprimata in biti
- patch – lista sirurilor corespunzatoare numelor subdirectoarelor, ultimul este corespunzator numelor actuale al fisierelor
Trackerul cere urmatoarele chei:
info_hash – 20 de biti de hash sha1, codificati ce corespund valorii informatiei pentru fisierele metainfo. Notam ca acesta este un subsir al fisierelor metainfo.
peer_id – un sir cu lungimea de 20 de biti ce este folosit pentru id-ul downloadului. Fiecare downloader genereaza un id in ordine aleatorie atunci cand porneste downloadul.
ip – un parametru optional ce corespunde IP-ului pe care il are un peer
port – este numarul portului pe care peer-ul il are deschis pentru protocolul BitTorrent. Comunitatea a decis ca pentru download sa se foloseasca portul 6881 si ca alternative porturile cuprinse intre 6882 si 6889.
uploaded – cantitatea total a uploadului, codata in baza zece
downloaded – cantitatea totala a downloadului, de asemenea codata in baza zece
left – un numar de biti, codati in baza zece, reprezentand secventa de download a peerului. Aceasta nu poate fi calculata pentru downloadurile fisierele care au fost intrerupte sau au avut erori la integrare si au fost re-downloadate
event – o cheie obtionala ce caracterizeaza starea, acesta poate fi started, completed, sau stopped (sau empty daca acesta nu este prezent). Daca nu este prezent acesta anunta terminarea la anumite intervale de timp. Started este folosit pentru anuntarea iinceputului downloadului, iar completed este trimis atunci cand downloadul este complet. Downloadarii trimit stopped pentru a anunta incetarea downloadului
Trackerul are propriul sau dictionar de chei. Daca va raspunde cu failure reason, atunci trebuie citit sirul care explica de ce sa dat aceasta eroare. Trackerul foloseste doua chei esentiale: interval, care reprezinta un numar de secunde dintre cereri repetate ale downloaduri si peers care corespunde peerilor, contine peer_id, ip si port.
Peerii protocolului BitTorrent opereaza doar pe TCP. Aceasta performanta eficienta este in afara obtiunilor socketului.
Conexiunile peerilor sunt simetrice. Mesajele sunt trimise in ambele directii, iar datele de asemenea vin din ambele sensuri.
Dupa ce peerii termina downloadul bucatelelor si verifica integritatea folosind hashul, anunta ca toate toate bucatelele au sosit.
Conexiunea contine doi biti de stare pentru fiecare terminare, unul pentru refuz (choked) si unu pentru interes (interested).
Toate mesajele aflate in asteptare incep cu un bit care transmite tipul lor. Acesta poate avea urmatoarele valori.
0 - choke
1 - unchoke
2 - interested
3 - not interested
4 - have
5 - bitfield
6 - request
7 - piece
8 - cancel
‘choke’, ‘unchoke’, ‘interested’, si ‘not interested’ nu sunt sarcina utila
“bitfield” - este trimis doar in cazul primului mesaj. Downloaderii care nu au nimic, inca, pot sari peste mesajul ‘bitfield’. Primul bit al bitfieldului corespunde indicilor 0 – 7 de la bitul cel mai inalt (high bit) respectiv la cel mai scazut (low bit).
“have” – mesajele sarcinii utile sunt reprezentate de un singur numar, indexul fisierului pe care downloaderul l-a luat si a verificat autenticitatea lui
“request” - mesaje care contin indexul, inceputul si lungimea. Ultimii doi biti sunt bitii offset. Lungimea este generata ca putere a lui doi si este trunchiata in cazul sfarsitului fisierelui, daca este nevoie. Toate implementarile curente folosesc 2^15 biti si inchide conexiunea pentru clientul care cere o valoare mai mare de 2^17
“cancel”– mesajele au aceeasi sarcina ca si a celor de tip ‘request’. Cand downloadul, este aproape complet, acesta are tendinta pentru ultimele cateva bucatele din total sa inchida downloadul, lasandu-l sa ruleze pe o singura linie ceea ce dureaza foarte mult
“piece” - mesaje care contin indexul, inceputul si bucatele. Notam ca acesta este corelat implicit cu mesajul request. Este posibil pentru planificarea bucatelelor intr-un tablou daca mesajele choke si unchoke sunt trimise rapid sesiunii si/sau transferul este foarte mic
Inscriete la comentarii sau lasa un trackback

cum se instaleaza bittorents ca vreau sa iau gta 4