Apa itu tautan DHT dan Magnet? Apa itu BitTorrent (BitTorrent)

Sehubungan dengan munculnya berita dari The Pirate Bay tentang ditinggalkannya pelacak distribusi torrent.

Inilah lalat dalam salep saya: apa itu, bagaimana manfaatnya, dan seberapa bermanfaatnya. Pertama, mari kita cari tahu apa file itu sendiri. *.torrent

*.berkas torrent— file metadata yang berisi informasi berikut:

  • URL pelacak;
  • informasi umum tentang file yang diunggah (nama, panjang, dll.);
  • Checksum (lebih tepatnya, jumlah hash) dari segmen file yang diunduh.

Apakah semuanya jelas dengan ini?

url pelacak- ini adalah alamat dari mana utorrent menerima alamat IP peserta dalam pertukaran file tertentu. Tapi Anda bisa melakukannya tanpa pelacak ini. Tapi bagaimana kita mendapatkan alamat peserta file sharing? Ada teknologi DHT dan magnet link untuk ini.

Dalam versi umum utorrent, “fungsi”, jika Anda bisa menyebutnya demikian, “peluang”, “teknologi” sudah ada:

DHT (Bahasa Inggris: Distributed Hash Table) - membantu peserta berbagi file belajar tentang satu sama lain. Bersama dengan PEX (Pertukaran rekan - perpanjangan dari protokol BitTorrent untuk bertukar daftar peserta), mereka dapat:

  • Bantu peserta menemukan satu sama lain dengan lebih cepat
    Misalnya, ada rekan X pada distribusi dengan port yang tidak tersedia. Rekan Z bergabung dengan distribusi, tetapi tidak dapat memulai koneksi dengan X sendiri dan terpaksa menunggu sampai X mengetahuinya. X baru saja mengakses pelacak dan berencana melakukannya lain kali dalam satu jam.
    Namun rekan Y sekali lagi beralih ke pelacak dan mencari tahu tentang rekan baru Z. Pada saat yang sama, Y sendiri telah lama terhubung dan terlibat dalam berbagi file dengan X, sehingga ia memberi tahu X alamat baru ini. rekan melalui PEX. Sekarang X dapat mulai terhubung ke Z.
  • Kurangi beban pada pelacak
    Dengan menerima alamat rekan melalui DHT atau PEX, klien lebih jarang mengakses pelacak, sehingga mengurangi beban.
  • Mendukung distribusi selama periode tidak tersedianya pelacak
    Jika pelacak adalah satu-satunya sumber informasi tentang rekan-rekan, maka jika tidak berfungsi, distribusi akan terhenti secara bertahap. Dengan menggunakan PEX, klien dapat bertukar informasi satu sama lain tentang rekan-rekan yang pernah melakukan sesi dengan mereka, sehingga memperlambat proses penghentian seed. DHT memungkinkan Anda mengganti pelacak sepenuhnya.
  • DHT memungkinkan distribusi tanpa pelacak
    Distribusi ini disebut tanpa pelacak. Torrent untuk itu dibuat tanpa alamat pelacak dan klien menemukan satu sama lain melalui DHT. Saat berpartisipasi dalam distribusi tanpa pelacak, klien BitTorrent memperoleh kemiripan tertentu dengan eMule, yang menggunakan jaringan Kad.

Mari kita periksa kotak centang:

  • nyalakan jaringan DHT: tidak ada pertanyaan yang muncul.
  • aktifkan DHT untuk torrent baru: semuanya tampak jelas juga
  • mencari rekan lokal: jika Anda berada di jaringan lokal penyedia, utorrent mencoba menemukan peserta dalam pertukaran file tertentu dalam ruang alamat jaringan lokal penyedia.
  • aktifkan berbagi rekan: fitur ini akan memungkinkan utorrent Anda untuk bertukar rekan yang ditemukan dengan peserta berbagi file lainnya

Cara downloadnya menggunakan DHT dan PEX

Sederhana saja: ketahui saja hash distribusinya. Itu tertanam dalam file *.torrent dan/atau terletak di tautan magnet.

Kami mengambil distribusi apa pun di rutorrents. Misalnya http://torrents.ru/forum/viewtopic.php?t=2402314
Dengan bodohnya saya mengambil film baru yang paling populer.

Klik unduh, kita mendapatkan jendela

Kami tertarik dengan tombol “tambahan”.

hapus alamat pelacak di jendela pelacak; Centang kotak di bagian bawah, klik OK dan OK. Distribusi dimulai. Semua peserta file sharing dapat ditemukan menggunakan DHT dan PEX. Tidak ada koneksi dengan pelacak, dan jika tidak ada koneksi, tidak ada pergerakan dalam peringkat, mis. tidak ada peringkat sama sekali

sepertinya magnet:?xt=guci:btih:

tapi- penunjukan kepemilikan hash BWJDXWBWYIMS6VG4FO5SSKCUEKFC44W3 ke hash bittorrent.
Di program berbagi file lainnya (Kazza, EDonkey2000, dll.) - hash Anda sendiri. Spesifikasi Hash dan Tautan Magnet.

BWJDXWBWYIMS6VG4FO5SSKCUEKFC44W3- ini adalah hash distribusi. Itu tertanam di *.torrent
Magnet yang dipublikasikan di atas akan mengunduh kembali file yang sama yang ada di distribusi http://torrents.ru/forum/viewtopic.php?t=2402314

Kemampuan DHT dan PEX

Menggunakan contoh distribusi yang selalu tutup di rutorrent: jika Anda memasang magnet, tidak mungkin untuk menutup distribusi. Hanya jika Anda menghapus seluruh topik. Dan yang kita butuhkan hanyalah mengetahui HASH. Kami mengetahui hashnya - kami membuat magnet sendiri dan memasukkannya ke utorrent.

magnet:?xt=guci:btih: + BWJDXWBWYIMS6VG4FO5SSKCUEKFC44W3

kita dapatkan

magnet:?xt=guci:btih:BWJDXWBWYIMS6VG4FO5SSKCUEKFC44W3

memberi makan

Dengan bantuan DHT dan PEX Anda dapat mendistribusikan tanpa pelacak torrent.

Kami membuat distribusi seperti biasa, tetapi kami tidak menentukan apa pun di jendela pelacak torrent. Kami segera bangun untuk mendistribusikan dan mendistribusikan kepada semua orang baik hash atau magnet yang sudah jadi

dan kami bersukacita atas distribusi dan perlombaannya.

Secara alami semuanya berfungsi kapan pengaturan yang benar utorrent. Jika semuanya sudah benar, maka Anda akan melihat di bagian bawah program

hal. http://rghost.ru/464232 - "mod" utorrent yang mengabaikan tanda privat pada pelacak torrent tertutup. Semua orang pasti punya. Tapi itu topik lain.


DI DALAM akhir-akhir ini Pelacak torrent semakin mengganggu pemegang hak cipta.
Pada artikel ini Anda akan mempelajari cara mengunduh torrent tanpa pelacak.


Pertama, mari kita cari tahu apa file itu sendiri.*.torrent
berkas .torrent— file metadata yang berisi informasi berikut:

  • URL pelacak;
  • informasi umum tentang file yang diunggah (nama, panjang, dll.);
  • Checksum (lebih tepatnya, jumlah hash) dari segmen file yang diunduh.
Apakah semuanya jelas dengan ini?


url pelacak— ini adalah alamat server tempat utorrent menerima alamat IP peserta dalam pertukaran file tertentu. Tapi Anda bisa melakukannya tanpa server ini. Tapi bagaimana kita mendapatkan alamat peserta file sharing? Ada teknologi DHT dan magnet link untuk ini.

Dalam versi umum utorrent, “fungsi”, jika Anda bisa menyebutnya demikian, “peluang”, “teknologi” sudah ada:

DHT (Bahasa Inggris: Distributed Hash Table) - membantu peserta file sharing untuk mengetahui satu sama lain. Bersama dengan PEX (Pertukaran rekan - perpanjangan dari protokol BitTorrent untuk bertukar daftar peserta), mereka dapat:

  • Bantu peserta menemukan satu sama lain dengan lebih cepat
Misalnya, ada rekan X pada distribusi dengan port yang tidak tersedia. Rekan Z bergabung dengan distribusi, tetapi tidak dapat memulai koneksi dengan X sendiri dan terpaksa menunggu sampai X mengetahuinya. X baru saja mengakses pelacak dan berencana melakukannya lain kali dalam satu jam.
Namun rekan Y sekali lagi beralih ke pelacak dan mencari tahu tentang rekan baru Z. Pada saat yang sama, Y sendiri telah lama terhubung dan terlibat dalam berbagi file dengan X, sehingga ia memberi tahu X alamat baru ini. rekan melalui PEX. Sekarang X dapat mulai terhubung ke Z.

  • Kurangi beban pada pelacak
Dengan menerima alamat rekan melalui DHT atau PEX, klien lebih jarang mengakses pelacak, sehingga mengurangi beban.


  • Mendukung distribusi selama periode tidak tersedianya pelacak
