Tinjauan umum tentang protokol pesan rekan .
Klien dapat menggunakan dua protokol untuk berbagi informasi dengan rekan, TCP atau uTP (lebih dari UDP). Data ini mengikuti spesifikasi protokol bittorrent , bagian pesan rekan .
Jadi secara pemrograman, koneksi harus dimulai antara dua klien. Setelah koneksi diatur (melalui TCP atau uTP), sebuah jabat tangan bittorrent diprakarsai oleh klien yang mengambil informasi rekan jauh (ip & port) dari pelacak atau melalui DHT . Jabat tangan ini berisi info_hash yang mengidentifikasi torrent yang akan berhubungan dengan koneksi ini.
Mari kita lihat dulu bagaimana data Torrent terpotong melalui protokol. Sebuah karya adalah bagian dari data Anda berbagi melalui jaringan. Jangan sampai bingung dengan blok , yang merupakan bagian dari sepotong dibungkus menjadi sebuah paket. The blok adalah granularity untuk berbagi sepotong melalui paket, dan sepotong adalah granularity untuk berbagi Torrent melalui rekan-rekan.
Ketika koneksi dimulai, kedua klien (klien lokal, yang saya sebut LC dan klien jarak jauh, RC ) tersedak dan tidak tertarik . Tersedak berarti "Saya tidak akan menjawab pesan Anda, terlalu sibuk, tetapi saya mungkin akan mempertimbangkannya". Karenanya, tidak terkunci berarti "Saya akan menjawab pesan Anda". Tertarik tentu saja berarti saya ingin beberapa potong yang Anda miliki. Oleh karena itu, keadaan koneksi antara dua rekan dapat didefinisikan dengan empat status: LC_chocked ?, LC_interested ?, RC_chocked ?, RC_interested? Untuk memperingatkan RC bahwa saya (tidak) dicekik atau (tidak) tertarik, Saya harus mengirimnya (tidak) tertarik dan (tidak) dicekal pesan, dan secara timbal balik.
Untuk saling memberi tahu potongan mana yang mereka miliki, mereka dapat mengirim pesan bitfield segera setelah berjabat tangan. Seperti namanya, ini adalah string bit di mana setiap bit diatur ke 1
jika klien memiliki bagian aneh ini , 0
jika tidak.
Jadi jika LC adalah chocked dan tertarik dan RC memiliki unchocked dia, maka dia dapat mengirim permintaan pesan untuk meminta blok milik salah satu bagian dia tahu LC memiliki berkat bitfield pesan.
Ketika seorang rekan telah menerima seluruh bagian , dia bisa mengirim pesan bagian untuk menginformasikan semua rekan-rekan jauh sehingga mereka memperbarui bitfield terkait yang mereka pegang.
Itu adalah gambaran yang sangat mendasar, dan tentu saja tidak semua detail disediakan di sini, seperti algoritma choking dll ... Jika Anda ingin lebih detail, periksa dua tautan yang saya posting di atas, di bagian komentar (sebagai pengguna baru saya bisa dapat memiliki lebih dari dua tautan dalam pos).