Când clientul tau torrent se alătură roiului pentru a partaja și a aduna fragmente de fișiere, cum știe exact unde sunt toți colegii săi? Citește-ne pe măsură ce ne întoarcem în interiorul mecanismelor care fac obiectul protocolului BitTorrent.
Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor Q & A.
Cititorul superutilizatorului Steve V. a avut o întrebare foarte specifică despre sistemul Distributed Hash Table (DHT) în cadrul protocolului BitTorrent:
Am citit deja acest răspuns de SuperUser și acest articol Wikipedia, dar amândouă sunt prea tehnice pentru a-mi împacheta cu adevărat capul.
Înțeleg ideea unui tracker: clienții se conectează la un server central care menține o listă de colegi într-un roi.
Înțeleg și ideea schimbului reciproc: clienții aflați deja într-un roi trimite o listă completă a colegilor lor. Dacă sunt descoperiți noi colegi, aceștia sunt adăugați în listă.
Întrebarea mea este cum funcționează DHT? Acesta este,cum poate un nou client să se alăture unui roi fără nici un tracker sau cunoștințele cel puțin unui membru al roiului pentru a face schimb de la egal la egal?
(Notă: explicațiile simple sunt cele mai bune.)
Întrebarea la rândul său a determinat un răspuns foarte detaliat cu privire la diferitele funcții ale sistemului BitTorrent; Hai să ne uităm acum la asta.
Contribuitorul Superquick Allquixotic oferă o explicație în profunzime:
Cum poate un nou client să se alăture unui roi fără nici un tracker sau cunoașterea a cel puțin unui membru al roiului pentru a schimba colegii?
Nu poți. Este imposibil.*
* (Cu excepția cazului în care un nod de perețea locală se întâmplă să fie deja un nod în DHT. În acest caz, ați putea folosi un mecanism de radiodifuziune, cum ar fi Avahi, pentru a "descoperi" acest coleg, și pentru a le da bootstrap. Dar cum a fostei bootstrap ei înșiși? În cele din urmă, veți lovi o situație în care trebuie să vă conectați la Internetul public. Și Internetul public este doar unicast, nu multicast, deci ești blocat folosind listele predefinite de colegi.)
Referințe
Bittorrent DHT este implementat printr-un protocol cunoscut sub numele de Kademlia, care este un caz special de concept teoretic al unei tabele distribuite hash.
Expunere
Cu protocolul Kademlia, când vă alăturați rețelei, treceți printr-o procedură de bootstrapping, ceea ce presupune absolut că știți,în avans, adresa IP și portul cel puțin unui nod care deja participă la rețeaua DHT. Dispozitivul de urmărire la care vă conectați, de exemplu, poate fi el însuși un nod DHT. După ce vă conectați la un nod DHT, continuați să descărcați informații de la DHT, care vă oferă informații de conectivitate pentru mai multe noduri și apoi navigați structura "graf" pentru a obține conexiuni la mai multe noduri și care pot oferi atât conectivitate la alte noduri și date privind sarcina utilă (bucăți de descărcare).
Cred că întrebarea dvs. reală este îndrăzneață - despre cum să vă înscrieți într-o rețea Kademlia DHT fără să știțioricealți membri - se bazează pe o ipoteză falsă.
Răspunsul simplu la întrebarea dvs. cu caractere aldine este,nu știți. Dacă nu cunoașteți nicio informație despre nici măcar o gazdă care ar putea conține metadate DHT, sunteți blocat - nici nu puteți începe. Vreau să spun, sigur, ați putea încerca o forță brutativă de a descoperi o IP pe internetul public cu un port deschis care se întâmplă să difuzeze informații DHT. Dar, mai probabil, clientul dvs. BT este codificat greu pentru o anumită IP statică sau DNS specifică care rezolvă un nod DHT stabil, care oferă doar metadatele DHT.
În principiu, DHT este doar la fel de descentralizat ca mecanismul de îmbinare și pentru că mecanismul de îmbinare este destul de fragil (nu există nici o modalitate de a "difuza" pe întregul Internet!unicastla o gazdă individuală pre-alocată pentru a obține datele DHT), Kademlia DHT nu esteîntr-adevăr descentralizată. Nu în sensul cel mai strict al cuvântului.
Imaginați-vă acest scenariu: Cineva care vrea să se oprească pentru P2P se stinge și pregătește un atactoateutilizate în mod uzual noduri stabile DHT care sunt folosite pentru bootstrapping. După ce și-au pus în scenă atacul, ei o aprindtoate noduri simultan.Wham; fiecare nod de DHT de bootstrapping este în jos într-o singură lovitură. Acum ce? Sunteți blocat (ă) să vă conectațidispozitive de urmărire centralizată pentru a descărca liste tradiționale de colegi de la aceștia. Ei bine, dacă atacă și ele pe trackere, atunci tu chiar ești,într-adevăr un pârâu. Cu alte cuvinte, Kademlia și întreaga rețea BT sunt constrânse de limitările internetului în sine, deoarece există un număr finit (și relativ mic) de computere pe care ar trebui să-l ataci sau să-l faci offline pentru a preveni> 90% dintre utilizatori să se conecteze la rețea.
Odată ce nodurile de "bootstrapping" pseudo-centralizate au dispărut, nodurile interioare ale DHT, care nu sunt bootstrapping deoarecenimeni în afara DHT nu știe despre nodurile interioare, sunt inutile; ele nu pot aduce noduri noi în DHT. Deci, deoarece fiecare nod interior se deconectează de DHT-ul de-a lungul timpului, fie din cauza închiderii calculatoarelor, a repornirii pentru actualizări etc., rețeaua s-ar prăbuși.
Desigur, pentru a face acest lucru, cineva ar putea implementa un client BitTorrent patch-uri cu o listă nouă de noduri DHT stabilizate prestabilite sau adrese DNS și să facă publicitate cu voce tare comunității P2P pentru a folosi această listă nouă. Dar acest lucru ar deveni o situație de "whack-a-mole", în care agresorul (node-eater) va descărca progresiv aceste liste și va viza noile noduri curajoase de bootstrapping, apoi le va lua și offline.
Nu numai că am învățat răspunsul la întrebarea inițială, dar am învățat destul de puțin despre natura sistemului BitTorrent și despre vulnerabilitățile acestuia.
Aveți ceva de adăugat la explicație? Sunați în comentariile. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.