Saya ingin belajar lebih banyak tentang cara berbagi file yang lebih kecil. Saya adalah pengguna yang secara teknis mahir (programmer), jadi materi yang secara teknis sudah maju tidak masalah, tetapi harus ringkas dan langsung ke intinya. Saya membutuhkan buku sumber daya / web yang bagus yang menjelaskan keseluruhan arsitektur bittorrent.
Saya tidak tertarik pada detail, hanya keseluruhan arsitektur dan terminologi seperti biji, teman sebaya, dll.
Ada saran?
sumber
Makalah yang bagus tentang masalah ini di sini
http://davidhales.name/posters/patarin-hales-delis-poster6.pdf (Catatan sebenarnya adalah
.pdf
file dan dapat dilihat dengan Acrobat Reader.)Ini file gambar yang dibuat seseorang dari isinya:
sumber
Ada video yang cukup bagus di YouTube yang menjelaskan hal ini secara visual dengan potongan kardus. Ini bukan penjelasan yang sangat teknis, tetapi bagus untuk menjelaskan ide di balik BitTorrent kepada orang-orang dengan cara yang sederhana dan mudah dimengerti.
sumber
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).
sumber