Ce este bittorrent (bittorrent)

Lycher și roiul lui.

Caracteristici generale

- Absența cozilor pentru descărcare.
- Fișierele sunt descărcate în segmente mici; Cu cât segmentul este mai puțin accesibil, cu atât mai des va fi transmis. Astfel, nu este necesară prezența unui "cidru" în rețea cu un fișier complet descarcat - sistemul distribuie segmentele între "sărbători", astfel încât mai târziu să poată partaja segmentele lipsă.
- Clienții (colegii) schimbă segmente direct între ele, în conformitate cu principiul "tu - pentru mine, eu pentru tine".
- Segmentele descărcate sunt disponibile imediat altor clienți.
- Integritatea fiecărui segment este monitorizată.
- Mai multe fișiere pot acționa ca obiect de descărcare (de exemplu, conținutul directorului).

Protocoale și porturi

Clienții se conectează la dispozitivul de urmărire folosind protocolul TCP.

Clienții se conectează reciproc utilizând protocolul TCP.

Numerele porturilor nu sunt fixate în specificația protocolului și pot fi modificate dacă este necesar. În plus, în momentul de față majoritatea trackerelor utilizează portul HTTP obișnuit 80, iar pentru clienți este recomandat să selectați un port de intrare aleatoriu.

Rețeaua DHT în clienții BitTorrent utilizează protocolul UDP.

Mai multe despre DHT

DHT (tabelul hash distribuit) este un protocol care permite clienților BitTorrent să se găsească fără a utiliza un tracker.

Clienții care au suport DHT formează o rețea DHT comună și își ajută reciproc să găsească participanți în aceleași mâini.

Suportul DHT este disponibil pentru clienții principali. μTorrent. KTorrent. BitSpirit și BitComet. Azureus are propria implementare a DHT, adică clienții Azureus își formează propria rețea DHT separată.

PEX (Exchange peer) este o extensie a protocolului BT pentru schimbul de liste de participanți.

PEX este implementat ca mesaje suplimentare între clienții deja conectați între ei pentru schimbul de segmente de fișiere prin protocolul obișnuit BT.

Spre deosebire de tracker și DHT, PEX poate fi doar un mijloc auxiliar de primire a colegilor, deoarece nu poate ajuta la conectarea la distribuirea de sărbători noi.

PEX este în clienții Azureus. BitComet. μTorrent și BitTornado. și în fiecare client este implementat în felul său, astfel încât PEX poate fi utilizat numai de aceiași clienți. Începând cu versiunea 3, Azureus (Vuze) poate schimba PEX cu uTorrent și BitTorrent.

Și DHT și PEX îndeplinesc de fapt funcția principală a tracker-ului - ei ajută participanții la partajarea de fișiere să învețe unul despre celălalt. Ei pot:

1. Ajutați participanții să se găsească rapid reciproc

De exemplu, pe distribuție există o sărbătoare X cu un port inaccesibil. La distribuție este conectat sărbătoarea Z, care însăși nu poate porni conexiunea cu X, și trebuie să aștepte până când X învață despre el însuși. X tocmai sa îndreptat spre tracker și data viitoare se va face într-o oră.

2. Reduceți sarcina pe dispozitivul de urmărire

3. Să sprijine participanții împreună în perioade de inaccesibilitate a tracker-ului

PEX vă permite să încetiniți într-o oarecare măsură procesul de dezintegrare a unui roi de participanți, iar DHT vă permite să înlocuiți complet trackerul, adică să vă conectați chiar și la distribuția de noi participanți.

4. DHT vă permite să distribuiți fără un tracker deloc

Prin participarea la distribuțiile fără trackerless ale clienților BT, se obține o anumită asemănare cu eMule, care utilizează rețeaua KAD.

Mecanismul DHT

Implementarea rețelei distribuite în clienții BT se bazează pe varianta DHT, numită Kademlia. În general, DHT (tabelul hash distribuit) înseamnă un sistem distribuit descentralizat pentru combinarea unui număr mare de noduri în continuă dispariție și emergente și transmiterea eficientă a mesajelor între ele. Pe baza structurilor DHT, sunt construite diverse sisteme mai complexe, cum ar fi partajarea de fișiere P2P, cache-ul web cooperativ, serviciile DNS și așa mai departe.