Jika pelacak adalah satu-satunya sumber informasi tentang rekan-rekan, maka jika tidak berfungsi, distribusi akan terhenti secara bertahap. Dengan menggunakan PEX, klien dapat bertukar informasi satu sama lain tentang rekan-rekan yang pernah melakukan sesi dengan mereka, sehingga memperlambat proses penghentian seed. DHT memungkinkan Anda mengganti pelacak sepenuhnya.

  • DHT memungkinkan distribusi tanpa pelacak
Distribusi ini disebut tanpa pelacak. Torrent untuk itu dibuat tanpa alamat pelacak dan klien menemukan satu sama lain melalui DHT. Saat berpartisipasi dalam distribusi tanpa pelacak, klien BitTorrent memperoleh kemiripan tertentu dengan eMule, yang menggunakan jaringan Kad.

Mari kita periksa kotak centang:

  • nyalakan jaringan DHT: tidak ada pertanyaan yang muncul.
  • aktifkan DHT untuk torrent baru: semuanya tampak jelas juga
  • mencari rekan lokal: jika Anda berada di jaringan lokal penyedia, utorrent mencoba menemukan peserta dalam pertukaran file tertentu dalam ruang alamat jaringan lokal penyedia.
  • aktifkan berbagi rekan: fitur ini akan memungkinkan utorrent Anda untuk bertukar rekan yang ditemukan dengan peserta berbagi file lainnya

Cara downloadnya menggunakan DHT dan PEX

Sederhana saja: ketahui saja hash distribusinya. Itu tertanam dalam file *.torrent dan/atau terletak di tautan magnet.

Kami mengambil distribusi apa pun di rutorrents.
Saya mengambil salah satu yang paling populer.

Klik unduh, kita mendapatkan jendela

Kami tertarik dengan tombol "tambahan".

hapus alamat pelacak di jendela pelacak; periksa tanda centang di bawah ini
Klik OK dan OK. Distribusi dimulai. Semua peserta file sharing dapat ditemukan menggunakan DHT dan PEX. Tidak ada koneksi dengan pelacak, dan jika tidak ada koneksi, tidak ada pergerakan dalam peringkat, mis. tidak ada peringkat sama sekali

sepertinya magnet:?xt=guci:btih:BWJDXWBWYIMS6VG4FO5SSKCUEKFC44W3

BWJDXWBWYIMS6VG4FO5SSKCUEKFC44W3- ini adalah hash dari distribusi. Itu tertanam di *.torrent
Magnet yang dipublikasikan di atas akan mengunduh kembali file yang sama yang ada di distribusi http://torrents.ru/forum/viewtopic.php?t=2402314

Kemampuan DHT dan PEX

menggunakan contoh distribusi yang selalu tutup di rutorrent: jika Anda memasang magnet, tidak mungkin untuk menutup distribusi. Hanya jika Anda menghapus seluruh topik. Dan yang kita butuhkan hanyalah mengetahui HASH. Kami mengetahui hashnya - kami membuat magnet sendiri dan memasukkannya ke utorrent.

magnet:?xt=guci:btih: + BWJDXWBWYIMS6VG4FO5SSKCUEKFC44W3

BitTorrent- (secara harfiah berarti "aliran bit") adalah protokol P2P yang dirancang untuk bertukar file melalui Internet. BitTorrent dibuat oleh pemrogram Bram Cohen.

Terminologi

Leecher dan kawanannya.

  • Pengumuman(umumkan) - klien menghubungi pelacak. Dengan setiap pengumuman, klien mengirimkan ke pelacak informasi tentang volume konten yang diunduh dan diunggah, dan pelacak mengirimkan ke klien daftar alamat klien lain. Klien menghubungi pelacak pada interval waktu tertentu, yang ditentukan oleh pengaturan klien dan pelacak.
  • Benih jaring- Server HTTP yang dapat digunakan sebagai sumber data, bertindak sebagai benih.
  • Tersedianya(ketersediaan, salinan terdistribusi - salinan terdistribusi) - kuantitas salinan penuh mengajukan, tersedia untuk klien. Setiap benih menambahkan 1,0 ke angka ini; Leecher meningkatkan ketersediaan berdasarkan kuantitas unduhan, yang tidak dimiliki oleh leecher lain. Misalnya, jika ada satu seed dan dua leecher dalam distribusi, masing-masing telah mengunduh 50% file (bagian yang diunduh sama), maka ketersediaannya adalah 1,50.
  • Terhenti(tersedak - terhenti, tercekik) - klien yang pertukaran datanya terhenti. Entah saluran keluarannya tersumbat sepenuhnya dan dia tidak dapat mengirimkan apa pun (mencapai max_uploads), atau memang demikian benih dan dia tidak perlu menerima apa pun.
  • Tertarik(tertarik) - peserta yang ingin menerima potongan file yang dimiliki peserta lain. Misalnya, jika pelanggan A tidak memiliki beberapa bagian yang dimiliki pelanggan B, maka pelanggan A dianggap tertarik untuk berdagang dengan pelanggan B.
  • Indeks(indeks) adalah daftar file .torrent (biasanya termasuk deskripsi dan informasi lainnya) yang dikelola oleh sebuah situs web ( pengindeks) dan dapat dicari. Situs pengindeksan juga bisa menjadi pelacak.
  • Lich, Kadang-kadang leecher(lintah - lintah) - rekan yang belum memiliki semua segmen, yaitu terus mengunduh. Istilah ini sering digunakan dalam arti negatif seperti di jaringan berbagi file lainnya: pengguna yang mengunggah jauh lebih sedikit daripada yang mengunduh.
  • Torrent beracun- situasi ketika beberapa rekan mendistribusikan segmen yang rusak.
  • Pesta(rekan - kaki tangan) - klien yang berpartisipasi dalam distribusi.
  • Silangkan jari Anda, Permintaan kikis(mengikis - mengikis, menggaruk) - prosesnya serupa pengumuman, tetapi klien hanya meminta statistik torrent, informasi tentang klien yang terhubung, dan kemampuan untuk menghubungi mereka untuk pertukaran.
  • Mengabaikan(dilecehkan) - klien terhubung ke penerima, tetapi belum mengirim data ke sana selama lebih dari 60 detik.
  • Memberi secara gratis(seeding) - proses mendistribusikan file menggunakan protokol BitTorrent.
  • Peringkat(rasio berbagi) - rasio yang diunggah dan diunduh.
  • Roy(swarm) - kumpulan semua rekan yang berpartisipasi dalam distribusi.
  • Segmen, Bagian(bagian - bagian) - semua file yang akan ditransfer dibagi menjadi potongan-potongan kecil - segmen, yang kemudian ditransmisikan melalui jaringan dalam urutan acak untuk mengoptimalkan pertukaran.
  • Sid, Kadang-kadang sider(seeder - penabur) - rekan yang memiliki semua segmen file yang didistribusikan, yaitu distributor awal file, atau yang telah mengunduh seluruh file dan tetap untuk didistribusikan.
  • Penyemaian super|Benih super - modus khusus penyemaian di beberapa klien BitTorrent, mencoba meminimalkan jumlah data yang akan diberikan seeder sebelum pengunduh pertama muncul. Superseed menawarkan setiap rekan untuk mengunduh hanya satu segmen file, yang belum dimiliki rekan lainnya. Seed kemudian tidak memberikan segmen lebih lanjut kepada rekan ini sampai ia menerima konfirmasi dari rekan lain bahwa mereka juga telah menerima segmen ini. Oleh karena itu, superseed mencoba untuk menghindari memberikan segmen yang sama berulang kali, dan mencoba memberikan segmen hanya kepada rekan-rekan yang secara aktif meneruskannya kepada orang lain.
  • hash(hash) adalah serangkaian karakter alfanumerik dalam file .torrent yang digunakan klien untuk memverifikasi data yang dikirimkan. Setiap bagian, setelah diterima, pertama-tama diperiksa untuk kecocokan hash. Jika pemeriksaan gagal, data akan dibuang dan diminta lagi.
  • Kunci sandi- pengautentikasi pengguna pada pelacak non-anonim. Terkandung dalam file torrent yang dapat diunduh. Dengan cara ini, jika seseorang mendapatkan akses ke file torrent (misalnya, pengguna secara tidak sengaja membagikannya), mereka akan dapat bekerja dengan pelacak atas nama pengguna tersebut. Pelacak dapat mengubah kunci sandi atas permintaan pengguna, tetapi dalam hal ini semua file torrent sebelumnya harus diunduh (atau diedit secara manual) agar dapat terus mendistribusikan file yang diunduh.
  • URL Pengumuman(umumkan URL) - alamat pelacak tempat klien membuat pengumuman. Di banyak klien, ini disebut "URL Pelacak". Mungkin termasuk "kunci sandi" - kode unik, ditetapkan oleh pelacak ke akun pengguna, membantu mengidentifikasinya di pelacak (ditambahkan ke URL pengumuman di file *.torrent itu sendiri saat mengunduh).

Fitur Umum

