Kako Bittorrent klijent u početku otkriva svoje vršnjake?
Kada se vaš torrent klijent pridruži roju za dijeljenje i prikupljanje datoteka, kako točno zna gdje su svi njegovi vršnjaci? Čitajte dalje dok mi prolazimo unutar mehanizama koji podliježu BitTorrent protokolu.
Današnja sesija pitanja i odgovora dolazi nam ljubaznošću SuperUser-a, podjele Stack Exchangea, grupiranja web-lokacija za pitanja i odgovore u zajednici.
Pitanje
Čitač SuperUser-a Steve V. imao je vrlo specifično pitanje o Distribuiranom Hash Table (DHT) sustavu unutar BitTorrent protokola:
Već sam pročitao ovaj SuperUser odgovor i ovaj članak na Wikipediji, ali oboje su previše tehnički za mene da bih se stvarno zamotao.
Razumijem ideju tragača: klijenti se povezuju na središnji poslužitelj koji održava popis vršnjaka u roj.
Također razumijem ideju razmjene vršnjaka: klijenti koji su već u roju šalju jedan drugome kompletan popis svojih vršnjaka. Ako se otkriju novi vršnjaci, oni se dodaju na popis.
Moje pitanje je, kako radi DHT? To je, kako se novi klijent može pridružiti roju bez tragača ili znanja najmanje jednog člana roja za razmjenu vršnjaka s?
(Napomena: najbolja su jednostavna objašnjenja.)
Njegovo pitanje zauzvrat potaknulo je doista detaljan odgovor o različitim funkcijama BitTorrent sustava; Pogledajmo sada.
Odgovor
Doprinositelj SuperUser Allquixotic nudi detaljno objašnjenje:
Kako se novi klijent može pridružiti roju bez tragača ili znanja najmanje jednog člana roja za razmjenu vršnjaka s?
Ne možete. Nemoguće je.*
* (Osim ako čvor na vašem lokalna mreža već je čvor u DHT-u. U ovom slučaju, možete koristiti mehanizam emitiranja, kao što je Avahi, da biste "otkrili" tog vršnjaka i bootstrap od njih. Ali kako je oni se sami dizati? Na kraju ćete pogoditi situaciju u kojoj se morate povezati s javnim internetom. I javni Internet je samo za unicast, a ne za multicast, tako da ste zaglavili u korištenju unaprijed određenih popisa kolega.)
Reference
Bittorrent DHT se implementira putem protokola poznatog kao Kademlia, što je poseban slučaj teorijskog koncepta raspodijeljene hash tablice.
Izlaganje
S Kademlia protokolom, kada se pridružite mreži, prolazite kroz postupak pokretanja, što apsolutno zahtijeva da znate, unaprijed, IP adresu i port najmanje jednog čvora koji već sudjeluje u DHT mreži. Praćenje na koje se povezujete, na primjer, može biti DHT čvor. Nakon što se povežete s jednim DHT čvorom, nastavljate s preuzimanjem informacija iz DHT-a, koji vam daje informacije o povezanosti za više čvorova, a zatim se krećete kroz tu strukturu "grafa" da biste dobili veze s više i više čvorova, koji mogu pružiti oboje povezivost s drugim čvorovima i podaci o korisnom sadržaju (dijelovi za preuzimanje).
Mislim da je vaše pravo pitanje podebljano - kako se pridružiti Kademlia DHT mreži bez poznavanja bilo kojidrugim članovima - temelji se na pogrešnoj pretpostavci.
Jednostavan odgovor na vaše pitanje podebljano je, ne znate. Ako uopće ne znate BILO koju informaciju o čak jednom računalu koje može sadržavati DHT metapodatke, zaglavili ste - čak ne možete ni početi. Mislim, svakako, možete pokušati otkriti IP na javnom internetu s otvorenim portom koji se dešava za emitiranje DHT informacija. No, vjerojatnije je da je vaš BT klijent teško kodiran na određenu statičku IP adresu ili DNS koji se rješava na stabilan DHT čvor, koji samo daje DHT metapodatke.
U osnovi, DHT je samo decentraliziran kao mehanizam spajanja, i zato što je mehanizam spajanja prilično krhak (nema načina da se “emitira” preko cijelog Interneta!) komunicirati s usamljenim terminalimapojedinom unaprijed određenom hostu za dobivanje DHT podataka), Kademlia DHT nije stvarno decentralizirana. Ne u najstrožem smislu te riječi.
Zamislite ovaj scenarij: Netko tko želi da P2P prestane izlazi i priprema napad svi najčešće korišteni stabilni DHT čvorovi koji se koriste za pokretanje sustava. Nakon što su izveli svoj napad, oni ga izvlače svi svi čvorovi odjednom. bum; svaki pojedinačni DHT čvor je u jednom padu. Što sad? Zapeli ste s povezivanjem centralizirani tragači preuzeti tradicionalne popise kolega iz tih stranica. Pa, ako napadnu i tragače, onda ste stvarno, stvarno do potoka. Drugim riječima, Kademlia i cijela BT mreža su ograničeni ograničenjima samog Interneta, u tome, postoji ograničen (i relativno mali) broj računala koje biste morali uspješno napasti ili isključiti kako biste spriječili> 90% korisnika od povezivanja na mrežu.
Jednom kada su "pseudo-centralizirani" čvorovi za podizanje sustava nestali, unutarnji čvorovi DHT-a, koji se ne podižu zbog nitko izvan DHT-a ne zna za unutarnje čvorove, su beskorisni; ne mogu donijeti nove čvorove u DHT. Dakle, kako se svaki unutarnji čvor tijekom vremena odvaja od DHT-a, bilo zbog toga što ljudi isključuju svoja računala, ponovno pokreću ažuriranja, itd., Mreža će se srušiti.
Naravno, da bi se ovo zaobišlo, netko bi mogao implementirati skrpan BitTorrent klijent s novim popisom unaprijed određenih stabilnih DHT čvorova ili DNS adresa i glasno se oglašavati P2P zajednici kako bi umjesto toga koristio ovaj novi popis. No, to bi postalo situacija u kojoj bi agresor (čvor koji jede) progresivno preuzimao te popise i ciljao na nove hrabre čvorove za podizanje, a zatim ih i odveo izvan mreže..
Ne samo da smo saznali odgovor na izvorno pitanje, već smo također dosta naučili o prirodi BitTorrent sustava i njegovih ranjivosti..
Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.