DHT utilizează protocolul UDP. Clienții BT ascultă același număr de port UDP pe care îl utilizează pentru conexiunile TCP primite. Dacă utilizați în mod activ DHT, deschiderea acestui port UDP pentru accesul din exterior este de dorit, dar nu este necesară - DHT va funcționa la fel.

Fiecare client BT conectat este un nod separat în rețeaua DHT. Are propriul său ID unic (identificator), selectat aleatoriu din același spațiu de 160 de biți ca și infohash's of torrents.

Cheia privată

Pe trackerele publice (deschise), unde toată lumea poate descărca torrentul și poate participa la distribuție, DHT și PEX servesc în beneficiul tuturor participanților.

Apoi, dezvoltatorii clienților au sugerat o nouă cheie în fișierul torrent: privat. Dacă este 1, atunci clientul este obligat pentru acest torrent să dezactiveze automat DHT / PEX indiferent de dorința utilizatorului. Un astfel de torent se numește Secure Torrent.

Practic, toate trackere private moderne se forțat să introducă privat: 1 în toate torrentele, răspândite pe tracker, precum și să interzică unele versiuni mai vechi ale clienților care susțin DHT si PEX, dar încă nu știu despre cheia privată. Utilizatorii Tracker pur și simplu nu pot folosi DHT / PEX pe distribuții, și nu există nici o problemă.

Rețineți că prezența cheii private modifică infohash-ul torrentului, astfel încât tăierea din fișierul torrent este inutilă - ceilalți clienți nu vor recunoaște torentul modificat oricum.

  • Toate torrentele tale sunt de la trackere private.

- Dacă DHT este activat în client, se dovedește că clientul se conectează la rețeaua DHT, își petrece traficul pe acesta, îi ajută pe alți clienți să găsească colegii de care au nevoie, dar nu utilizează DHT pentru ei înșiși. Dacă nu doriți să cheltuiți trafic suplimentar, este probabil mai bine să dezactivați DHT-ul în client.

  • Puteți descărca o mână de la un tracker public

- Dacă tracker-ul vă întoarce pe mulți colegi și există destule dintre ele pentru a obține o viteză bună de descărcare, probabil că nu aveți nevoie de DHT / PEX. Dacă nu, atunci merită să încercați să le includeți (atât în ​​client cât și în proprietățile de distribuție), aceasta poate ajuta la găsirea mai multor surse.

  • Descărcați distribuția de la un tracker privat fără o cheie privată forțată


În general, o astfel de situație nu poate fi recunoscută ca fiind normală, în special în ceea ce privește trackerele cu sistemul de acces. Faptul este că, în cazul clienților BitComet și Azureus prin intermediul DHT, utilizatorii pot învăța accesul altor utilizatori, iar utilizatorii necinstiți pot utiliza parolele altcuiva pentru a le descărca în contul altcuiva. Prin urmare, cel puțin în acești clienți pe astfel de trackere se recomandă dezactivarea DHT.

DHT și statistici

Această secțiune se aplică numai pentru dispozitivele de urmărire private pe care cheia privată nu este forțată în torrente, iar pe unele distribuții (în funcție de distribuitorul dacă a introdus cheia privată în torent), puteți utiliza DHT și PEX.

Adesea este de părere că DHT inclus în client afectează urmărirea statisticilor clientului de către tracker, de exemplu "distribuită prin DHT, astfel încât statisticile au trecut trecutul tracker-ului". Acest lucru nu este adevărat.

Adică, "distribuit prin DHT" înseamnă de fapt "despre unii (sau despre toți) colegii au primit informații despre DHT și, probabil, și unele sărbători mi-au găsit prin DHT"

Raportul de clienți pentru rezumatul datelor de urmărire din volumul descărcat și le-a dat tuturor colegilor cu care a comunicat, indiferent dacă clientul cu privire la sărbători individuale învățate prin tracker, de DHT si PEX, sau sărbătoarea principiilor generale, un compus în sine. Asta este, chiar daca din cauza DHT / PEX pe mana va fi „stânga“ utilizatori (care nu a circulat la tracker), clientul va raporta în continuare la tracker tot ce au mai descărcat și plătit.

Înregistrarea corectă a statisticilor depinde numai de starea dispozitivului de urmărire: tracker-ul funcționează - statisticile sunt luate în considerare, nu funcționează - nu sunt luate în considerare. Numai în cazul unui tracker inactiv pe termen lung, DHT / PEX poate juca un rol indirect, împiedicând partajarea de fișiere să dispară treptat pe o astfel de "distribuție fără statistici".