Tidak ada antrian untuk mengunduh.
- File diunduh dalam segmen kecil; Semakin sulit segmen tersebut diakses, semakin sering segmen tersebut ditransmisikan. Dengan demikian, kehadiran “seeder” di jaringan dengan berkas lengkap tidak perlu diunduh - sistem mendistribusikan segmen di antara "rekan" sehingga mereka selanjutnya dapat bertukar segmen yang hilang.
- Klien (rekan) bertukar segmen secara langsung satu sama lain, sesuai dengan prinsip "Anda - untuk saya, saya - untuk Anda".
- Segmen yang diunggah segera tersedia untuk klien lain.
- Integritas setiap segmen dikontrol.
- Beberapa file dapat bertindak sebagai objek unduhan (misalnya, isi direktori).

Protokol dan port

Klien terhubung ke pelacak menggunakan protokol TCP.

Klien terhubung satu sama lain menggunakan protokol TCP.

Nomor port tidak ditetapkan dalam spesifikasi protokol dan dapat diubah jika perlu. Apalagi di saat ini kebanyakan pelacak menggunakan reguler Pelabuhan HTTP 80, dan disarankan bagi klien untuk memilih port masuk secara acak.

Jaringan DHT di klien BitTorrent menggunakan protokol UDP.

Lebih lanjut tentang DHT

DHT

DHT (Tabel hash terdistribusi) adalah protokol yang memungkinkan klien bittorrent menemukan satu sama lain tanpa menggunakan pelacak.

Klien dengan dukungan DHT membentuk jaringan DHT yang umum, dan saling membantu menemukan peserta dalam distribusi yang sama.

Dukungan DHT tersedia di klien Mainline, µTorrent, KTorrent, BitSpirit, dan BitComet. Azureus memiliki implementasi DHT sendiri, yang berarti klien Azureus membentuk jaringan DHT mereka sendiri yang terpisah.

PEX

PEX (Pertukaran rekan) merupakan perpanjangan dari protokol BT untuk pertukaran daftar peserta.

PEX diimplementasikan sebagai pesan tambahan antara klien yang sudah terhubung untuk bertukar segmen file menggunakan protokol BT biasa.

Berbeda dengan pelacak dan DHT, PEX hanya dapat menjadi alat bantu untuk mendapatkan rekan, karena tidak dapat membantu rekan baru untuk terhubung ke distribusi.

PEX tersedia di klien Azureus, BitComet, µTorrent, dan BitTornado, dan setiap klien mengimplementasikannya secara berbeda, sehingga hanya klien identik yang dapat menggunakan PEX. Sejak versi 3, Azureus (Vuze) dapat menukar PEX dengan uTorrent dan BitTorrent.

Fungsi

Baik DHT dan PEX sebenarnya menjalankan fungsi utama pelacak - mereka membantu peserta berbagi file untuk mengenal satu sama lain. Mereka dapat:

1. Membantu peserta lebih cepat teman menemukan teman

Misalnya, ada rekan X pada distribusi dengan port yang tidak tersedia. Rekan Z terhubung ke distribusi, tetapi tidak dapat memulai koneksi ke X sendiri, dan terpaksa menunggu hingga X mengetahuinya sendiri. X baru saja mengakses pelacak dan berencana melakukannya lain kali dalam satu jam.

Namun rekan Y sekali lagi beralih ke pelacak dan mencari tahu tentang rekan baru Z. Pada saat yang sama, Y sendiri telah lama terhubung dan terlibat dalam berbagi file dengan X, sehingga ia memberi tahu X alamat baru ini. rekan melalui PEX. Sekarang X dapat mulai terhubung ke Z.

2. Kurangi beban pada pelacak

Beberapa klien, misalnya Azureus, yang menerima alamat rekan melalui DHT atau PEX, cenderung tidak menghubungi pelacak untuk mendapatkan daftar rekan.

3. Jaga agar peserta tetap berkumpul selama periode tidak tersedianya pelacak

Diketahui bahwa jika pelacak adalah satu-satunya sumber informasi tentang rekan-rekan, maka jika tidak berfungsi, distribusinya akan terhenti secara bertahap. Klien sudah ingat daftar terkenal alamat rekan-rekan lain, tetapi secara bertahap daftar ini menjadi usang - beberapa pengguna terputus dari distribusi, beberapa mengubah alamat IP mereka, dan pengguna baru tidak dapat terhubung ke distribusi sama sekali.

PEX memungkinkan Anda memperlambat proses disintegrasi segerombolan peserta, dan DHT memungkinkan Anda mengganti pelacak sepenuhnya, sehingga peserta baru pun dapat terhubung ke distribusi.

4. DHT memungkinkan distribusi tanpa pelacak sama sekali

Distribusi ini disebut tanpa pelacak. Torrent untuk itu dibuat tanpa alamat pelacak, dan klien menemukan satu sama lain melalui jaringan DHT.

Saat berpartisipasi dalam distribusi BT tanpa pelacak, klien memperoleh kesamaan tertentu dengan eMule, yang menggunakan jaringan KAD.

Bagaimana DHT bekerja

Implementasi jaringan terdistribusi di klien BT didasarkan pada varian DHT yang disebut Kademlia. Secara umum, DHT (Tabel hash terdistribusi) berarti sistem terdistribusi yang terdesentralisasi untuk digabungkan jumlah besar node yang terus-menerus menghilang dan muncul serta transmisi pesan yang efisien di antara mereka. Berdasarkan struktur DHT, masih banyak lagi sistem yang kompleks seperti berbagi file P2P, cache web kooperatif, layanan DNS dll.

penggunaan DHT protokol UDP. Klien BT mendengarkan nomor port UDP yang sama yang mereka gunakan untuk koneksi TCP masuk. Jika Anda aktif menggunakan DHT, buka ini Pelabuhan UDP untuk akses dari luar diinginkan, tetapi tidak perlu - DHT akan bekerja seperti itu.

Setiap klien BT yang terhubung adalah node terpisah di jaringan DHT. Ia memiliki ID (pengidentifikasi) uniknya sendiri, yang dipilih secara acak dari ruang 160-bit yang sama dengan infohash torrent.

Setiap node memelihara tabel perutean yang berisi informasi kontak untuk banyak node yang "lebih dekat" dengannya, dan untuk beberapa node yang lebih jauh. "Kedekatan" dua node dihitung dari "kesamaan" ID mereka, dan tidak ada hubungannya dengan kedekatan geografisnya. Ketika sebuah node ingin mencari rekan untuk distribusi tertentu, ia membandingkan infohash dari distribusi tersebut dengan ID dari node yang diketahuinya, dan kemudian mengirimkan permintaan ke node yang ID-nya paling mirip dengan infohash ini. Node tersebut mengembalikan kepadanya alamat node yang ID-nya bahkan lebih dekat dengan infohash torrent.

Kemudian node kita mengirimkan permintaan ke node baru tersebut, dan menerima dari sana alamat node berikutnya, yang ID-nya bahkan lebih mirip dengan infohash torrent.

Dengan demikian, permintaan dari klien yang berpartisipasi dalam distribusi torrent dengan infohash tertentu secara bertahap berbondong-bondong ke node yang ID-nya paling mirip dengan infohash ini. Node ini mengingat permintaan sebelumnya, dan semua node yang meminta berikutnya akan mengembalikan alamat rekan sebelumnya dari distribusi yang sama.

Kunci pribadi

Pada pelacak publik (terbuka), di mana siapa pun dapat mengunduh torrent dan berpartisipasi dalam distribusinya, DHT dan PEX memberikan manfaat bagi semua peserta.

Untuk pelacak pribadi (tertutup), pertama-tama penting bahwa hanya pengguna terdaftar yang dapat berpartisipasi dalam distribusi, dan mereka mengikuti aturan tertentu. Ketika klien pertama kali menghubunginya, pelacak pribadi memiliki kemampuan untuk mencegahnya berpartisipasi dalam distribusi, hanya dengan tidak memberi tahu dia alamat klien lain yang berpartisipasi. Oleh karena itu, penting bagi pelacak tertutup bahwa klien tidak menerima alamat ini melalui DHT/PEX.

DHT dan PEX muncul di klien Azureus dan BitComet sekitar musim panas 2005. Administrator dari banyak pelacak pribadi tidak senang dengan fungsi baru ini, dan oleh karena itu mulai melarang klien versi baru ini di pelacak.

Kemudian pengembang klien menyarankan kunci baru di dalam file torrent: pribadi. Jika sama dengan 1, maka klien wajib menonaktifkan DHT/PEX secara otomatis untuk torrent ini, apa pun keinginan pengguna. Torrent ini disebut Torrent Aman.

Hampir semua pelacak pribadi modern secara paksa memasukkan private:1 ke semua torrent yang diposting di pelacak, dan juga melarang beberapa versi usang klien yang mendukung DHT atau PEX, tetapi belum mengetahui tentang kunci pribadi. Pengguna pelacak tidak bisa menggunakan DHT/PEX pada distribusi, dan tidak ada masalah.

Perhatikan bahwa kehadiran kunci pribadi mengubah infohash torrent, jadi menghapusnya dari file torrent tidak ada gunanya - klien lain tetap tidak akan mengenali torrent yang diubah.

Haruskah saya menggunakannya?

  • Semua torrent Anda berasal dari pelacak pribadi.

