Ringkasan
Bagaimana klien baru dapat bergabung dengan gerombolan tanpa pelacak atau pengetahuan setidaknya satu anggota gerombolan untuk bertukar rekan dengan?
Kamu tidak bisa Itu tidak mungkin.*
* (Kecuali jika simpul di jaringan area lokal Anda sudah menjadi simpul di DHT. Dalam hal ini, Anda bisa menggunakan mekanisme penyiaran, seperti Avahi, untuk "menemukan" rekan ini, dan bootstrap dari mereka. Tapi bagaimana caranya mereka bootstrap sendiri? Akhirnya, Anda akan menghadapi situasi di mana Anda perlu terhubung ke Internet publik. Dan Internet publik hanya unicast, bukan multicast, sehingga Anda terjebak dengan menggunakan daftar teman sebaya yang sudah ditentukan sebelumnya.)
Referensi
Bittorrent DHT diimplementasikan melalui protokol yang dikenal sebagai Kademlia , yang merupakan kasus khusus dari konsep teoritis tabel hash Terdistribusi .
Eksposisi
Dengan protokol Kademlia, saat Anda bergabung dengan jaringan, Anda menjalani prosedur bootstrap , yang mutlak mengharuskan Anda tahu, terlebih dahulu , alamat IP dan port setidaknya satu node yang sudah berpartisipasi dalam jaringan DHT. Pelacak yang Anda sambungkan, misalnya, mungkin merupakan simpul DHT. Setelah Anda terhubung ke satu node DHT, Anda kemudian melanjutkan untuk mengunduh informasi dari DHT, yang memberikan Anda informasi konektivitas untuk lebih banyak node, dan Anda kemudian menavigasi struktur "grafik" itu untuk mendapatkan koneksi ke semakin banyak node, yang dapat menyediakan keduanya konektivitas ke node lain, dan data payload (potongan unduhan).
Saya pikir pertanyaan Anda yang sebenarnya dalam huruf tebal - yang bagaimana untuk bergabung dengan jaringan Kademlia DHT tanpa mengetahui setiap anggota lain - didasarkan pada asumsi yang salah.
Jawaban sederhana untuk pertanyaan Anda dalam huruf tebal adalah, Anda tidak . Jika Anda sama sekali tidak mengetahui informasi APA PUN tentang satu pun host yang mungkin mengandung metadata DHT, Anda mandek - Anda bahkan tidak bisa memulai. Maksud saya, tentu saja, Anda dapat dengan brutal berusaha menemukan IP di internet publik dengan port terbuka yang kebetulan menyiarkan informasi DHT. Tetapi lebih mungkin, klien BT Anda dikodekan ke beberapa IP statis atau DNS spesifik yang memutuskan ke simpul DHT yang stabil, yang hanya menyediakan metadata DHT.
Pada dasarnya, DHT hanya terdesentralisasi seperti mekanisme penggabungan, dan karena mekanisme penggabungannya cukup rapuh (tidak ada cara untuk "menyiarkan" melalui seluruh Internet! Jadi Anda harus unicast ke masing-masing host yang ditugaskan untuk mendapatkan DHT data), Kademlia DHT tidak terlalu terdesentralisasi. Tidak dalam arti kata yang paling ketat.
Bayangkan skenario ini: Seseorang yang ingin P2P berhenti keluar dan menyiapkan serangan pada semua node DHT stabil yang umum digunakan yang digunakan untuk bootstrap. Setelah mereka melakukan serangan, mereka akan mengaktifkannya pada semua node sekaligus. Wham ; setiap simpul DHT bootstrap tunggal turun semua dalam satu gerakan. Sekarang apa? Anda tidak dapat terhubung dengan pelacak terpusat untuk mengunduh daftar teman sebaya dari mereka. Nah, jika mereka menyerang pelacak juga, maka Anda benar- benarsebuah sungai. Dengan kata lain, Kademlia dan seluruh jaringan BT dibatasi oleh keterbatasan Internet itu sendiri, dalam hal itu, ada sejumlah komputer yang terbatas (dan relatif kecil) yang harus Anda serang atau jadikan offline untuk mencegah> 90% pengguna dari terhubung ke jaringan.
Setelah node bootstrap "pseudo-terpusat" semua hilang, node interior DHT, yang bukan bootstrap karena tidak ada di luar DHT yang tahu tentang interior node , tidak berguna; mereka tidak dapat membawa node baru ke DHT. Jadi, karena setiap node interior terputus dari DHT dari waktu ke waktu, baik karena orang mematikan komputer mereka, me-reboot untuk pembaruan, dll, jaringan akan runtuh.
Tentu saja, untuk menyiasatinya, seseorang dapat menggunakan klien BitTorrent yang ditambal dengan daftar baru node DHT stabil atau alamat DNS, dan beriklan dengan keras ke komunitas P2P untuk menggunakan daftar baru ini sebagai gantinya. Tapi ini akan menjadi situasi "pukulan keras" di mana agresor (pemakan simpul) akan mengunduh daftar ini sendiri secara progresif, dan menargetkan node bootstrap baru yang berani, kemudian membawanya secara offline juga.
Jawaban singkat: Diperoleh dari file .torrent.
Ketika klien BitTorrent membuat file .torrent tanpa jejak (yaitu, ketika seseorang bersiap untuk membagikan sesuatu yang baru melalui BitTorrent), ia menambahkan kunci "simpul" (kunci seperti pada "pasangan kunci / nilai"; seperti header bagian, bukan kunci kripto) ke file .torrent yang berisi simpul DHT terdekat K yang diketahui klien itu.
http://www.bittorrent.org/beps/bep%5F0005.html#torrent-file-extensions
Jadi, ketika Anda memberi makan klien BitTorrent Anda file .torrent dari torrent pelacak yang ingin Anda unduh, ia menggunakan nilai kunci "node" dari file .torrent untuk menemukan beberapa node DHT pertamanya.
sumber
kamu tidak bisa! Anda harus tahu setidaknya satu IP dari salah satu gerombolan, ini adalah kelemahan dari jaringan P2P. Anda dapat menyiarkan secara membabi buta untuk menemukan IP pertama, tetapi dalam jaringan besar, jika semua orang melakukan itu kita akan mengalami masalah kemacetan. Anda dapat menggunakan cache, tetapi hanya dimungkinkan untuk gerombolan besar (cache alamat peer yang lebih besar). Anda selalu harus menghubungkan pelacak untuk menanyakan IP pertama.
Didistribusikan dalam DHT berarti klien tidak harus memegang semua daftar yang berisi jumlah md5 dari nama file bersama, dengan rekan yang sesuai. Daftar hash adalah bentuk menjadi bagian yang sama dan didistribusikan dengan redundansi ke seluruh kawanan. Jika peer disconnect ada tempat lain dengan bagian hashlist yang sama. Teman sebaya saling berbagi alamat kepada pemegang yang baik dari bagian hashlist.
torrent-freak menulis posting tentang hal ini
sumber
Ia memintanya.
Klien Bittorrent yang mendukung DHT menjalankan dua aplikasi peer-to-peer yang terpisah.
Yang pertama melakukan file-sharing: Segerombolan dalam bittorrent lingo adalah sekelompok rekan yang berbagi objek bittorrent (misalnya struktur file atau direktori). Setiap objek bittorent memiliki beberapa metadata yang disimpan dalam file .torrent. (Ini termasuk ukuran objek, nama folder, mungkin informasi pelacak atau node. Dll.) Hash dari metadata yang diperlukan untuk mengunduh objek bittorrent ini disebut infohash.
DHT pada dasarnya adalah aplikasi P2P kedua yang bertujuan untuk menggantikan pelacak: Ini menyimpan pasangan (infohash, segerombolan) dan memperbarui segerombolan jika menerima pesan mengumumkan. Klien baru harus memiliki pengetahuan tentang beberapa "simpul" (istilah bittorrent untuk rekan DHT) untuk mem-bootstrap informasi DHT-nya. Di sini argumen yang diberikan oleh @allquixotic berlaku. Karena MDHT saat ini terdiri dari lebih dari 7 juta rekan, penolakan serangan layanan berkelanjutan tampaknya tidak mungkin.
Ia kemudian dapat menanyakan DHT sehubungan dengan infohash dan tidak harus menggunakan pelacak atau mengenal rekan yang merupakan bagian dari kerumunan sebelumnya. Jika salah satu rekan yang dihubungi mendukung berbagi metadata, itu hanya memerlukan infohash yang dapat mengambil file .torrent dari swarm.
sumber
Sebagian besar klien jaringan p2p di-bootstrap dari daftar rekan-rekan seed mereka awalnya terhubung ke ... begitu mereka terhubung ke satu rekan bootstrap itu unduh sisanya dengan cara terdistribusi. Ini terhubung ke rekan bootstrap dan mengunduh daftar rekan-rekan DHT dan kemudian pergi ke masing-masing dan melakukan hal yang sama, dll. Dll.
Sebagai contoh:
Berikut adalah daftar node bootstrap:
https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L10
Di sinilah klien terhubung ke mereka untuk menghidrasi daftar rekan:
https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L60
Ini mirip dengan cara kerja pelacak, kecuali hampir semua orang bisa menjadi simpul bootstrap sehingga hampir tidak mungkin untuk mematikannya.
Dompet inti Bitcoin bekerja dengan cara yang sama. Ini memungkinkan Anda mengubah rekan-rekan seed bootstrap jika karena alasan tertentu yang shutdown.
sumber