În plus, protocolul UDP este UDP-tracker (nu sunt acceptate de către toți clienții și nu este o parte oficială a protocolului) și pentru conectarea clienților unele cu altele prin intermediul UDP prin NAT (utilizat numai în clientul BitComet și nu o parte oficială a protocolului).

Fișier metadate

Pentru fiecare fișier distribuit, se creează un fișier de metadate cu extensia .torrent, care conține următoarele informații:

  • Adresa URL de urmărire;
  • informații generale despre fișierul încărcat (nume, lungime etc.);
  • sumele de sume (mai precis sumele hash SHA1) din fișierul încărcat.

Fișierele de metadate pot fi distribuite prin intermediul canalelor de comunicare - de exemplu, ei (sau legături către acestea) sunt stabilite pe serverele Web, postate pe paginile principale ale utilizatorilor de Internet, trimise prin e-mail, postate pe bloguri și fluxuri de știri RSS.

Mai multe despre tracker

BitTorrent tracker

BitTorrent tracker este un server web care coordonează clienții BitTorrent.
Coordonarea clienților - funcția principală a tracker-ului BitTorrent este procesarea cererilor clienților.
Fiecare client accesează periodic tracker-ul cu o cerere, care indică:

  • info_hash - un fișier torrent unic torrent
  • port - portul TCP pe care clientul așteaptă conexiuni de la alți clienți
  • cantitatea de date pe care clientul a reușit să o facă cu alți clienți
  • și alte informații.

Un astfel de apel este o cerere obișnuită GET HTTP, în care informațiile sunt codificate folosind un protocol special Bencode.

În cazul în care sunt deschise mai multe fișiere torrent active în clientul BitTorrent, atunci pentru fiecare dintre acestea se utilizează o cerere separată, care nu este conectată în vreun fel cu alții. Intervalele dintre cererile pentru fiecare torrent individual depind de setările clientului și de obicei variază de la 30 la 60 de minute.

Rolul tracker-ului

Astfel, trackerul "conectează" clienții unul cu celălalt, dar nu participă direct la schimbul de date din fișierele distribuite. Mai mult decât atât, în principiu, un tracker poate funcționa fără a avea nicio informație despre aceste fișiere, deoarece clienții îi spun doar la info_hash.

Pentru a rezolva această problemă, puteți utiliza trackere de rezervă sau un protocol DHT special non-cracking.

Caracteristici suplimentare

Astfel, aproape toate trackerele afișează statisticile mâinilor, adică numărul de siders și colegii de pe fiecare mână, cantitatea totală de date transferate între clienți și alte informații de care dispun.

Adesea trackerele sunt folosite pentru a stoca fișiere torrent și descrierile lor.

Tractoare private

Un tracker privat este un tracker care restricționează accesul la utilizatori, de obicei cerința de a înregistra un cont.

Unul dintre motivele apariției trasatorilor privați este asimetria canalelor de acces la Internet ale utilizatorului. Utilizatorul mediu în timpul descărcării torrentului are timp să ofere altor utilizatori o cantitate mică de date, în timp ce mulți utilizatori închid imediat clientul torrent după ce au primit fișierul dorit. Ca rezultat, disponibilitatea torentului este redusă, iar distribuitorii inițiale ai fișierului plasează o încărcătură nejustificat de mare.

În mod obișnuit, dispozitivele de urmărire private înregistrează statisticile fiecărui utilizator prin numărul de "descărcate" și "dăruite" altor utilizatori și necesită menținerea unui anumit raport minim dintre aceste două valori. Ca urmare, disponibilitatea și viteza de descărcare a torrentelor pe un dispozitiv de urmărire privat este de obicei mai mare decât în ​​cazul unei aplicații deschise.

Implementarea Trackers

Există diferite implementări ale trackerelor, de exemplu ca un server web separat, ca modul pentru un server HTTP terță parte (de exemplu, Apache) sau ca un motor de web scris în PHP sau JSP, de exemplu.

Lucrați fără tracker

În noile versiuni ale protocolului, s-au dezvoltat sisteme trackerless care rezolvă unele dintre problemele anterioare. Defectarea dispozitivului de urmărire în astfel de sisteme nu duce la defectarea automată a întregii rețele.

