Cum descoperă inițial un client Bittorrent inițial colegii săi?
Când clientul torrent se alătură roiului pentru a partaja și a aduna fragmente de fișiere, cum exact știe unde sunt toți colegii săi? Citește mai departe pe măsură ce intrăm în interiorul mecanismelor care se află în subprogramul 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 web Q & A.
Intrebarea
Cititorul super-utilizator Steve V. a avut o întrebare foarte specifică despre sistemul Distributed Hash Table (DHT) în cadrul protocolului BitTorrent:
Am citit deja acest răspuns la 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, de asemenea, ideea schimbului reciproc: clienții aflați deja într-un roi trimite o listă completă a colegilor lor unul altuia. Dacă se descoperă noi colegi, ele sunt adăugate la 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 cunoașterea a cel puțin unui membru al roiului pentru a schimba colegii cu?
(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.
Răspunsul
Contribuitorul Super Utilizer 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 cu?
Nu poți. Este imposibil.*
* (Cu excepția cazului în care un nod de pe rețea locală se întâmplă deja să fie 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 rupe de la ei. Dar cum a fost ei 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 al conceptului 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. Odată ce sunteți conectat la un nod DHT, continuați să descărcați informații din 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, 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ă alăturați unei rețele Kademlia DHT fără să știți oricealți membri - se bazează pe o presupunere falsă.
Răspunsul simplu la întrebarea dvs. este bold, nu știți. Dacă nu cunoașteți nicio informație despre nici o gazdă care ar putea conține metadate DHT, sunteți blocat - nu puteți începe nici măcar. Vreau să spun, sigur, ați putea încerca forța bruta pentru a descoperi o IP pe internetul public, cu un port deschis care se întâmplă să difuzeze informații DHT. Dar mai probabil, clientul BT este codificat greu la anumite IP-uri statice sau DNS specifice, 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 deoarece mecanismul de îmbinare este destul de fragil (nu există nici o modalitate de a "difuza" pe întregul Internet !, deci trebuie să 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 atac toate utilizate în mod uzual noduri stabile DHT care sunt utilizate pentru bootstrapping. După ce și-au pus în scenă atacul, ei o lansează toate noduri simultan. Wham; fiecare nod de DHT de bootstrapping este în jos într-o singură lovitură. Acum ce? Ești blocat să te conectezi dispozitive de urmărire centralizate 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, prin faptul că există un număr finit (și relativ mic) de computere pe care ar trebui să-l ataci sau să-l luați offline pentru a preveni> 90% utilizatorilor să se conecteze la rețea.
Odată ce nodurile de bootstrapping "pseudo-centralizate" au dispărut, nodurile interioare ale DHT, care nu sunt bootstrapping deoarece nimeni î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 calculatorului, 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 nouă listă de noduri DHT stabilizate prestabilite sau adrese DNS și va promova cu voce tare comunității P2P să folosească această listă nouă. Dar acest lucru ar deveni o situație de "whack-a-mole" în care agresorul (node-eater) ar descărca progresiv aceste liste și va viza noile noduri de bootstrapping curajoase, 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.