Kuidas Bittorrent klient algselt avastab oma eakaaslasi?
Kui teie torrent klient liitub sülemaga failide jagamiseks ja kogumiseks, siis kuidas täpselt see teab, kus kõik tema eakaaslased on? Lugege edasi, kui liigume BitTorrenti protokolli all olevate mehhanismide ümber.
Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.
Küsimus
SuperUser-lugejal Steve V. oli väga spetsiifiline küsimus jaotatud Hash Table (DHT) süsteemi kohta BitTorrenti protokollis:
Olen juba lugenud seda SuperUser vastust ja seda Wikipedia artiklit, kuid mõlemad on minu jaoks liiga tehnilised, et ma oma pea ümber keerama.
Ma mõistan jälgija ideed: kliendid ühenduvad keskserveriga, mis säilitab loenduses eakaaslaste nimekirja.
Mõistan ka vastastikuse vahetuse ideed: kliendid, kes juba on süles, saadavad oma eakaaslaste täieliku nimekirja üksteisele. Kui avastatakse uusi eakaaslasi, lisatakse need nimekirja.
Minu küsimus on, kuidas DHT töötab? See on, kuidas saab uus klient liituda sülemaga ilma jälgimisseadmeta või vähemalt ühe sari liikme teadmistega, et vahetada eakaaslasi?
(Märkus: parimad on lihtsad selgitused.)
Tema küsimus tõi omakorda tõesti üksikasjaliku vastuse BitTorrent süsteemi erinevate funktsioonide kohta; Vaatame seda nüüd.
Vastus
SuperUser'i toetaja Allquixotic pakub põhjalikku selgitust:
Kuidas saab uus klient liituda sülemaga ilma jälgija või vähemalt ühe võõraste teadmisega, et vahetada eakaaslasi?
Sa ei saa. See on võimatu. *
* (Kui teie kohtvõrku juhtub, et DHT-s on juba sõlm. Sellisel juhul võiksite kasutada sellist ringhäälingumehhanismi, nagu Avahi, et „avastada” seda eakaaslast ja nende alglaadimist. Aga kuidas nad on bootstrap ise? Lõppkokkuvõttes tabasite olukorda, kus peate ühendama avaliku Interneti. Ja avalik Internet on ainult ühekordne, mitte multicast, nii et te olete kinni eelnevalt määratud eakaaslaste nimekirjade kasutamisest.)
Viited
Bittorrent DHT rakendatakse Kademlia nime all tuntud protokolli kaudu, mis on jaotatud räsilaudade teoreetilise kontseptsiooni erijuhtum..
Ekspositsioon
Kademlia protokolliga, kui te liitute võrguga, läbite käivitusprotseduuri, mis nõuab absoluutselt seda, eelnevalt, vähemalt ühe DHT-võrgus osaleva sõlme IP-aadress ja -port. Näiteks jälgija, mida te ühendate, võib olla DHT-sõlm. Kui olete ühendatud ühe DHT-sõlmega, siis jätkate DHT-lt teabe allalaadimist, mis annab teile rohkem teavet sõlmede kohta, ja seejärel navigeerite selles "graafiku" struktuuris, et saada ühendusi üha enamate sõlmedega, kes suudavad pakkuda mõlemat ühenduvus teiste sõlmedega ja kasuliku teabe andmed (allalaadimise tükid).
Ma arvan, et teie tegelik küsimus on julge - selle kohta, kuidas Kademlia DHT võrguga liituda teadmata kõikteised liikmed - põhineb valel eeldusel.
Lihtne vastus teie küsimusele paksus kirjas on, sa seda ei tee. Kui sa ei tea üldse mingit teavet isegi ühe hostina kohta, mis võib sisaldada DHT metaandmeid, olete kinni - te ei saa isegi alustada. Ma arvan, et kindel, et võiksite jõulise jõu katse avada avalikus internetis IP, avatud portiga, mis edastab DHT-teavet. Kuid tõenäolisem on, et teie BT klient on kodeeritud mõne konkreetse staatilise IP-ga või DNS-iga, mis lahendab stabiilse DHT-sõlme, mis lihtsalt pakub DHT-metaandmeid.
Põhimõtteliselt on DHT ainult detsentraliseeritud kui ühendamismehhanism ja kuna liitumismehhanism on üsna rabe (ei ole mingit võimalust "Interneti" kaudu "edastada", nii et sa pead unicastDHT andmete saamiseks individuaalsele eelnevalt määratud vastuvõtjale), ei ole Kademlia DHT tõesti detsentraliseeritud. Mitte sõna kõige rangemas tähenduses.
Kujutage ette seda stsenaariumi: Keegi, kes soovib, et P2P lõpetaks, läheb välja ja valmistab ette rünnaku kõik tavaliselt kasutatavad stabiilsed DHT sõlmed, mida kasutatakse alglaadimiseks. Kui nad on oma rünnaku lavale toonud, siis nad tõmbavad selle kõik sõlmed kõik korraga. Wham; iga üksik bootstrapping DHT sõlme on alla kõik ühes languses. Mis nüüd? Sa oled kinni ühendatud tsentraliseeritud jälgijad alla laadida traditsioonilisi eakaaslaste nimekirju. Noh, kui nad ründavad ka jälgijaid, siis sa oled tõesti, tõesti üles oja. Teisisõnu, Kademlia ja kogu BT võrku piiravad interneti enda piirangud, kuna on olemas piiratud (ja suhteliselt väike) arv arvuteid, mida peate edukalt rünnama või vallasrežiimi kasutama, et vältida> 90% kasutajate võrguühenduse loomiseks.
Kui kõik "pseudo-tsentraliseeritud" alglaadimissõlmed on kadunud, siis DHT sisemised sõlmed, mis ei käivitu, sest keegi väljaspool DHT-d ei tunne sisemiste sõlmede kohta, on kasutud; nad ei saa DHT-sse uusi sõlmi tuua. Niisiis, kuna iga sisemine sõlm lahkub aja jooksul DHT-st, kas siis, kui inimesed sulgevad oma arvutid, taaskäivitavad värskendused jne, siis võrk kokkuvariseb.
Loomulikult, et seda ringi liikuda, võiks keegi paigutada paigutatud BitTorrenti kliendi uue, eelnevalt kindlaksmääratud stabiilsete DHT-sõlmede või DNS-aadresside loendiga ning reklaamida P2P-kogukonnale valjusti selle uue nimekirja kasutamiseks. Kuid sellest saab „moor-a-mole” olukord, kus agressor (node-eater) laadiks need nimekirjad järk-järgult alla ja suunaks vaprad uued bootstrapping-sõlmed, seejärel võtaks need ka võrguühenduseta..
Me mitte ainult ei õppinud vastust algsele küsimusele, vaid õppisime ka natuke BitTorrent süsteemi olemusest ja selle haavatavustest.
Kas teil on midagi lisada selgitusele? Hääletage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.