Începând cu versiunea 4.2.0 a clientului oficial, acesta implementează funcția de muncă crăpată, bazată pe protocolul Kademlia. În astfel de sisteme, tracker-ul este disponibil în mod descentralizat, pe clienți, sub forma unei tabele distribuite.

În prezent, nu toți clienții folosesc un protocol care este compatibil unul cu celălalt. Compatibil între ele BitComet, μTorrent, KTorrent și client oficial BitTorrent. Azureus are, de asemenea, un mod de lucru non-cracker, dar implementarea sa diferă de cea oficială, ca urmare a faptului că nu poate funcționa prin DHT cu clienții menționați mai sus.

Cum funcționează BitTorrent

Clienții se conectează și schimbă segmente de fișiere fără participarea directă a tracker-ului. Pentru funcționarea eficientă a rețelei BitTorrent, este necesar ca un număr cât mai mare de clienți să primească conexiuni de intrare. Configurația necorespunzătoare a NAT sau a firewall-ului poate împiedica acest lucru.

La conectare, clienții fac imediat schimb de informații despre segmentele lor existente. Clientul care dorește să descarce segmentul trimite o solicitare, iar dacă cel de-al doilea client este gata să dea, primește acest segment. După aceea, clientul verifică suma de verificare a segmentului și notifică toți colegii conectați cu privire la disponibilitatea acestui segment.

Fiecare client are capacitatea de a bloca temporar întoarcerea la alt client (sânge englezesc). Acest lucru este făcut pentru a utiliza mai bine canalul de recul. În plus, atunci când alege cine să deblocheze, preferința este acordată colegilor, care au trecut ei înșiși acest client în mai multe segmente. Astfel, sărbătorile cu rate bune de dăruire se încurajează reciproc pe principiul "tu, eu, eu".

Semințe super-superioare (super-sid)

Super-sid este o schimbare în comportamentul siderilor și nu poate fi efectuată fără a încălca protocolul BitTorrent. Cu toate acestea, acest lucru nu este aprobat de dezvoltatorul protocolului, Bram Cohen, nici de clientul oficial.

Super Sid este eficient atunci când există doar un singur cidru. De fapt, obligă utilizatorii să împărtășească datele descărcate. Un client care dă o parte a fișierului unui participant oprește transferul de date până când găsește o a doua copie a acestei părți în rețea. Deoarece mulți participanți nu au capacitatea sau nu doresc să facă datele descărcate la dispoziția altora, rata globală de rentabilitate scade. În modul normal, spre deosebire de super-sid, toată lumea primește întotdeauna informațiile solicitate, dacă sunt disponibile, astfel încât viteza medie de transfer a datelor este mai mare în ea.

Super-sid este eficient la distribuții cu o mulțime de leagăn. Cu un grup mic de persoane (2-3 persoane), clienții lor, din diverse motive, pot refuza să stabilească comunicarea între ei. În acest caz, super-sid-ul inclus va determina clienții să aștepte până când datele devin disponibile. Atunci când numărul de utilizatori încărcați este mare (10-20 de persoane), este suficient să dați fiecărei părți a fișierului o singură dată, atunci clienții îl vor putea schimba între ei și fiecare dintre ei va primi întregul fișier.

Programele clientului

  • aria2 - suportă HTTP, FTP, BitTorrent; Fișierul Metalink 3.0
  • Azureus este scris în limba Java, prin urmare este inter-platformă;
  • BitTornado este un client cross-platform scris în Python;
  • FoxTorrent - extensie pentru browserul Mozilla Firefox, care implementează funcțiile clientului BitTorrent;
  • mlDonkey este un client cross-platform;
  • Browserul Opera acceptă descărcarea torrentelor, începând cu versiunea 9.0, dar clientul torrent este incompatibil cu multe trackere.
  • TorrentFlux - scris în PHP, funcționează pe un server web de la distanță ca un script PHP, permițându-vă să nu vă țineți calculatorul în mod constant, dar în același timp să descărcați și să distribuiți torrente.

Pentru sistemele de tip UNIX:

Pentru Microsoft Windows și Windows NT:

  • μTorrent;
  • BitComet;
  • FlashGet;
  • GetRight.
  • Shareaza - sprijină lucrul cu mai multe rețele de partajare de fișiere, inclusiv BitTorrent