Jika Anda mengaktifkan DHT di klien, ternyata klien terhubung ke jaringan DHT, menghabiskan lalu lintas di sana, membantu klien lain menemukan rekan yang mereka butuhkan, tetapi tidak menggunakan DHT untuk dirinya sendiri di distribusi mana pun. Jika Anda tidak ingin membuang lalu lintas tambahan, mungkin lebih baik menonaktifkan DHT di klien.

  • Anda mengunduh distribusi dari pelacak publik

Jika pelacak mengembalikan Anda banyak rekan dan jumlahnya cukup untuk mencapai kecepatan unduh yang baik, maka Anda mungkin tidak memerlukan DHT/PEX. Jika tidak, maka ada baiknya mencoba mengaktifkannya (baik di klien dan properti distribusi), ini dapat membantu Anda menemukan lebih banyak sumber.

  • Anda mengunduh distribusi dari pelacak pribadi tanpa kunci pribadi yang dipaksakan

Dari pelacak utama berbahasa Rusia pada akhir tahun 2006, ini adalah torrents.ru. Kemampuan untuk menggunakan DHT/PEX dalam distribusi pada pelacak ini diserahkan kepada distribusi (pembuat torrent).

Secara umum, situasi ini tidak bisa dianggap normal, terutama pada pelacak dengan sistem kunci sandi. Faktanya adalah bahwa di klien BitComet dan Azureus, melalui DHT, pengguna dapat mengetahui kunci sandi pengguna lain, dan pengguna yang tidak jujur ​​​​dapat menggunakan kunci sandi orang lain untuk mengunduh di bawah milik orang lain. akun. Oleh karena itu, menurut setidaknya Pada klien pelacak tersebut, disarankan untuk mematikan DHT.

DHT dan statistik

Bagian ini hanya membahas pelacak pribadi, yang kunci pribadinya tidak dimasukkan secara paksa ke dalam torrent, dan pada beberapa distribusi (tergantung pada apakah distributor itu sendiri yang memasukkan kunci pribadi ke dalam torrent) Anda dapat menggunakan DHT dan PEX.

Seringkali ada pendapat bahwa DHT yang diaktifkan di klien memengaruhi pelacakan statistik klien oleh pelacak, misalnya, “didistribusikan melalui DHT, yang berarti statistik melewati pelacak”. Ini tidak benar.

Pertama, DHT/PEX hanya digunakan untuk mendapatkan alamat peer. Tidak ada berbagi file atau penghitungan statistik apa pun di dalamnya. Klien melaporkan statistik data yang diunduh dan diunggah hanya ke pelacak.

Artinya, “didistribusikan melalui DHT” sebenarnya berarti “Saya menerima informasi tentang beberapa (atau semua) rekan melalui DHT, dan mungkin beberapa rekan juga menemukan saya melalui DHT.”

Kedua, meskipun klien biasanya mengetahui dari mana mereka menerima alamat rekan, tidak ada klien yang memisahkan lalu lintas menjadi “diterima/dikirim ke rekan DHT” dan “diterima/dikirim ke rekan yang diterima dari pelacak”. Sekalipun klien ingin melakukan ini, akan sulit bagi klien untuk melakukan hal ini - beberapa rekan dapat diterima baik dari pelacak maupun melalui DHT atau PEX, dan seringkali klien tidak mengetahui bagaimana alamatnya diterima oleh rekan tersebut. itulah yang memulai koneksi ke sana.

Klien melaporkan ke pelacak total data tentang volume yang diunduh dan ditransfer ke semua rekan yang berkomunikasi dengannya, terlepas dari apakah klien mengetahui tentang masing-masing rekan melalui pelacak, DHT atau PEX, atau apakah rekan tersebut bahkan memulai koneksi itu sendiri. Artinya, bahkan jika, karena DHT/PEX, pengguna “kiri” (yang tidak mengakses pelacak) muncul di distribusi, klien akan tetap melaporkan ke pelacak segala sesuatu yang telah mereka unduh dan berikan.

Penghitungan statistik yang benar hanya bergantung pada keadaan pelacak: pelacak berfungsi - statistik diperhitungkan, jika tidak berfungsi - statistik tidak diperhitungkan. Hanya dalam kasus pelacak yang tidak berfungsi dalam waktu lama, DHT/PEX dapat memainkan peran tidak langsung, mencegah berbagi file agar tidak mati secara bertahap dalam “distribusi tanpa memperhitungkan statistik akun”.

Berkas metadata

Untuk setiap file yang didistribusikan, file metadata dengan ekstensi .torrent dibuat, yang berisi informasi berikut:

  • URL pelacak;
  • informasi umum tentang file yang diunggah (nama, panjang, dll.);
  • checksum (lebih tepatnya, jumlah hash SHA1) dari segmen file yang diunduh.

File metadata dapat didistribusikan melalui saluran komunikasi apa pun - misalnya, file tersebut (atau tautan ke saluran tersebut) dapat diposting di server web, ditempatkan di halaman beranda pengguna jaringan, dikirim melalui e-mail, publikasikan di blog atau umpan berita RSS.

Klien mulai mengunduh dengan menerima file dengan metadata yang berisi tautan ke pelacak.

Pelacak

Tracker (pelacak bahasa Inggris) adalah server khusus yang berjalan protokol HTTP. Pelacak diperlukan agar klien dapat menemukan satu sama lain. Faktanya, pelacak menyimpan alamat IP, port klien masuk, dan hash yang secara unik mengidentifikasi objek yang terlibat dalam pengunduhan. Menurut standar, nama file tidak disimpan di pelacak, dan tidak dapat ditemukan dengan jumlah hash. Namun dalam praktiknya, pelacak seringkali selain fungsi utamanya juga berfungsi sebagai server web kecil. Server tersebut menyimpan file metadata dan deskripsi file yang didistribusikan, menyediakan statistik pengunduhan file yang berbeda, menunjukkan jumlah rekan yang terhubung saat ini, dll.

Lebih lanjut tentang pelacak

Pelacak BitTorrent

Pelacak BitTorrent adalah server web yang mengoordinasikan klien BitTorrent.
Koordinasi klien - fungsi utama pelacak BitTorrent adalah memproses permintaan klien.
Setiap klien secara berkala menghubungi pelacak dengan permintaan, yang meliputi:

  • info_hash - hash unik dari file torrent
  • pelabuhan - Pelabuhan TCP, dimana klien menunggu koneksi dari klien lain
  • jumlah data yang berhasil ditukar klien dengan klien lain
  • dan beberapa informasi lainnya.

Permintaan ini adalah GET reguler permintaan HTTP, di mana informasi dikodekan menggunakan protokol Bencode khusus.

Jika beberapa file torrent aktif dibuka di klien BitTorrent, maka permintaan terpisah digunakan untuk masing-masing file, yang sama sekali tidak ada hubungannya dengan yang lain. Interval antara permintaan untuk setiap torrent bergantung pada pengaturan klien dan biasanya berkisar antara 30 hingga 60 menit.

Pelacak BitTorrent, menggunakan info_hash, mengkompilasi daftar alamat IP dan port klien yang berpartisipasi dalam setiap distribusi individual. Pelacak mengembalikan daftar tersebut ke setiap klien sebagai respons terhadap permintaan berikutnya, dan klien menggunakannya untuk membuat koneksi dengan klien lain.

Peran pelacak

Dengan demikian, pelacak “menghubungkan” klien satu sama lain, tetapi tidak secara langsung berpartisipasi dalam pertukaran data dari file yang didistribusikan. Selain itu, pada prinsipnya, pelacak dapat bekerja tanpa informasi apa pun tentang file-file ini, karena klien hanya memberitahukannya info_hash.

Pelacak dianggap sebagai titik "lemah" dari sistem BitTorrent, karena ketika dinonaktifkan, klien baru tidak dapat "menemukan" satu sama lain. Pada saat yang sama, klien yang sudah berpartisipasi dalam distribusi dapat melanjutkan berbagi file untuk beberapa waktu, secara bertahap kehilangan mereka yang terputus atau yang alamat IP dinamisnya berubah.

Untuk mengatasi masalah ini, pelacak cadangan atau protokol DHT tanpa pelacak khusus dapat digunakan.

Fitur tambahan

Sebagian besar implementasi pelacak, selain koordinasi klien, juga memilikinya fitur tambahan, dapat diakses oleh pengguna dengan browser melalui server web biasa, seringkali dengan alamat atau port yang berbeda dari antarmuka untuk permintaan klien.

Dengan demikian, hampir semua pelacak menampilkan statistik distribusi, yaitu jumlah seed dan peer di setiap distribusi, total volume data yang ditransfer antar klien, dan informasi lain yang tersedia bagi mereka.

Pelacak sering kali digunakan untuk menyimpan file torrent dan deskripsinya.

Pelacak pribadi

Pelacak pribadi adalah pelacak yang membatasi akses ke pengguna, biasanya dengan mewajibkan pendaftaran akun.

Salah satu alasan munculnya pelacak pribadi adalah asimetri saluran akses Internet pengguna. Selama mengunduh torrent, rata-rata pengguna berhasil memberikan sebagian kecil datanya kepada pengguna lain, sementara banyak pengguna, setelah menerima file yang diinginkan segera tutup klien torrent. Akibatnya, ketersediaan torrent berkurang dan beban yang sangat besar dibebankan pada distributor asli file tersebut.

