Beranda » bagaimana » Bagaimana Klien Bittorrent Awalnya Menemukan Temannya?

    Bagaimana Klien Bittorrent Awalnya Menemukan Temannya?

    Ketika klien torrent Anda bergabung dengan gerombolan untuk berbagi dan mengumpulkan potongan-potongan file, bagaimana tepatnya ia tahu di mana semua rekannya berada? Baca terus ketika kami melihat-lihat mekanisme yang mendukung protokol BitTorrent.

    Sesi Tanya Jawab hari ini datang kepada kami berkat SuperUser-subdivisi Stack Exchange, pengelompokan situs web Q&A berbasis komunitas.

    Pertanyaan

    Pembaca SuperUser Steve V. memiliki pertanyaan yang sangat spesifik tentang sistem Distributed Hash Table (DHT) dalam protokol BitTorrent:

    Saya sudah membaca jawaban SuperUser dan artikel Wikipedia ini, tetapi keduanya terlalu teknis bagi saya untuk benar-benar membungkus kepala saya.

    Saya memahami gagasan pelacak: klien terhubung ke server pusat yang mengelola daftar teman sebaya dalam segerombolan.

    Saya juga memahami gagasan pertukaran teman: klien yang sudah berkerumun mengirimkan daftar lengkap rekan-rekan mereka satu sama lain. Jika teman baru ditemukan, mereka ditambahkan ke daftar.

    Pertanyaan saya adalah, bagaimana cara kerja DHT? Itu adalah, bagaimana klien baru dapat bergabung dengan gerombolan tanpa pelacak atau pengetahuan setidaknya satu anggota gerombolan untuk bertukar rekan dengan?

    (Catatan: penjelasan sederhana adalah yang terbaik.)

    Pertanyaannya pada gilirannya mendorong balasan yang sangat terperinci tentang berbagai fungsi sistem BitTorrent; mari kita melihatnya sekarang.

    Jawabannya

    Kontributor Pengguna Super, Allquixotic, menawarkan penjelasan mendalam:

    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 ada simpul di Anda jaringan area lokal kebetulan sudah menjadi simpul dalam DHT. Dalam hal ini, Anda bisa menggunakan mekanisme penyiaran, seperti Avahi, untuk "menemukan" rekan ini, dan bootstrap dari mereka. Tapi bagaimana bisa mereka bootstrap sendiri? Akhirnya, Anda akan menghadapi situasi di mana Anda harus terhubung ke Internet publik. Dan Internet publik hanya unicast, bukan multicast, jadi Anda terjebak dengan menggunakan daftar teman sebaya yang sudah ditentukan.)

    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 mengetahuinya, terlebih dahulu, alamat IP dan port setidaknya satu node sudah berpartisipasi dalam jaringan DHT. Pelacak yang Anda sambungkan, misalnya, mungkin merupakan simpul DHT itu sendiri. 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 muatan (potongan unduhan).

    Saya pikir pertanyaan Anda yang sebenarnya dalam huruf tebal - yaitu bagaimana cara bergabung dengan jaringan DHT Kademlia tanpa mengetahui apa sajaanggota lain - didasarkan pada asumsi yang salah.

    Jawaban sederhana untuk pertanyaan Anda dalam huruf tebal adalah, kamu tidak. Jika Anda sama sekali tidak mengetahui informasi APAPUN tentang satu pun host yang mungkin mengandung metadata DHT, Anda mandek - Anda bahkan tidak bisa memulai. Maksud saya, tentu saja, Anda dapat dengan paksa mencoba menemukan IP di internet publik dengan port terbuka yang kebetulan menyiarkan informasi DHT. Tetapi lebih mungkin, klien BT Anda dikodekan ke beberapa IP atau DNS statis tertentu yang teratasi menjadi simpul DHT yang stabil, yang hanya menyediakan metadata DHT.

    Pada dasarnya, DHT hanya terdesentralisasi seperti halnya mekanisme bergabung, dan karena mekanisme bergabungnya cukup rapuh (tidak ada cara untuk "menyiarkan" melalui seluruh Internet! Jadi Anda harus unicastke masing-masing host yang ditugaskan sebelumnya untuk mendapatkan data DHT), Kademlia DHT tidak sangat terdesentralisasi. Tidak dalam arti kata yang paling ketat.

    Bayangkan skenario ini: Seseorang yang ingin P2P berhenti keluar dan menyiapkan serangan semua umumnya digunakan node DHT stabil yang digunakan untuk bootstrap. Begitu mereka melakukan serangan, mereka melakukannya semua node sekaligus. Memukul; setiap simpul DHT bootstrap tunggal turun semua dalam satu gerakan. Sekarang apa? Anda terjebak dengan koneksi ke pelacak terpusat untuk mengunduh daftar teman sebaya dari mereka. Nah, jika mereka menyerang pelacak juga, maka Anda benar-benar, sangat sebuah 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 yang terhubung ke jaringan.

    Setelah node bootstrap "pseudo-terpusat" semua hilang, node interior DHT, yang tidak bootstrap karena tidak ada orang 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. Tetapi 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.

    Kami tidak hanya mempelajari jawaban atas pertanyaan awal, tetapi kami juga belajar sedikit tentang sifat sistem BitTorrent dan kerentanannya..


    Punya sesuatu untuk ditambahkan ke penjelasan? Berbunyi dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang mengerti teknologi lainnya? Lihat utas diskusi lengkap di sini.