Bagaimanakah Pelanggan Bittorrent Mula-mula Temui Rakan-rakannya?
Apabila klien torrent anda menyertai kawanan untuk berkongsi dan mengumpul kepingan fail, bagaimana tepatnya ia tahu di mana semua rakan sebayanya? Baca terus seperti yang kita bocorkan di dalam mekanisme yang menimbulkan protokol BitTorrent.
Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.
Soalan
Pembaca SuperUser Steve V. mempunyai persoalan yang sangat khusus mengenai sistem Tabung Hash Terdistribusi (DHT) dalam protokol BitTorrent:
Saya telah membaca jawapan SuperUser ini dan artikel Wikipedia ini tetapi kedua-duanya terlalu teknikal untuk saya membungkus kepala saya.
Saya faham idea pelacak: pelanggan menyambung ke pelayan pusat yang mengekalkan senarai rakan sebaya dalam kumpulan.
Saya juga memahami idea pertukaran rakan sebaya: pelanggan sudah berada dalam kumpulan yang menghantar senarai lengkap rakan sebaya mereka kepada satu sama lain. Sekiranya rakan baru ditemui, mereka akan ditambah ke senarai.
Soalan saya ialah, bagaimana kerja DHT? Itu dia, bagaimanakah pelanggan baru boleh bergabung dengan kumpulan tanpa pengesan atau pengetahuan tentang sekurang-kurangnya seorang ahli kawanan untuk bertukar rakan sebaya dengan?
(Nota: penjelasan mudah adalah yang terbaik.)
Persoalannya pada gilirannya mendorong jawapan yang sangat terperinci mengenai fungsi-fungsi sistem BitTorrent yang berbeza; mari kita lihat sekarang.
Jawapan
Penyumbang SuperUser Allquixotic menawarkan penjelasan yang mendalam:
Bagaimanakah pelanggan baru boleh menyertai kumpulan tanpa sama ada pengesan atau pengetahuan sekurang-kurangnya seorang ahli kawanan untuk bertukar rakan sebaya dengan?
Anda tidak boleh. Ianya mustahil.*
* (Kecuali nod pada anda rangkaian kawasan setempat kebetulan sudah menjadi simpul di DHT. Dalam kes ini, anda boleh menggunakan mekanisme penyiaran, seperti Avahi, untuk "menemui" rakan sebaya ini, dan bootstrap daripadanya. Tetapi bagaimana pula mereka bootstrap sendiri? Akhirnya, anda akan memukul keadaan di mana anda perlu menyambung ke Internet awam. Dan Internet awam adalah hanya unicast, bukan multicast, jadi anda terjebak dengan menggunakan senarai rakan sebaya yang telah ditetapkan.)
Rujukan
Bittorrent DHT dilaksanakan menerusi protokol yang dikenali sebagai Kademlia, yang merupakan konsep teoretikal khusus bagi jadual hash Teragih.
Exposition
Dengan protokol Kademlia, apabila anda menyertai rangkaian, anda menjalani prosedur bootstrapping, yang semestinya memerlukan anda tahu, terlebih dahulu, alamat IP dan pelabuhan sekurang-kurangnya satu nod sudah mengambil bahagian dalam rangkaian DHT. Penjejak yang anda sambungkan, sebagai contoh, boleh menjadi nod DHT sendiri. Sebaik sahaja anda disambungkan ke satu nod DHT, anda kemudiannya memuat turun maklumat dari DHT, yang memberikan anda maklumat penyambungan untuk lebih banyak nod, dan kemudian anda menavigasi struktur "graf" itu untuk mendapatkan sambungan ke lebih banyak nod, yang boleh memberikan kedua-duanya sambungan ke nod lain, dan data muatan (sekeping muat turun).
Saya fikir soalan sebenar anda berani - bagaimana untuk menyertai rangkaian DHT Kademlia tanpa mengetahui mana-manaahli-ahli lain - berdasarkan pada andaian palsu.
Jawapan mudah kepada soalan anda dalam huruf tebal adalah, anda tidak. Sekiranya anda tidak mengetahui apa-apa maklumat sama sekali mengenai satu hos yang mungkin mengandungi metadata DHT, anda terperangkap - anda tidak boleh memulakannya. Maksud saya, pasti, anda boleh membuat cubaan untuk mencari IP di internet awam dengan pelabuhan terbuka yang berlaku untuk menyiarkan maklumat DHT. Tetapi, lebih-lebih lagi, pelanggan BT anda dikodekan dengan beberapa IP statik atau DNS tertentu yang menyelesaikannya kepada nod DHT yang stabil, yang hanya menyediakan metadata DHT.
Pada asasnya, DHT hanya sebagai desentralisasi sebagai mekanisme penyertaan, dan kerana mekanisme bergabung cukup rapuh (tidak ada cara untuk "menyiarkan" di seluruh Internet! unicastkepada tuan rumah yang telah ditetapkan sebelumnya untuk mendapatkan data DHT), Kademlia DHT tidak benar-benar desentralisasi. Tidak dalam erti kata ketat perkataan.
Bayangkan senario ini: Seseorang yang mahukan P2P berhenti keluar dan menyiapkan serangan semua nodus DHT stabil yang biasa digunakan untuk bootstrapping. Sebaik sahaja mereka telah menyerang mereka, mereka memarinya semua nod sekaligus. Wham; setiap satu boot boot DHT nod adalah semua dalam satu kejatuhan jatuh. Bagaimana sekarang? Anda terjebak dengan menyambung pengesan berpusat untuk memuat turun senarai tradisional rakan sebaya dari mereka. Nah, jika mereka menyerang pelacak juga, maka anda benar-benar, benar-benar naik sungai. Dengan kata lain, kademlia dan keseluruhan rangkaian BT dikekang oleh keterbatasan Internet itu sendiri, di dalamnya, ada sejumlah komputer yang terhingga (dan agak kecil) yang anda mesti berjaya menyerang atau di luar talian untuk mencegah> 90% pengguna dari menyambung ke rangkaian.
Apabila nod bootstrapping "pseudo-terpusat" semuanya hilang, nod dalaman DHT, yang tidak bootstrapping kerana tiada siapa di luar DHT mengetahui mengenai nod dalaman, tidak berguna; mereka tidak boleh membawa nod baru ke dalam DHT. Jadi, kerana setiap nod dalaman terputus dari DHT dari masa ke masa, sama ada disebabkan oleh orang yang menutup komputer mereka, reboot untuk kemas kini, dan sebagainya, rangkaian akan runtuh.
Sudah tentu, untuk mengelilingi ini, seseorang boleh menggunakan klien BitTorrent yang telah disambungkan dengan senarai baru bagi nod DHT stabil atau alamat DNS yang telah ditentukan terlebih dahulu, dan mengiklankan komuniti P2P dengan lebih keras untuk menggunakan senarai baharu ini. Tetapi ini akan menjadi situasi "terdesak-lalat" di mana penyerang (pemakan nod) akan memuat turun senarai ini secara progresif, dan menargetkan nod bootstrapping baru yang berani, kemudian membawa mereka di luar talian, juga.
Bukan sahaja kita belajar jawapan kepada soalan asal tetapi kita juga belajar sedikit tentang sifat sistem BitTorrent dan kelemahannya.
Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.