Biasanya, pelacak pribadi mencatat statistik untuk setiap pengguna mengenai jumlah yang “diunduh” dan “dibagikan” oleh pengguna lain, dan memerlukan pemeliharaan rasio minimum dari kedua jumlah tersebut. Akibatnya, ketersediaan dan kecepatan pengunduhan torrent pada pelacak pribadi biasanya lebih tinggi dibandingkan pelacak publik.

Untuk mengidentifikasi permintaan dari klien (program) pengguna, pelacak menggunakan alamat IP pengguna atau kunci sandi unik untuk setiap pengguna, yang ditambahkan oleh pelacak ke URL pengumuman file torrent saat pengguna mengunduhnya.

Implementasi pelacak

Ada implementasi pelacak yang berbeda, misalnya sebagai server web terpisah, sebagai modul untuk pihak ketiga server HTTP(misalnya Apache), atau dalam bentuk mesin website, ditulis misalnya dalam PHP atau JSP.

Bekerja tanpa pelacak

Dalam versi protokol yang baru, sistem tanpa pelacak telah dikembangkan untuk memecahkan beberapa masalah masalah sebelumnya. Kegagalan pelacak pada sistem tersebut tidak secara otomatis menyebabkan kegagalan seluruh jaringan.

Dimulai dengan klien resmi versi 4.2.0, ia telah mengimplementasikan fungsi tanpa pelacak berdasarkan protokol Kademlia. Dalam sistem seperti itu, pelacak tersedia secara desentralisasi, pada klien, dalam bentuk tabel hash terdistribusi.

Saat ini, tidak semua klien menggunakan teman yang cocok protokol dengan seorang teman. Kompatibel dengan BitComet, µTorrent, KTorrent dan klien resmi BitTorrent. Azureus juga memiliki mode tanpa pelacak, tetapi implementasinya berbeda dari mode resmi, sehingga tidak dapat bekerja melalui DHT dengan klien di atas.

Cara kerja protokol BitTorrent

Sebelum memulai pengunduhan, klien terhubung ke pelacak, memberitahukan alamatnya dan jumlah hash dari file yang diminta, sebagai tanggapan, klien menerima alamat klien lain yang mengunduh atau mendistribusikan file yang sama. Selanjutnya, klien secara berkala memberi tahu pelacak tentang kemajuannya dan menerimanya daftar yang diperbarui alamat.

Klien terhubung satu sama lain dan bertukar segmen file tanpa partisipasi langsung dari pelacak. Untuk pekerjaan yang efisien Jaringan BitTorrent membutuhkan klien sebanyak mungkin untuk dapat menerima koneksi masuk. Salah pengaturan NAT atau firewall dapat mencegah hal ini.

Saat terhubung, klien langsung bertukar informasi tentang segmen yang dimilikinya. Klien yang ingin mendownload segmen mengirimkan permintaan, dan jika klien kedua siap mendownload, ia menerima segmen ini. Setelah ini klien memeriksa checksum segmen dan memberi tahu semua rekan yang terhubung tentang keberadaan segmen ini.

Setiap klien memiliki kemampuan untuk memblokir sementara pengembalian ke klien lain (Bahasa Inggris tersedak). Hal ini dilakukan untuk lebih banyak lagi penggunaan yang efektif saluran kembali. Selain itu, ketika memilih siapa yang akan dibuka blokirnya, preferensi diberikan kepada rekan yang telah mentransfer banyak segmen ke klien ini. Jadi, rekan-rekan dengan kecepatan yang bagus penganugerahan saling menyemangati sesuai dengan prinsip "kamu - untukku, aku - untuk kamu".

Penyemaian super

Super seeding adalah metode yang diterapkan pada klien BitTorrent yang pembuatnya mencoba meminimalkan jumlah data sebelum pengunduhan pertama dari rekannya. Metode ini disusun oleh John Hoffman dan pertama kali diterapkan di klien BitTornado pada pertengahan tahun 2003.

Super seed adalah perubahan perilaku seeder dan tidak dapat dilakukan tanpa melanggar protokol BitTorrent. Namun, hal ini tidak dinyatakan oleh pengembang protokol, Bram Cohen, maupun di klien resminya.

Benih super berfungsi bila hanya ada satu benih yang tersedia. Faktanya, ini memaksa pengguna untuk berbagi data yang diunduh. Klien yang telah memberikan bagian mana pun dari file kepada satu peserta berhenti mentransfer data hingga ia menemukan salinan kedua dari bagian ini di jaringan. Karena banyak peserta tidak mampu atau tidak mau menyediakan data yang diunduh kepada orang lain, kecepatan keseluruhan mundur turun. DI DALAM modus biasa Namun, tidak seperti super seed, setiap orang selalu menerima informasi yang diminta, jika tersedia, sehingga rata-rata kecepatan transfer data di dalamnya lebih tinggi.

Benih super efektif dalam pendistribusian dengan sejumlah besar goyang. Dengan sekelompok kecil orang (2-3 orang), klien mereka, karena berbagai alasan, mungkin menolak untuk menjalin kontak satu sama lain. Dalam hal ini, super seed yang diaktifkan akan memaksa klien menunggu hingga data tersedia. Ketika jumlah pengunduh banyak (10-20 orang), cukup memberikan setiap bagian file satu kali saja, kemudian klien akan dapat menukarnya satu sama lain, dan masing-masing dari mereka akan menerima seluruh file.

Program klien

Lintas platform:

  • aria2 - mendukung HTTP, FTP, BitTorrent; File Metalink 3.0
  • Azureus - tertulis di bahasa jawa, oleh karena itu ini bersifat lintas platform;
  • BitTornado adalah klien lintas platform yang ditulis bahasa piton;
  • FoxTorrent - ekstensi untuk peramban Mozilla Firefox, yang mengimplementasikan fungsi klien BitTorrent;
  • mlDonkey - klien lintas platform;
  • Browser Opera mendukung pengunduhan torrent mulai dari versi 9.0, tetapi klien torrentnya tidak kompatibel dengan banyak pelacak.
  • TorrentFlux - ditulis dalam PHP, berjalan di server Web jarak jauh sebagai skrip PHP, memungkinkan Anda untuk tidak menyalakan komputer sepanjang waktu, tetapi pada saat yang sama mengunduh dan mendistribusikan torrent.

Untuk sistem mirip UNIX:

  • BTPD- klien konsol untuk Unix/GNU+Linux, ditulis dalam C++; bekerja dalam mode daemon;
  • CTorrent adalah klien konsol untuk Unix/GNU+Linux, yang menghentikan pengembangan pada tahun 2004;
  • Deluge adalah klien GNU/Linux yang ditulis dengan Python; menggunakan GTK;
  • KTorrent - menggunakan perpustakaan Qt; bekerja di lingkungan KDE;
  • rTorrent - klien konsol untuk UNIX/GNU+Linux, ditulis dalam C++; menggunakan perpustakaan ncurses dan libTorrent;
  • Transmisi adalah klien untuk Mac OS X, FreeBSD, OpenBSD, NetBSD, GNU/Linux dan BeOS, menggunakan GTK.

Untuk Microsoft Windows dan Windows NT:

  • BitKomet;
  • Dapatkan Flash;
  • Dapatkan Benar.
  • Shareaza - mendukung pekerjaan dengan beberapa jaringan berbagi file, termasuk BitTorrent
  • XTorrent;
  • BitRocket

") adalah kelas sistem terdistribusi terdesentralisasi yang menyediakan layanan pencarian, pada prinsipnya mirip dengan tabel hash, dan memiliki struktur: (nama, nilai), disimpan dalam DHT, dan setiap node yang berpartisipasi secara rasional dapat mencari nilai yang terkait dengan nama tertentu. Tanggung jawab untuk menjaga hubungan antara nama dan nilai dibagi antar node, jadi mengubah kumpulan peserta adalah alasannya jumlah minimal pecah. Hal ini memungkinkan DHT untuk dengan mudah menskalakan dan terus memantau penambahan/penghapusan node dan kesalahan dalam operasinya.

DHT adalah kerangka kerja yang dapat digunakan untuk membangun banyak hal layanan yang komprehensif, seperti didistribusikan sistem file, distribusi file peer-to-peer dan sistem distribusi konten, cache web kooperatif, pengiriman multicast, anycast, layanan dan sistem nama domain pesan instan. Jaringan terdistribusi utama yang menggunakan DHT termasuk BitTorrent, jaringan eDonkey, YaCy, dan Coral Content Distribution Network.

Cerita

Penelitian di bidang DHT pada awalnya dimotivasi khususnya oleh sistem peer-to-peer seperti Napster, Gnutella, Freenet, yang menggunakan sumber daya yang didistribusikan di Internet untuk membuat satu aplikasi. Secara khusus, mereka menggunakan yang canggih keluaran dan volume perangkat keras untuk menyediakan layanan distribusi file. Sistem ini berbeda dalam cara mereka menemukan data rekan:

  • Napster memiliki server indeks pusat: setiap node, setelah bergabung, harus mengirimkan daftar file yang disimpan secara lokal ke server, yang harus mencari dan mengirim kueri ke node yang berisi hasilnya. Komponen utama ini membuat sistem rentan terhadap serangan dan risiko.
  • Gnutella dan jaringan serupa beralih ke model kueri banjir - pada dasarnya, setiap pencarian akan menghasilkan pesan yang dikirim ke mesin mana pun di jaringan. Meskipun menghindari kegagalan terpusat, metode ini secara signifikan kurang efektif dibandingkan Napster.
  • Terakhir, Freenet juga terdistribusi sepenuhnya, namun perutean bekerja berdasarkan kunci heuristik, yang mana setiap file memiliki kunci yang terkait dengannya, dan file dengan kunci serupa cenderung berkumpul bersama pada kumpulan node yang serupa. Permintaan tersebut kemungkinan besar diarahkan ke klaster tersebut tanpa perlu melakukan jajak pendapat terhadap semua rekan. Namun Freenet tidak bisa menjamin data tersebut akan ditemukan.

DHT menggunakan perutean berbasis kunci yang lebih terstruktur untuk mencapai desentralisasi Gnutella dan Freenet, serta efisiensi dan hasil Napster yang terjamin. Salah satu kelemahannya adalah, seperti Freenet, DHT hanya mendukung pencarian pencocokan tepat, bukan pencarian. kata kunci, meskipun kemampuan ini dapat dilapiskan di atas DHT.

Properti

DHT dicirikan oleh sifat-sifat berikut:

  • desentralisasi: suatu bentuk sistem simpul kolektif tanpa koordinasi;
  • perluasan: sistem akan berfungsi sama efektifnya dengan ribuan atau jutaan node;
  • toleransi kesalahan: sistem akan sama andalnya (dalam beberapa hal) dengan node yang terus-menerus terhubung, terputus, dan menimbulkan kesalahan.

Teknik utama untuk mencapai tujuan ini adalah bahwa setiap node harus berkoordinasi hanya dengan beberapa node dalam sistem - biasanya O(log N), Di mana N- jumlah peserta (lihat di bawah) - sehingga hanya sejumlah pekerjaan yang dilakukan untuk setiap perubahan jumlah peserta.

Beberapa proyek DHT bertujuan untuk memberikan perlindungan terhadap pengguna jahat dan mengizinkan peserta untuk tetap anonim, meskipun hal ini kurang umum dibandingkan di banyak sistem P2P lainnya (terutama saat berbagi file); lihat P2P anonim.

Terakhir, DHT harus berurusan dengan sistem terdistribusi yang lebih tradisional seperti penyeimbangan beban, integritas data, dan kinerja (terutama memastikan bahwa operasi seperti perutean dan penyimpanan atau pencarian data selesai dengan cepat).

Struktur

Struktur DHT dapat dipecah menjadi beberapa komponen utama. Hal ini didasarkan pada keyspace abstrak, seperti sekumpulan string 160-bit (jumlah bit dapat bervariasi). Skema partisi ruang kunci mendistribusikan kepemilikan kunci di antara node yang berpartisipasi. Jaringan overlay kemudian menghubungkan node untuk membantu menemukan pemilik kunci apa pun di ruang kunci.

Setelah semua komponen berada di tempatnya, penggunaan DHT untuk menyimpan dan mengambil informasi terjadi sebagai berikut: Asumsikan keyspace adalah string 160-bit. Untuk menyimpan file dengan nama dan informasi tertentu di DHT, hash SHA1 dari nama file ditemukan, dari mana kunci k 160-bit dihasilkan, setelah itu pesan put(k, data) dibuat dan dikirim ke setiap node yang berpartisipasi dalam DHT. Pesan berpindah dari satu node ke node lainnya melalui jaringan overlay hingga mencapai satu-satunya node yang bertanggung jawab atas kunci k, sesuai dengan skema partisi keyspace, tempat pasangan (k, data) disimpan. Klien lain mana pun dapat memperoleh konten file dengan membuat kunci (k), menerima hash dari nama file, untuk menemukan data yang terkait dengan kunci tersebut dengan mengirimkan pesan get(k). Pesan tersebut akan kembali melewati overlay ke node yang bertanggung jawab atas kunci tersebut, yang akan merespons bahwa data yang diperlukan tersedia.

Partisi ruang utama dan komponen jaringan overlay dijelaskan di bawah ini untuk menyajikan ide dasar yang umum pada sebagian besar sistem DHT. Banyak perkembangan yang berbeda dalam detailnya.

Partisi ruang kunci

Banyak DHT menggunakan beberapa variasi hashing persisten untuk memetakan kunci ke node. Metode ini mencakup fungsi δ( k 1 ,k 2) yang mendefinisikan konsep abstrak jarak antar tombol k 1 dan k 2, yang tidak berlaku untuk jarak geografis dan latensi jaringan. Setiap node mewakili satu kunci yang disebut pengidentifikasi (ID). Node dengan ID j memiliki semua kunci yang i adalah ID terdekatnya, diukur dengan δ.

Contoh." Chord DHT memperlakukan kunci sebagai titik pada lingkaran dan δ( k 1 ,k 2) ada jarak yang ditempuh searah jarum jam dalam lingkaran dari kunci k 1 sampai k 2. Dengan cara ini, lingkaran keyspace dibagi menjadi segmen-segmen yang berdekatan, yang ujungnya adalah pengidentifikasi simpul. Jika Saya 1 dan Saya 2 ID yang berdekatan, lalu node dengan ID Saya 2 berisi semua kunci yang ada di antaranya Saya 1 dan Saya 2 .

Hashing yang konsisten memiliki properti dasar bahwa menghapus atau menambahkan hanya satu set kunci milik node dari ID yang berdekatan tidak mempengaruhi node lainnya.

DHT dan BitTorrent

Baik DHT dan PEX sebenarnya menjalankan fungsi utama pelacak BitTorrent - mereka membantu peserta berbagi file untuk mengenal satu sama lain. Mereka dapat:

  • Bantu peserta menemukan satu sama lain dengan lebih cepat
    Misalnya, ada rekan X pada distribusi dengan port yang tidak tersedia. Rekan Z bergabung dengan distribusi, tetapi tidak dapat memulai koneksi dengan X sendiri dan terpaksa menunggu sampai X mengetahuinya. X baru saja mengakses pelacak dan berencana melakukannya lain kali dalam satu jam.
    Namun rekan Y sekali lagi beralih ke pelacak dan mencari tahu tentang rekan baru Z. Pada saat yang sama, Y sendiri telah lama terhubung dan terlibat dalam berbagi file dengan X, sehingga ia memberi tahu X alamat baru ini. rekan melalui PEX. Sekarang X dapat mulai terhubung ke Z.
  • Kurangi beban pada pelacak
    Dengan menerima alamat rekan melalui DHT atau PEX, klien lebih jarang mengakses pelacak, sehingga mengurangi beban.
  • Mendukung distribusi selama periode tidak tersedianya pelacak
    Jika pelacak adalah satu-satunya sumber informasi tentang rekan-rekan, maka jika tidak berfungsi, distribusi akan terhenti secara bertahap. Dengan menggunakan PEX, klien dapat bertukar informasi satu sama lain tentang rekan-rekan yang pernah melakukan sesi dengan mereka, sehingga memperlambat proses penghentian seed. DHT memungkinkan Anda mengganti pelacak sepenuhnya.
  • DHT memungkinkan distribusi tanpa pelacak
    Distribusi ini disebut tanpa pelacak. Torrent untuk itu dibuat tanpa alamat pelacak dan klien menemukan satu sama lain melalui DHT. Saat berpartisipasi dalam distribusi tanpa pelacak, klien BitTorrent memperoleh kemiripan tertentu dengan eMule, yang menggunakan jaringan Kad.

Kunci pribadi

Dalam pelacak publik (terbuka), di mana siapa pun dapat mengunduh torrent dan berpartisipasi dalam distribusinya, DHT dan PEX memberikan manfaat bagi semua peserta.

Untuk pelacak pribadi (tertutup), pertama-tama penting bahwa hanya pengguna terdaftar yang dapat berpartisipasi dalam distribusi, dan mereka mengikuti aturan tertentu. Ketika klien pertama kali menghubunginya, pelacak pribadi memiliki kemampuan untuk mencegahnya berpartisipasi dalam distribusi, hanya dengan tidak memberi tahu dia alamat klien lain yang berpartisipasi. Oleh karena itu, penting bagi pelacak tertutup bahwa klien tidak menerima alamat ini melalui DHT/PEX.

DHT dan PEX muncul di klien Azureus dan BitComet sekitar musim panas 2005. Administrator dari banyak pelacak pribadi tidak senang dengan fungsi baru ini, dan oleh karena itu mulai melarang klien versi baru ini di pelacak.

Kemudian pengembang klien mengusulkan kunci baru di dalam file torrent: pribadi. Jika sama dengan 1, maka klien wajib menonaktifkan DHT/PEX secara otomatis untuk torrent ini, apa pun keinginan pengguna. Torrent ini disebut Torrent Aman.

Hampir semua pelacak pribadi modern memasukkan secara paksa pribadi:1 untuk semua torrent yang diposting di pelacak, dan juga melarang beberapa versi klien usang yang mendukung DHT atau PEX, tetapi belum mengetahuinya kunci pribadi. Pengguna pelacak tidak bisa menggunakan DHT/PEX pada distribusi, dan tidak ada masalah.

Perhatikan bahwa kehadiran kunci pribadi mengubah infohash torrent, jadi menghapusnya dari file torrent tidak ada gunanya - klien lain tetap tidak akan mengenali torrent yang dimodifikasi.

Perlu juga dicatat bahwa sebelumnya, ketika pelacak komersial juga secara aktif membuat torrent mereka tersedia untuk diunduh, namun otorisasi pengumuman tersebut memerlukan PassKey, jaringan DHT digunakan untuk mencuri PassKey dari pengguna. Fenomena ini sama sekali tidak mempengaruhi kerentanan di DHT, hasil dari generator kunci sandi (brute force Attack) hanya diperiksa dengan menelusuri melalui DHT. Pencurian kata sandi langsung tidak dilakukan melalui DHT, dan saat ini, ketika semua pelacak komersial memerlukan undangan dan sebagainya, pihak ketiga tidak memiliki akses ke file torrent, dan pada pelacak dengan registrasi biasa, setiap orang memiliki kunci sandi sendiri dan dapat melakukan validasi dengan permintaan ke pelacak, menggunakan HTTP, bukan DHT.

DHT dan statistik

Bagian ini menyangkut hanya pelacak tertutup yang mana kunci pribadi itu tidak dimasukkan secara paksa ke dalam torrent, dan pada beberapa distribusi (tergantung pada apakah distributor itu sendiri yang memasukkan ke dalam torrent kunci pribadi) DHT dan PEX dapat digunakan.

Seringkali ada pendapat bahwa DHT yang diaktifkan di klien memengaruhi pelacakan statistik klien oleh pelacak, misalnya, “didistribusikan melalui DHT, yang berarti statistik melewati pelacak”. Ini tidak benar.

Pertama, DHT/PEX hanya digunakan untuk mendapatkan alamat peer. Tidak ada berbagi file atau penghitungan statistik apa pun di dalamnya. Klien melaporkan statistik data yang diunduh dan diunggah hanya ke pelacak.

Artinya, “didistribusikan melalui DHT” sebenarnya berarti “Saya menerima informasi tentang beberapa (atau semua) rekan melalui DHT, dan mungkin beberapa rekan juga menemukan saya melalui DHT.”

Kedua, meskipun klien biasanya mengetahui dari mana mereka menerima alamat rekan, tidak ada klien yang memisahkan lalu lintas menjadi “diterima/dikirim ke rekan DHT” dan “diterima/dikirim ke rekan yang diterima dari pelacak”. Sekalipun klien ingin melakukan ini, akan sulit bagi klien untuk melakukan hal ini - beberapa rekan dapat diterima baik dari pelacak maupun melalui DHT atau PEX, dan seringkali klien tidak mengetahui bagaimana alamatnya diterima oleh rekan tersebut. itulah yang memulai koneksi ke sana.

Klien melaporkan ke pelacak total data tentang volume yang diunduh dan ditransfer ke semua rekan yang berkomunikasi dengannya, terlepas dari apakah klien mengetahui tentang masing-masing rekan melalui pelacak, DHT atau PEX, atau apakah rekan tersebut bahkan memulai koneksi itu sendiri. Artinya, bahkan jika, karena DHT/PEX, pengguna “kiri” (yang tidak mengakses pelacak) muncul di distribusi, klien akan tetap melaporkan ke pelacak segala sesuatu yang telah mereka unduh dan berikan.

Penghitungan statistik yang benar hanya bergantung pada keadaan pelacak: pelacak berfungsi - statistik diperhitungkan, jika tidak berfungsi - statistik tidak diperhitungkan. Hanya dalam kasus pelacak yang tidak berfungsi dalam waktu lama, DHT/PEX dapat memainkan peran tidak langsung, mencegah berbagi file agar tidak mati secara bertahap dalam “distribusi tanpa memperhitungkan statistik akun”.

Bagaimana DHT bekerja

Implementasi jaringan terdistribusi di klien BitTorrent didasarkan pada varian DHT yang disebut Kademlia. Secara umum, DHT (Tabel hash terdistribusi) berarti sistem terdistribusi terdesentralisasi untuk menggabungkan sejumlah besar node yang terus-menerus menghilang dan muncul serta mentransmisikan pesan secara efisien di antara node tersebut. Berdasarkan struktur DHT, berbagai sistem yang lebih kompleks dibangun, seperti berbagi file P2P, cache web kooperatif, layanan DNS dll.

DHT menggunakan protokol UDP. Klien BitTorrent mendengarkan nomor port UDP yang sama yang mereka gunakan untuk koneksi TCP masuk. Jika Anda aktif menggunakan DHT, maka diinginkan untuk membuka port UDP ini untuk akses dari luar, tetapi tidak perlu - DHT akan berfungsi begitu saja.

Setiap klien yang terhubung adalah node terpisah di jaringan DHT. Ia memiliki ID (pengidentifikasi) uniknya sendiri, yang dipilih secara acak dari ruang 160-bit yang sama dengan infohash torrent.

Setiap node menyimpan tabel perutean yang berisi informasi kontak tentang banyak node yang “terdekat” dengannya, dan tentang beberapa node yang lebih jauh. "Kedekatan" dua node dihitung dari "kesamaan" ID mereka, dan tidak ada hubungannya dengan kedekatan geografisnya.

Saat sebuah node ingin mencari rekan untuk sebuah seed, ia membandingkan infohash seed tersebut dengan ID node yang diketahuinya, lalu mengirimkan permintaan ke rekan yang ID-nya paling mirip dengan infohash tersebut. Node tersebut mengembalikan kepadanya alamat node yang ID-nya bahkan lebih dekat dengan infohash torrent.

Kemudian node kita mengirimkan permintaan ke node baru tersebut, dan menerima dari sana alamat node berikutnya, yang ID-nya bahkan lebih mirip dengan infohash torrent.

Dengan demikian, permintaan dari klien yang berpartisipasi dalam distribusi torrent dengan infohash tertentu secara bertahap berbondong-bondong ke node yang ID-nya paling mirip dengan infohash ini. Node ini mengingat permintaan sebelumnya, dan semua node yang meminta berikutnya akan mengembalikan alamat rekan sebelumnya dari distribusi yang sama.

Kekurangan

  1. Ada beberapa protokol yang tidak kompatibel yang melayani jaringan berbeda.
  2. Operasi klien sebagai simpul DHT dibuat beban berat ke router.

Tautan

  • Deskripsi protokol DHT (Terjemahan) (Rusia)
  • Deskripsi protokol DHT di situs web Bittorrent.org (Bahasa Inggris)

.
DHT (Tabel hash terdistribusi) adalah protokol yang memungkinkan klien bittorrent menemukan satu sama lain tanpa menggunakan pelacak.
Klien dengan dukungan DHT membentuk jaringan DHT yang umum, dan saling membantu menemukan peserta dalam distribusi yang sama.
Dukungan DHT tersedia di klien Mainline, µTorrent, KTorrent, BitSpirit, dan BitComet. Azureus memiliki implementasi DHT sendiri, yang berarti klien Azureus membentuk jaringan DHT mereka sendiri yang terpisah.

Fungsi

Baik DHT dan PEX sebenarnya menjalankan fungsi utama pelacak - mereka membantu peserta berbagi file untuk mengenal satu sama lain. Mereka dapat:
1. Bantu peserta menemukan satu sama lain dengan lebih cepat
Misalnya, ada rekan X pada distribusi dengan port yang tidak tersedia. Rekan Z terhubung ke distribusi, tetapi tidak dapat memulai koneksi ke X sendiri, dan terpaksa menunggu hingga X mengetahuinya sendiri. X baru saja mengakses pelacak dan berencana melakukannya lain kali dalam satu jam.
Namun rekan Y sekali lagi beralih ke pelacak dan mencari tahu tentang rekan baru Z. Pada saat yang sama, Y sendiri telah lama terhubung dan terlibat dalam berbagi file dengan X, sehingga ia memberi tahu X alamat baru ini. rekan melalui PEX. Sekarang X dapat mulai terhubung ke Z.
2. Kurangi beban pada pelacak
Beberapa klien, misalnya Azureus, yang menerima alamat rekan melalui DHT atau PEX, cenderung tidak menghubungi pelacak untuk mendapatkan daftar rekan.
3. Jaga agar peserta tetap berkumpul selama periode tidak tersedianya pelacak
Diketahui bahwa jika pelacak adalah satu-satunya sumber informasi tentang rekan-rekan, maka jika tidak berfungsi, distribusinya akan terhenti secara bertahap. Klien mengingat daftar alamat rekan lain yang sudah diketahui, tetapi lambat laun daftar ini menjadi usang - beberapa pengguna terputus dari distribusi, beberapa mengubah alamat IP mereka, dan pengguna baru tidak dapat terhubung ke distribusi sama sekali.
PEX memungkinkan Anda memperlambat proses disintegrasi segerombolan peserta, dan DHT memungkinkan Anda mengganti pelacak sepenuhnya, sehingga peserta baru pun dapat terhubung ke distribusi.
4. DHT memungkinkan distribusi tanpa pelacak sama sekali
Distribusi ini disebut tanpa pelacak. Torrent untuk itu dibuat tanpa alamat pelacak, dan klien menemukan satu sama lain melalui jaringan DHT.
Saat berpartisipasi dalam distribusi BT tanpa pelacak, klien memperoleh kesamaan tertentu dengan eMule, yang menggunakan jaringan KAD.


Bagaimana DHT bekerja

Implementasi jaringan terdistribusi di klien BT didasarkan pada varian DHT yang disebut Kademlia. Secara umum, DHT (Tabel hash terdistribusi) berarti sistem terdistribusi yang terdesentralisasi untuk menggabungkan sejumlah besar node yang terus-menerus menghilang dan muncul serta mentransmisikan pesan secara efisien di antara node tersebut. Berdasarkan struktur DHT, berbagai sistem yang lebih kompleks dibangun, seperti berbagi file P2P, cache web kooperatif, layanan DNS, dll.
DHT menggunakan protokol UDP. Klien BT mendengarkan nomor port UDP yang sama yang mereka gunakan untuk koneksi TCP masuk. Jika Anda aktif menggunakan DHT, maka diinginkan untuk membuka port UDP ini untuk akses dari luar, tetapi tidak perlu - DHT akan berfungsi begitu saja.
Setiap klien BT yang terhubung adalah node terpisah di jaringan DHT. Ia memiliki ID (pengidentifikasi) uniknya sendiri, yang dipilih secara acak dari ruang 160-bit yang sama dengan infohash torrent.
Setiap node memelihara tabel perutean yang berisi informasi kontak untuk banyak node yang "lebih dekat" dengannya, dan untuk beberapa node yang lebih jauh. "Kedekatan" dua node dihitung dari "kesamaan" ID mereka, dan tidak ada hubungannya dengan kedekatan geografisnya.
Ketika sebuah node ingin mencari rekan untuk distribusi tertentu, ia membandingkan infohash dari distribusi tersebut dengan ID dari node yang diketahuinya, dan kemudian mengirimkan permintaan ke node yang ID-nya paling mirip dengan infohash ini. Node tersebut mengembalikan kepadanya alamat node yang ID-nya bahkan lebih dekat dengan infohash torrent.
Kemudian node kita mengirimkan permintaan ke node baru tersebut, dan menerima dari sana alamat node berikutnya, yang ID-nya bahkan lebih mirip dengan infohash torrent.
Dengan demikian, permintaan dari klien yang berpartisipasi dalam distribusi torrent dengan infohash tertentu secara bertahap berbondong-bondong ke node yang ID-nya paling mirip dengan infohash ini. Node ini mengingat permintaan sebelumnya, dan semua node yang meminta berikutnya akan mengembalikan alamat rekan sebelumnya dari distribusi yang sama.


Kunci pribadi

Pada pelacak publik (terbuka), di mana siapa pun dapat mengunduh torrent dan berpartisipasi dalam distribusinya, DHT dan PEX memberikan manfaat bagi semua peserta.
Untuk pelacak pribadi (tertutup), pertama-tama penting bahwa hanya pengguna terdaftar yang dapat berpartisipasi dalam distribusi, dan mereka mengikuti aturan tertentu. Ketika klien pertama kali menghubunginya, pelacak pribadi memiliki kemampuan untuk mencegahnya berpartisipasi dalam distribusi, hanya dengan tidak memberi tahu dia alamat klien lain yang berpartisipasi. Oleh karena itu, penting bagi pelacak tertutup bahwa klien tidak menerima alamat ini melalui DHT/PEX.
DHT dan PEX muncul di klien Azureus dan BitComet sekitar musim panas 2005. Administrator dari banyak pelacak pribadi tidak senang dengan fungsi baru ini, dan oleh karena itu mulai melarang klien versi baru ini di pelacak.
Kemudian pengembang klien mengusulkan kunci baru di dalam file torrent: private. Jika sama dengan 1, maka klien wajib menonaktifkan DHT/PEX secara otomatis untuk torrent ini, apa pun keinginan pengguna. Torrent ini disebut Torrent Aman.
Hampir semua pelacak pribadi modern sendiri memaksa private:1 ke semua torrent yang diposting di pelacak, dan juga melarang beberapa versi klien lama yang mendukung DHT atau PEX, tetapi belum mengetahui tentang kunci pribadi. Pengguna pelacak tidak bisa menggunakan DHT/PEX pada distribusi, dan tidak ada masalah.
Perhatikan bahwa kehadiran kunci pribadi mengubah infohash torrent, jadi menghapusnya dari file torrent tidak ada gunanya - klien lain tetap tidak akan mengenali torrent yang diubah.


Haruskah saya menggunakannya?

Semua torrent Anda berasal dari pelacak pribadi
Jika Anda mengaktifkan DHT di klien, ternyata klien terhubung ke jaringan DHT, menghabiskan lalu lintas di sana, membantu klien lain menemukan rekan yang mereka butuhkan, tetapi tidak menggunakan DHT untuk dirinya sendiri di distribusi mana pun. Jika Anda tidak ingin membuang lalu lintas tambahan, mungkin lebih baik menonaktifkan DHT di klien.
Anda mengunduh distribusi dari pelacak publik
Jika pelacak mengembalikan Anda banyak rekan dan jumlahnya cukup untuk mencapai kecepatan unduh yang baik, maka Anda mungkin tidak memerlukan DHT/PEX. Jika tidak, maka ada baiknya mencoba mengaktifkannya (baik di klien dan properti distribusi), ini dapat membantu Anda menemukan lebih banyak sumber.
Anda mengunduh distribusi dari pelacak pribadi tanpa kunci pribadi yang dipaksakan
Dari pelacak utama berbahasa Rusia pada akhir tahun 2006, ini adalah torrents.ru. Kemampuan untuk menggunakan DHT/PEX dalam distribusi pada pelacak ini diserahkan kepada distribusi (pembuat torrent).
Secara umum, situasi ini tidak bisa dianggap normal, terutama pada pelacak dengan sistem kunci sandi. Faktanya adalah bahwa di klien BitComet, BitSpirit dan Azureus, pengguna dapat mengetahui kunci sandi pengguna lain melalui DHT, dan pengguna yang tidak jujur ​​dapat menggunakan kunci sandi orang lain untuk mengunduh dengan akun orang lain. Oleh karena itu, setidaknya pada klien yang menggunakan pelacak tersebut, disarankan untuk mematikan DHT.


DHT dan statistik

Bagian ini hanya membahas pelacak pribadi, yang kunci pribadinya tidak dimasukkan secara paksa ke dalam torrent, dan pada beberapa distribusi (tergantung pada apakah distributor itu sendiri yang memasukkan kunci pribadi ke dalam torrent) Anda dapat menggunakan DHT dan PEX.
Seringkali ada pendapat bahwa DHT yang diaktifkan di klien memengaruhi pelacakan statistik klien oleh pelacak, misalnya, “didistribusikan melalui DHT, yang berarti statistik melewati pelacak”. Ini tidak benar.
Pertama, DHT/PEX hanya digunakan untuk mendapatkan alamat peer. Tidak ada berbagi file atau penghitungan statistik apa pun di dalamnya. Klien melaporkan statistik data yang diunduh dan diunggah hanya ke pelacak.
Artinya, “didistribusikan melalui DHT” sebenarnya berarti “Saya menerima informasi tentang beberapa (atau semua) rekan melalui DHT, dan mungkin beberapa rekan juga menemukan saya melalui DHT.”
Kedua, meskipun klien biasanya mengetahui dari mana mereka menerima alamat rekan, tidak ada klien yang memisahkan lalu lintas menjadi “diterima/dikirim ke rekan DHT” dan “diterima/dikirim ke rekan yang diterima dari pelacak”. Sekalipun klien ingin melakukan ini, akan sulit bagi klien untuk melakukan hal ini - beberapa rekan dapat diterima baik dari pelacak maupun melalui DHT atau PEX, dan seringkali klien tidak mengetahui bagaimana alamatnya diterima oleh rekan tersebut. itulah yang memulai koneksi ke sana.
Klien melaporkan ke pelacak total data tentang volume yang diunduh dan ditransfer ke semua rekan yang berkomunikasi dengannya, terlepas dari apakah klien mengetahui tentang masing-masing rekan melalui pelacak, DHT atau PEX, atau apakah rekan tersebut bahkan memulai koneksi itu sendiri. Artinya, bahkan jika, karena DHT/PEX, pengguna “kiri” (yang tidak mengakses pelacak) muncul di distribusi, klien akan tetap melaporkan ke pelacak segala sesuatu yang telah mereka unduh dan berikan.
Penghitungan statistik yang benar hanya bergantung pada keadaan pelacak: pelacak berfungsi - statistik diperhitungkan, jika tidak berfungsi - statistik tidak diperhitungkan. Hanya dalam kasus pelacak yang tidak berfungsi dalam waktu lama, DHT/PEX dapat memainkan peran tidak langsung, mencegah berbagi file agar tidak mati secara bertahap dalam “distribusi tanpa memperhitungkan statistik akun”.

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat