Apakah BitTorrent menggunakan DHT?
Apakah BitTorrent menggunakan DHT?
Ringkasan
Bittorrent adalah protokol peer-to-peer yang dirancang untuk transfer file. Ini memungkinkan pengguna untuk terhubung secara langsung satu sama lain untuk mengirim dan menerima porsi file. Protokol menggunakan server pusat yang disebut pelacak untuk mengoordinasikan tindakan semua rekan yang terlibat. Namun, Bittorrent juga mencakup ekstensi yang disebut protokol hash hash sloppy terdistribusi (DHT), yang merupakan protokol pelacak peer-to-peer berbasis UDP.
Poin -poin penting
- Bittorrent adalah protokol untuk mentransfer file.
- Pengguna terhubung langsung ke satu sama lain untuk mengirim dan menerima porsi file.
- Protokol menggunakan server pusat yang disebut pelacak.
- Pelacak mengoordinasikan tindakan rekan -rekan yang terlibat.
- Protokol DHT adalah ekstensi untuk BitTorrent.
- DHT adalah protokol pelacak peer-to-peer berbasis UDP.
- Bittorrent menggunakan TCP sebagai protokol transportasi.
- Port TCP terkenal untuk lalu lintas BitTorrent adalah 6881-6889.
- DHT menggunakan berbagai port UDP yang dinegosiasikan oleh teman sebaya.
- Bittorrent telah banyak diadopsi sejak penciptaannya pada tahun 2002.
Pertanyaan dan jawaban
T: Bagaimana cara kerja BitTorrent?
A: Bittorrent adalah protokol peer-to-peer yang memungkinkan pengguna untuk mentransfer file dengan menghubungkan langsung satu sama lain. Alih -alih mengandalkan server pusat, Bittorrent menggunakan pelacak untuk mengoordinasikan tindakan rekan -rekan yang terlibat dalam transfer file tersebut. Pendekatan desentralisasi ini memungkinkan distribusi file yang efisien, karena pengguna dapat berbagi bagian dari file yang telah mereka unduh dengan orang lain.
T: Apa tujuan dari protokol DHT di Bittorrent?
A: Protokol DHT, atau protokol meja hash ceroboh terdistribusi, adalah ekstensi untuk bittorrent. Ini memungkinkan pelacak tanpa pelacak dengan menyimpan informasi kontak sebaya di tabel hash terdistribusi. Setiap rekan dalam jaringan menjadi pelacak, dan protokol diimplementasikan melalui UDP. DHT memungkinkan rekan untuk menemukan dan terhubung satu sama lain tanpa mengandalkan server pelacak pusat.
T: Protokol transport apa yang terutama digunakan BitTorrent?
A: Bittorrent terutama menggunakan TCP (Transmission Control Protocol) sebagai protokol transport. TCP memastikan pengiriman paket data yang andal dan dipesan di antara rekan. Kisaran port TCP yang terkenal untuk lalu lintas bittorrent adalah 6881-6889.
T: Apakah protokol DHT menggunakan UDP atau TCP?
A: Protokol DHT dalam BitTorrent menggunakan UDP (Pengguna Datagram Protocol) sebagai protokol transportanya. UDP adalah protokol tanpa koneksi yang menyediakan pengiriman paket yang lebih cepat dan kurang andal dibandingkan dengan TCP. Peer yang terlibat dalam protokol DHT menegosiasikan port UDP untuk membuat koneksi.
T: Kapan Bittorrent dibuat?
A: Bittorrent dirancang oleh Bram Cohen pada April 2001 dan diimplementasikan pada musim panas 2002. Itu adalah program pertama yang menggunakan protokol BitTorrent, dan sejak itu, banyak aplikasi telah dikembangkan berdasarkan protokol.
T: Apa peran pelacak dalam BitTorrent?
A: Pelacak di BitTorrent adalah server pusat yang mengelola koneksi antara rekan. Itu melacak rekan mana yang memiliki bagian file yang berbeda dan memfasilitasi pertukaran data di antara mereka. Namun, pelacak tidak memiliki pengetahuan tentang konten file aktual yang didistribusikan.
T: Apakah ada nomor port spesifik yang terkait dengan lalu lintas bittorrent?
A: Ya, kisaran port TCP yang terkenal untuk lalu lintas bittorrent adalah 6881-6889. Port ini digunakan untuk membangun koneksi TCP antara rekan. Selain itu, port UDP yang digunakan untuk protokol DHT dinegosiasikan oleh rekan -rekan yang terlibat dalam komunikasi.
T: Apa perbedaan antara rekan dan simpul di BitTorrent?
A: Dalam konteks BitTorrent, rekan merujuk pada klien atau server yang mendengarkan port TCP dan mengimplementasikan protokol BitTorrent untuk transfer file. Di sisi lain, node mengacu pada klien atau server yang mendengarkan port UDP dan mengimplementasikan protokol tabel hash terdistribusi (DHT). Node digunakan untuk menyimpan dan mengambil informasi kontak sebaya untuk torrents tanpa pelacak.
T: Apakah Wireshark mampu menganalisis lalu lintas bittorrent?
A: Ya, Wireshark mencakup pembuangan bittorrent yang berfungsi penuh yang dapat menganalisis dan mendekode lalu lintas bittorrent. Ekstensi DHT dan UTP juga didukung oleh Wireshark. Disektor BitTorrent telah tersedia sejak rilis Wireshark tertentu (detail tidak disediakan).
T: Apakah ada pengaturan preferensi yang terkait dengan Bittorrent di Wireshark?
A: Ya, ada pengaturan preferensi di Wireshark yang terkait dengan BitTorrent. Beberapa dari pengaturan ini termasuk kemampuan untuk memasang kembali pesan bittorrent yang mencakup beberapa segmen TCP dan opsi untuk memecahkan kode peer_id dari pesan jabat tangan. Pengaturan preferensi ini memberikan analisis yang lebih rinci tentang lalu lintas bittorrent yang ditangkap di Wireshark.
T: Dapatkah Anda memberikan contoh file pengambilan lalu lintas bittorrent?
A: Ya, ada contoh file tangkapan yang tersedia untuk lalu lintas bittorrent. Salah satu contohnya adalah “Samplecaptures/Bittorrent.Transfer1.tutup, “ditangkap menggunakan monitor jaringan microsoft. Ini berisi beberapa paket BitTorrent yang diperoleh saat mengunduh BitTorrent. Contoh lain adalah “Samplecaptures/Bittorrent.pcap, “ditangkap menggunakan libpcap. Itu menangkap komunikasi antara dua klien torrent tanpa dht atau pertukaran rekan.
T: Bagaimana saya bisa menampilkan lalu lintas Bittorrent di Wireshark?
A: Untuk menampilkan hanya lalu lintas berbasis bitrent di Wireshark, Anda dapat menggunakan filter tampilan “Bittorrent.”Menerapkan filter ini hanya akan menampilkan paket yang terkait dengan lalu lintas bittorrent. Harap dicatat bahwa filter ini mungkin tersedia di Wireshark setelah versi tertentu (detail tidak disediakan).
T: Apakah mungkin untuk hanya menangkap lalu lintas pelacak BitTorrent menggunakan filter tertentu?
A: Saat menangkap lalu lintas jaringan, tidak mungkin untuk secara langsung memfilter protokol bittorrent. Namun, jika Anda tahu port TCP yang digunakan oleh pelacak BitTorrent (seperti 6881), Anda dapat mengatur filter tangkapan untuk hanya menangkap lalu lintas di port itu. Misalnya, filter penangkapan “TCP Port 6881” hanya akan menangkap lalu lintas pelacak Bittorrent di port 6881. Selain itu, Anda dapat menangkap lalu lintas pelacak BitTorrent di berbagai port default (e.G., 6881-6889) Menggunakan filter “TCP Portrange 6881-6889.”
T: Apakah ada tautan eksternal yang terkait dengan BitTorrent?
A: Ya, berikut adalah beberapa tautan eksternal yang terkait dengan BitTorrent:
- http: // www.Bittorrent.com/ – Situs Web Bittorrent Resmi.
- Halaman Bittorrent Wikipedia – Artikel Wikipedia tentang Bittorrent.
- Bagaimana Bittorrent bekerja – Informasi tentang P2P Secara Umum, Pengaturan Bittorrent, dan Firewall.
- Protokol DHT (BEP 5) – Ekstensi Bittorrent Berbasis UDP untuk Pelacak Terdistribusi.
- Web Archive Copy (2007-12-21) dari Draft DHT Protocol – Mengarsipkan draft protokol DHT.
- Deskripsi Tanda Tangan Protokol Hippie – Deskripsi tanda tangan protokol TCP dan UDP yang dapat digunakan untuk mengidentifikasi protokol Bittorrent.
T: Bagaimana cara kerja protokol DHT di Bittorrent?
A: Protokol DHT dalam Bittorrent menggunakan tabel hash terdistribusi untuk menyimpan dan mengambil informasi kontak sebaya untuk torrents tanpa pelacak. Setiap node dalam DHT memiliki pengidentifikasi unik global yang dikenal sebagai “Node ID.”Node mempertahankan tabel perutean yang berisi informasi kontak untuk node lain. Tabel perutean menjadi lebih rinci saat node semakin dekat dengan ID simpul mereka sendiri. Struktur ini memungkinkan node untuk menemukan dan terhubung dengan rekan secara efisien.
informasi tambahan
Bittorrent.org adalah situs web resmi untuk BitTorrent. Ini menyediakan sumber daya, dokumentasi, dan pembaruan mengenai protokol Bittorrent dan implementasinya. Bittorrent menggunakan protokol DHT untuk memungkinkan torrents tanpa pelacak, yang meningkatkan skalabilitas dan desentralisasi proses berbagi file. Protokol DHT diimplementasikan melalui UDP dan bergantung pada node untuk menyimpan dan mengambil informasi kontak sebaya.
Catatan: Artikel ini memberikan tinjauan singkat tentang BitTorrent, ekstensi DHT, dan informasi terkait. Untuk detail dan spesifikasi teknis yang lebih mendalam, disarankan untuk mengunjungi situs web resmi Bittorrent dan tautan eksternal yang disediakan.
Apakah BitTorrent menggunakan DHT
Setelah kamu’telah menemukan semua rekan Anda, unduhan Anda dimulai!
Bittorrent
Bittorrent adalah protokol yang dirancang untuk mentransfer file. Ini bersifat peer-to-peer, karena pengguna terhubung satu sama lain secara langsung untuk mengirim dan menerima porsi file. Namun, ada server pusat (disebut pelacak) yang mengoordinasikan tindakan semua rekan tersebut. Pelacak hanya mengelola koneksi, ia tidak memiliki pengetahuan tentang konten file yang didistribusikan, dan oleh karena itu sejumlah besar pengguna dapat didukung dengan bandwidth pelacak yang relatif terbatas.
Perpanjangan baru -baru ini untuk Bittorrent adalah DHT (“Tabel Hash Terdistribusi Terdistribusi” atau hanya disebut UDP Tracker) Protokol. Protokol Peer To Peer Tracker Berbasis UDP. Dan uTorrent mengimpor protokol transport mikro berbasis UDP lainnya, yang disebut UTP.
Sejarah
Pada bulan April 2001 Bram Cohen merancang protokol Bittorrent, yang ia implementasikan musim panas 2002. Program pertama yang menggunakan protokol adalah klien Bittorrent asli. Saat ini banyak aplikasi yang tersedia, dan protokolnya banyak digunakan.
Ketergantungan Protokol
- TCP: Biasanya, Bittorrent menggunakan TCP sebagai protokol transportanya. Port TCP terkenal untuk lalu lintas BitTorrent adalah 6881-6889 (dan 6969 untuk port pelacak). Ekstensi DHT (Peer2peer Tracker) menggunakan berbagai port UDP yang dinegosiasikan oleh rekan.
Contoh lalu lintas
XXX – Tambahkan contoh lalu lintas di sini (sebagai teks biasa atau tangkapan layar wireshark).
Wireshark
Disektor BitTorrent adalah (fungsional sepenuhnya, sebagian fungsional, tidak ada, … apa pun keadaan saat ini). Ekstensi DHT telah didukung sejak R39653. Ekstensi UTP telah didukung sejak R36716.
Pengaturan preferensi
- Pesan BitTorrent Kembali yang mencakup beberapa segmen TCP
- Decode peer_id dari pesan jabat tangan
Contoh Capture Files
Samplecaptures/Bittorrent.Transfer1.Cap (Microsoft Network Monitor) Berikut adalah penangkapan dengan beberapa paket Bittorrent; Ini berisi beberapa paket kecil yang saya dapatkan saat mengunduh sesuatu di BitTorrent.
Samplecaptures/Bittorrent.PCAP (libpcap) menangkap file dua klien torrent komunikasig tanpa DHT atau peer exch.
Filter tampilan
Daftar lengkap bidang filter tampilan bittorrent dapat ditemukan di referensi filter tampilan
Tampilkan hanya lalu lintas berbasis bittorrent:
Bittorrent Catatan: Diimplementasikan di Wireshark Post 0.10.12!
Capture filter
Anda tidak dapat secara langsung memfilter protokol bittorrent saat menangkap. Namun, jika Anda tahu port TCP yang digunakan (lihat di atas), Anda dapat memfilter yang satu itu.
Hanya menangkap lalu lintas pelacak bittorrent melalui salah satu port default (e.G. 6881):
Port TCP 6881 Tangkap lalu lintas pelacak BitTorrent di berbagai port default (e.G. 6881-6889):
TCP Portrange 6881-6889 Saat menggunakan libpcap 0.9.1 atau lebih baru atau winpcap 3.1 atau lebih baru; Ekspresi itu tidak akan berfungsi dengan versi libpcap atau winpcap yang lebih lama, jadi, pada windows, upgrade ke winpcap 3.1 atau lebih baru dan, di un*x, tingkatkan ke libpcap 0.9.x Jika memungkinkan dan, jika tidak memungkinkan dan Anda memiliki versi libpcap sebelum 0.8.1, gunakan
(TCP [0: 2]> = 6881 dan TCP [0: 2] = 6881 dan TCP [2: 2] (Bug di pengoptimal libpcap di libpcap 0.8.X berarti ini tidak akan bekerja dengan libpcap 0.8.x, meskipun Anda mungkin dapat menggunakan tcpdump dengan bendera "-o").
Tautan eksternal
- http: // www.Bittorrent.com/ halaman BitTorrent resmi
- Halaman Bittorrent Wikipedia
- Bagaimana Bittorrent Bekerja Tentang P2P Secara Umum, Pengaturan Bittorrent dan Firewall
- Protokol DHT (BEP 5), ekstensi bittorrent berbasis UDP untuk pelacak terdistribusi (nomor port UDP dinegosiasikan). Juga: Tautan ke Draft DHT Protocol (Dead Link), Web Archive Copy (2007-12-21) dari Draft DHT Protocol.
- Protokol Hippie Deskripsi Tanda Tangan TCP dan Protokol UDP yang mungkin digunakan untuk secara heuristik mengidentifikasi tautan arsip web Protokol Bittorrent
- Lebih lanjut tentang BitTorrent
Bittorrent .org
BitTorrent menggunakan "tabel hash ceroboh terdistribusi" (DHT) untuk menyimpan informasi kontak sebaya untuk torrents "pelacak" tanpa pelacak ". Akibatnya, setiap rekan menjadi pelacak. Protokol didasarkan pada Kademila [1] dan diimplementasikan melalui UDP.
Harap perhatikan terminologi yang digunakan dalam dokumen ini untuk menghindari kebingungan. "Peer" adalah klien/server yang mendengarkan pada port TCP yang mengimplementasikan protokol Bittorrent. "Node" adalah klien/server yang mendengarkan pada port UDP yang menerapkan protokol tabel hash terdistribusi. DHT terdiri dari node dan menyimpan lokasi teman sebaya. Klien BitTorrent termasuk simpul DHT, yang digunakan untuk menghubungi node lain di DHT untuk mendapatkan lokasi rekan untuk diunduh dari menggunakan protokol BitTorrent.
Ringkasan
Setiap node memiliki pengidentifikasi unik global yang dikenal sebagai "Node ID."Node ID dipilih secara acak dari ruang 160-bit yang sama dengan Infohash Bittorrent [2]. "Metrik jarak" digunakan untuk membandingkan dua ID simpul atau ID simpul dan infoh untuk "kedekatan."Node harus mempertahankan tabel perutean yang berisi informasi kontak untuk sejumlah kecil node lainnya. Tabel perutean menjadi lebih rinci karena ID lebih dekat dengan ID Node sendiri. Node tahu tentang banyak node lain di DHT yang memiliki ID yang "dekat" untuk mereka sendiri tetapi hanya memiliki beberapa kontak dengan ID yang sangat jauh dari mereka sendiri.
Di Kademlia, metrik jarak adalah xor dan hasilnya ditafsirkan sebagai bilangan bulat yang tidak ditandatangani. Jarak (A, B) = | A XOR B | Nilai yang lebih kecil lebih dekat.
Ketika sebuah node ingin menemukan rekan untuk torrent, ia menggunakan metrik jarak untuk membandingkan infohash torrent dengan ID node di tabel routingnya sendiri. Kemudian menghubungi node yang diketahui dengan ID yang paling dekat dengan Infohash dan meminta mereka untuk informasi kontak rekan -rekan yang saat ini mengunduh torrent. Jika simpul yang dihubungi tahu tentang rekan untuk torrent, informasi kontak peer dikembalikan dengan respons. Kalau tidak, simpul yang dihubungi harus merespons dengan informasi kontak node di tabel routingnya yang paling dekat dengan infohash torrent. Node asli secara iteratif menanyakan node yang lebih dekat ke target infohash sampai tidak dapat menemukan node yang lebih dekat. Setelah pencarian habis, klien kemudian memasukkan informasi kontak peer untuk dirinya sendiri ke node yang merespons dengan ID yang paling dekat dengan infohash torrent.
Nilai pengembalian untuk kueri untuk rekan termasuk nilai buram yang dikenal sebagai "token."Agar simpul mengumumkan bahwa rekan pengendali sedang mengunduh torrent, itu harus menyajikan token yang diterima dari node permintaan yang sama dalam kueri baru -baru ini untuk rekan. Ketika sebuah node mencoba untuk "mengumumkan" torrent, node yang ditanya memeriksa token terhadap alamat IP node kueri. Ini untuk mencegah host jahat mendaftar host lain untuk torrents. Karena token hanya dikembalikan oleh node kueri ke simpul yang sama ia menerima token dari, implementasinya tidak ditentukan. Token harus diterima untuk jumlah waktu yang wajar setelah mereka didistribusikan. Implementasi BitTorrent menggunakan hash SHA1 dari alamat IP yang digabungkan ke rahasia yang berubah setiap lima menit dan token hingga sepuluh menit diterima.
Tabel perutean
Setiap node memelihara tabel perutean node bagus yang diketahui. Node di tabel routing digunakan sebagai titik awal untuk kueri di DHT. Node dari tabel perutean dikembalikan sebagai respons terhadap kueri dari node lain.
Tidak semua node yang kita pelajari sama. Beberapa "bagus" dan beberapa tidak. Banyak node yang menggunakan DHT dapat mengirim kueri dan menerima tanggapan, tetapi tidak dapat menanggapi pertanyaan dari node lain. Penting bahwa setiap tabel perutean node harus berisi hanya node yang baik. Node yang baik adalah simpul yang menanggapi salah satu pertanyaan kami dalam 15 menit terakhir. Node juga bagus jika pernah menanggapi salah satu pertanyaan kami dan telah mengirimi kami pertanyaan dalam 15 menit terakhir. Setelah 15 menit tidak aktif, sebuah simpul menjadi dipertanyakan. Node menjadi buruk ketika mereka gagal menanggapi beberapa pertanyaan berturut -turut. Node yang kita tahu baik diberikan prioritas di atas node dengan status yang tidak diketahui.
Tabel perutean mencakup seluruh ruang id node dari 0 hingga 2 160 . Tabel perutean dibagi lagi menjadi "ember" yang masing -masing menutupi sebagian ruang. Tabel kosong memiliki satu ember dengan rentang ruang ID min = 0, maks = 2 160 . Ketika simpul dengan ID "n" dimasukkan ke dalam tabel, ditempatkan di dalam ember yang memiliki min <= N < Max. Tabel kosong hanya memiliki satu ember sehingga simpul apa pun harus pas di dalamnya. Setiap ember hanya dapat menahan k node, saat ini delapan, sebelum menjadi "penuh."Ketika ember penuh dengan node yang baik, tidak ada lagi node yang dapat ditambahkan kecuali ID simpul kita sendiri berada dalam kisaran ember. Dalam hal ini, ember digantikan oleh dua ember baru masing -masing dengan setengah kisaran ember lama dan node dari ember lama didistribusikan di antara dua yang baru. Untuk meja baru dengan hanya satu ember, ember penuh selalu dibagi menjadi dua ember baru yang menutupi rentang 0..2 159 dan 2 159 ..2 160 .
Saat ember penuh dengan node yang baik, node baru hanya dibuang. Jika ada node dalam ember yang diketahui menjadi buruk, maka seseorang digantikan oleh node baru. Jika ada node yang dipertanyakan dalam ember belum terlihat dalam 15 menit terakhir, node yang paling tidak baru terlihat dipenuhi ping. Jika simpul ping merespons maka node yang dipertanyakan yang baru -baru ini terlihat ping sampai seseorang gagal merespons atau semua node dalam ember diketahui baik. Jika sebuah simpul dalam ember gagal merespons ping, disarankan untuk mencoba sekali lagi sebelum membuang node dan menggantinya dengan node yang baik baru. Dengan cara ini, tabel terisi dengan node berjalan yang stabil.
Setiap ember harus mempertahankan properti "terakhir diubah" untuk menunjukkan betapa "segar" isinya. Ketika sebuah simpul dalam ember dipenuhi dan merespons, atau simpul ditambahkan ke ember, atau simpul dalam ember diganti dengan node lain, properti yang terakhir diubah harus diperbarui. Ember yang belum diubah dalam 15 menit harus "disegarkan."Ini dilakukan dengan memilih ID acak di kisaran ember dan melakukan pencarian find_nodes di atasnya. Node yang dapat menerima kueri dari node lain biasanya tidak perlu sering menyegarkan ember. Node yang tidak dapat menerima kueri dari node lain biasanya perlu menyegarkan semua ember secara berkala untuk memastikan ada node yang baik di meja mereka ketika DHT diperlukan.
Setelah memasukkan node pertama ke tabel peruteannya dan saat memulai setelahnya, simpul harus berusaha menemukan node terdekat di DHT dengan dirinya sendiri. Ini melakukan ini dengan mengeluarkan pesan find_node ke node yang lebih dekat dan lebih dekat sampai tidak dapat menemukan lebih dekat. Tabel perutean harus disimpan di antara doa perangkat lunak klien.
Ekstensi Protokol Bittorrent
Protokol BitTorrent telah diperluas untuk bertukar nomor port UDP simpul antara rekan yang diperkenalkan oleh pelacak. Dengan cara ini, klien bisa mendapatkan tabel perutean mereka diunggulkan secara otomatis melalui unduhan torrents biasa. Klien yang baru diinstal yang mencoba mengunduh torrent tanpa pelacak pada percobaan pertama tidak akan memiliki node di tabel perutean mereka dan akan membutuhkan kontak yang termasuk dalam file torrent.
Peers Mendukung DHT Mengatur bit terakhir dari bendera yang dipesan 8-byte yang dipertukarkan di jabat tangan protokol BitTorrent. Peer menerima jabat tangan yang menunjukkan rekan jarak jauh mendukung DHT harus mengirim pesan port. Dimulai dengan byte 0x09 dan memiliki payload dua byte yang berisi port UDP dari simpul DHT dalam urutan byte jaringan. Peers yang menerima pesan ini harus mencoba untuk melakukan ping node pada port yang diterima dan alamat IP dari rekan jarak jauh. Jika respons terhadap ping diterima, simpul harus mencoba memasukkan informasi kontak baru ke dalam tabel perutean mereka sesuai dengan aturan yang biasa.
Ekstensi File Torrent
Kamus torrent pelacak tidak memiliki kunci "mengumumkan". Sebaliknya, torrent pelacak memiliki kunci "node". Kunci ini harus disetel ke n node terdekat di tabel perutean klien yang menghasilkan torrent. Atau, kuncinya dapat diatur ke simpul bagus yang dikenal seperti yang dioperasikan oleh orang yang menghasilkan torrent. Tolong jangan secara otomatis menambahkan "router.Bittorrent.com "ke file torrent atau secara otomatis menambahkan node ini ke tabel perutean klien.
node = [["",], ["",], . ] node = [["127.0.0.1 ", 6881], [" Anda.router.Node ", 4804], [" 2001: DB8: 100: 0: D5C8: DB3F: 995E: C0F7 ", 1941]]
Protokol KRPC
Protokol KRPC adalah mekanisme RPC sederhana yang terdiri dari kamus bencoded yang dikirim melalui UDP. Satu paket kueri dikirim dan satu paket dikirim sebagai tanggapan. Tidak ada lagi. Ada tiga jenis pesan: kueri, respons, dan kesalahan. Untuk protokol DHT, ada empat pertanyaan: ping, find_node, get_peers, dan pengumuman_peer.
Pesan KRPC adalah kamus tunggal dengan tiga kunci yang umum untuk setiap pesan dan kunci tambahan tergantung pada jenis pesan. Setiap pesan memiliki kunci "t" dengan nilai string yang mewakili ID transaksi. ID transaksi ini dihasilkan oleh node kueri dan digaungkan dalam respons, sehingga respons dapat dikorelasikan dengan beberapa kueri ke node yang sama. ID transaksi harus dikodekan sebagai string pendek bilangan biner, biasanya 2 karakter sudah cukup karena mereka mencakup 2^16 kueri luar biasa. Setiap pesan juga memiliki kunci "y" dengan nilai karakter tunggal yang menggambarkan jenis pesan. Nilai kunci "y" adalah salah satu dari "q" untuk kueri, "r" untuk respons, atau "e" untuk kesalahan. Kunci "V" harus dimasukkan dalam setiap pesan dengan string versi klien. String harus berupa pengidentifikasi klien dua karakter yang terdaftar di BEP 20 [3] diikuti oleh pengidentifikasi versi dua karakter. Tidak semua implementasi termasuk kunci "V" sehingga klien tidak boleh menganggap kehadirannya.
Hubungi Pengkodean
Informasi kontak untuk rekan dikodekan sebagai string 6-byte. Juga dikenal sebagai "Info IP-Address/Port Compact" Alamat IP 4-byte ada dalam urutan Byte Network dengan port 2 byte dalam pesanan byte jaringan yang disatukan ke ujungnya.
Informasi kontak untuk node dikodekan sebagai string 26-byte. Juga dikenal sebagai "Info Node Compact" ID Node 20-Byte dalam Pesanan Byte Jaringan memiliki info IP-Address/Port yang kompak yang digabungkan sampai akhir.
Kueri
Kueri, atau kamus pesan KRPC dengan nilai "y" dari "Q", berisi dua kunci tambahan; "Q" dan "A". Kunci "Q" memiliki nilai string yang berisi nama metode kueri. Kunci "a" memiliki nilai kamus yang berisi argumen bernama untuk kueri.
Tanggapan
Tanggapan, atau Kamus Pesan KRPC dengan nilai "y" dari "R", berisi satu kunci tambahan "R". Nilai "R" adalah kamus yang berisi nilai pengembalian bernama. Pesan respons dikirim setelah berhasil menyelesaikan kueri.
Kesalahan
Kesalahan, atau Kamus Pesan KRPC dengan nilai "y" dari "E", berisi satu kunci tambahan "E". Nilai "E" adalah daftar. Elemen pertama adalah bilangan bulat yang mewakili kode kesalahan. Elemen kedua adalah string yang berisi pesan kesalahan. Kesalahan dikirim ketika kueri tidak dapat dipenuhi. Tabel berikut menjelaskan kemungkinan kode kesalahan:
| Kode | Keterangan |
| 201 | Kesalahan generik |
| 202 | server error |
| 203 | Kesalahan protokol, seperti paket cacat, argumen yang tidak valid, atau token buruk |
| 204 | Metode tidak diketahui |
Contoh Paket Kesalahan:
Kesalahan generik = bencoded = d1: ELI201E23: Kesalahan generik Ocurrede1: t2: aa1: y1: ee
Pertanyaan DHT
Semua kueri memiliki kunci dan nilai dan nilai yang berisi ID simpul dari node kueri. Semua tanggapan memiliki kunci dan nilai dan nilai yang berisi ID simpul dari simpul yang merespons.
ping
Kueri paling dasar adalah ping. "q" = "ping" kueri ping memiliki argumen tunggal, "id" nilainya adalah string 20-byte yang berisi ID simpul pengirim dalam urutan byte jaringan. Respons yang tepat untuk ping memiliki satu kunci "id" yang berisi id node dari simpul yang merespons.
Argumen: "> Respons:">
ping query => bencoded = d1: ad2: id20: abcdefghij0123456789e1: q4: ping1: t2: aa1: y1: qe
Respons => bencoded = d1: rd2: id20: mnopqrstuvwxyz123456e1: t2: aa1: y1: re
find_node
Temukan simpul digunakan untuk menemukan informasi kontak untuk sebuah node yang diberikan ID -nya. "q" == "find_node" Kueri find_node memiliki dua argumen, "id" yang berisi id node node kueri, dan "target" yang berisi id node yang dicari oleh kueri. Ketika sebuah node menerima kueri find_node, ia harus merespons dengan "node" kunci dan nilai string yang berisi info node kompak untuk node target atau k (8) node yang paling baik di tabel peruteannya sendiri sendiri.
Argumen: "," Target ":" "> Respons:", "node": "">
find_node query => bencoded = d1: ad2: id20: abcdefghij01234567896: target20: mnopqrstuvwxyz123456e1: q9: find_node1: t2: aa1: y1: qe
Respons => bencoded = d1: rd2: id20: 0123456789abcdefghij5: nodees9: def456. E1: T2: AA1: Y1: RE
get_peers
Dapatkan rekan yang terkait dengan infoh torrent. "q" = "get_peers" Kueri get_peers memiliki dua argumen, "id" berisi id node node kueri, dan "info_hash" yang berisi infohash torrent. Jika node yang ditanya memiliki rekan -rekan untuk Infohash, mereka dikembalikan dalam "nilai" kunci sebagai daftar string. Setiap string yang berisi informasi teman sebaya "kompak" untuk satu rekan. Jika node yang ditanya tidak memiliki rekan untuk infohash, "node" kunci dikembalikan berisi n node dalam tabel routing node yang ditanya yang paling dekat dengan infohash yang disediakan dalam kueri. Dalam kedua kasus, kunci "token" juga termasuk dalam nilai pengembalian. Nilai token adalah argumen yang diperlukan untuk kueri pengumuman_peer di masa mendatang. Nilai token harus menjadi string biner pendek.
Argumen: "," info_hash ":" "> respons:", "token": "", "values": ["", ""] atau: "," token ":" "," node ":" ">
get_peers query => bencoded = d1: ad2: id20: abcdefghij01234567899: info_hash20: mnopqrstuvwxyz123456e1: q9: get_peers1: t2: aa1: y1: qe
Respons dengan rekan => bencoded = d1: rd2: id20: abcdefghij01234567895: token8: aoeusnth6: valuesl6: axje.u6: idhtnmee1: t2: aa1: y1: re
Respons dengan node terdekat => bencoded = d1: rd2: id20: abcdefghij01234567895: nodes9: def456. 5: Token8: aoeusnthe1: t2: aa1: y1: re
mengumumkan_peer
Mengumumkan bahwa peer, mengendalikan node kueri, mengunduh torrent di port. pengumuman_peer memiliki empat argumen: "ID" yang berisi ID simpul dari node kueri, "info_hash" yang berisi infohash dari torrent, "port" yang berisi port sebagai bilangan bulat, dan "token" yang diterima sebagai tanggapan terhadap kueri get_peers sebelumnya get_peers. Node yang ditanya harus memverifikasi bahwa token sebelumnya dikirim ke alamat IP yang sama dengan node kueri. Kemudian simpul yang ditanya harus menyimpan alamat IP dari node kueri dan nomor port yang disediakan di bawah Infohash di toko informasi kontak peer -nya.
Ada argumen opsional yang disebut tersirat_port Nilai mana yang 0 atau 1. Jika ada dan non-nol, pelabuhan Argumen harus diabaikan dan port sumber paket UDP harus digunakan sebagai port peer sebagai gantinya. Ini berguna untuk rekan -rekan di balik NAT yang mungkin tidak mengetahui port eksternal mereka, dan mendukung UTP, mereka menerima koneksi yang masuk pada port yang sama dengan port DHT.
Argumen: "," tersirat_port ":," info_hash ":" "," port ":," token ":" "> respons:">
announce_peers Query = > bencoded = d1:ad2:id20:abcdefghij012345678912:implied_porti1e9:info_hash20:mnopqrstuvwxyz1234564:porti6881e5:token8:aoeusnthe1:q13:announce_peer1:t2:aa1:y1:qe
Respons => bencoded = d1: rd2: id20: mnopqrstuvwxyz123456e1: t2: aa1: y1: re
Referensi
| [1] | Peter Maymounkov, David Mazieres, "Kademlia: Sistem Informasi Peer-to-Peer Berdasarkan Metrik XOR", IPTPS 2002. http: // www.CS.beras.Edu/Konferensi/IPTPS02/109.pdf |
| [2] | Gunakan SHA1 dan banyak entropi untuk memastikan ID yang unik. |
| [3] | BEP_0020. Konvensi peer ID. (http: // www.Bittorrent.org/beps/bep_0020.html) |
hak cipta
Dokumen ini telah ditempatkan di domain publik.
WebTorrent/Bittorrent-Dht
Komit ini bukan milik cabang apa pun di repositori ini, dan mungkin milik garpu di luar repositori.
Beralih cabang/tag
Tag cabang
Tidak bisa memuat cabang
Tidak ada yang bisa ditampilkan
Tidak bisa memuat tag
Tidak ada yang bisa ditampilkan
Nama sudah digunakan
Tag sudah ada dengan nama cabang yang disediakan. Banyak perintah git menerima nama tag dan cabang, jadi menciptakan cabang ini dapat menyebabkan perilaku yang tidak terduga. Apakah Anda yakin ingin membuat cabang ini?
Batalkan Buat
- Lokal
- Codespaces
Https github cli
Gunakan git atau checkout dengan SVN menggunakan URL Web.
Bekerja cepat dengan CLI resmi kami. Pelajari lebih lanjut tentang CLI.
Masuk
Silakan masuk untuk menggunakan codespaces.
Meluncurkan Github Desktop
Jika tidak ada yang terjadi, unduh desktop github dan coba lagi.
Meluncurkan Github Desktop
Jika tidak ada yang terjadi, unduh desktop github dan coba lagi.
Meluncurkan Xcode
Jika tidak ada yang terjadi, unduh xcode dan coba lagi.
Meluncurkan kode studio visual
Codespace Anda akan dibuka setelah siap.
Ada masalah mempersiapkan codespace Anda, coba lagi.
Komit terbaru
3B4ED64 8 Mei 2023
… V1.0.9
Statistik git
File
Gagal memuat informasi komit terbaru.
Pesan komit terbaru
Melakukan waktu
Baca aku.md
Implementasi DHT sederhana, kuat, bittorrent
Node.JS Implementasi Protokol Bittorrent DHT. BitTorrent DHT adalah lapisan penemuan rekan utama untuk BitTorrent, yang memungkinkan untuk torrents tanpa pelacak. DHT itu luar biasa!
Modul ini digunakan oleh WebTorrent.
- Implementasi lengkap protokol DHT di JavaScript
- mengikuti spesifikasi
- Mendukung BEP44 untuk menyimpan data sewenang -wenang di DHT
- kuat dan teruji dengan baik
- Rangkaian uji yang komprehensif dan sepenuhnya offline
- Digunakan oleh WebTorrent, Peerflix, dan Playback
NPM Instal Bittorrent-DHTNPM Instal Magnet-URIimpor DHT dari 'Bittorrent-dht' impor magnet dari 'Magnet-Uri' const Uri = 'Magnet:?xt = urn: btih: e3811b9539cacff680e418124272177c47477157 ' const diurai = magnet(Uri) menghibur.catatan(diurai.Infohash) // 'e3811b9539cacff680e418124272177c47477157' const DHT = baru DHT() DHT.mendengarkan(20000, fungsi () menghibur.catatan('sekarang dengarkan') >) DHT.pada('Peer', fungsi (rekan, Infohash, dari) menghibur.catatan('Menemukan rekan potensial' + rekan.tuan rumah + ':' + rekan.pelabuhan + ' melalui ' + dari.alamat + ':' + dari.pelabuhan) >) // temukan rekan untuk hash info torrent yang diberikan DHT.Lihatlah(diurai.Infohash)
DHT = DHT baru ([opts])
Buat instance DHT baru.
Jika OPTS ditentukan, maka opsi default (ditunjukkan di bawah) akan ditimpa.
nodeid: '', // ID simpul DHT 160-bit (buffer atau string hex, default: dihasilkan secara acak) Bootstrap: [], // server bootstrap (default: router.Bittorrent.com: 6881, router.uTorrent.com: 6881, DHT.transmisi.com: 6881) tuan rumah: PALSU, // Host peer lokal, jika ditentukan kemudian mengumumkan dapat ditambahkan ke tabel lokal (string, dinonaktifkan secara default) konkurensi: 16, // Opsi K-RPC untuk menentukan permintaan UDP bersamaan maksimum yang diizinkan (nomor, 16 secara default) hash: Fungsi, // fungsi hash kustom untuk digunakan (fungsi, sha1 secara default), krpc: krpc(), // instance k-rpc opsional timebucketoutdated: 900000, // periksa ember setiap 15 menit Maxage: Ketakterbatasan // pengaturan opsional untuk rekan -rekan yang diumumkan untuk waktu habis >Untuk menggunakan dht_store, atur opts.Verifikasi ke implementasi ED25519 SuperCop/Ref10. memilih.Verifikasi (tanda tangan, nilai, publicKey) harus mengembalikan boolean apakah tanda tangan dan buffer nilai dihasilkan oleh publicKey .
Misalnya, untuk DHT_Store yang dapat Anda lakukan:
impor ed dari 'ed25519-supercop' const DHT = baru DHT( memeriksa: ed.memeriksa >)
Temukan rekan untuk hash info yang diberikan.
Ini melakukan pencarian rekursif di DHT. Rekan potensial yang ditemukan dipancarkan sebagai acara sebaya. Lihat acara rekan di bawah ini untuk info lebih lanjut.
Infohash bisa berupa string atau buffer. Callback dipanggil saat pencarian rekursif telah diakhiri, dan dipanggil dengan dua paramater. Yang pertama adalah kesalahan atau nol. Yang kedua adalah jumlah node yang ditemukan yang memiliki teman sebaya. Anda biasanya tidak perlu menggunakan info ini dan hanya dapat mendengarkan acara sebaya.
Mengembalikan fungsi abort () yang memungkinkan kita untuk membatalkan kueri.
DHT.Listen ([port], [alamat], [OnListening])
Buat DHT Dengarkan di port yang diberikan . Jika port tidak ditentukan, port yang tersedia dipetik secara otomatis.
Jika alamat tidak ditentukan, DHT akan mencoba mendengarkan semua alamat.
Jika OnLension didefinisikan, itu melekat pada acara mendengarkan.
Mengembalikan objek yang berisi informasi alamat untuk soket mendengarkan DHT. Objek ini berisi alamat, keluarga, dan properti port.
DHT.mengumumkan (infohash, [port], [callback])
Mengumumkan bahwa peer, mengendalikan node kueri, mengunduh torrent di port.
Jika Anda menghilangkan port, opsi port tersirat akan ditetapkan dan rekan -rekan lainnya akan menggunakan port DHT publik sebagai port yang diumumkan.
Jika DHT.mengumumkan dipanggil dan tidak ada meja perutean yang di -cache, lalu DHT.Pencarian pertama -tama akan dilakukan untuk menemukan node yang relevan dan mendapatkan "token" yang valid dari masing -masing. Ini akan memakan waktu lebih lama.
"Token" adalah nilai buram yang harus disajikan untuk sebuah node untuk mengumumkan bahwa rekan pengendali sedang mengunduh torrent. Itu harus menyajikan token yang diterima dari node pertanyaan yang sama dalam permintaan baru -baru ini untuk rekan. Ini untuk mencegah host jahat mendaftar host lain untuk torrents. Semua manajemen token ditangani secara internal oleh modul ini.
Callback akan dipanggil ketika operasi pengumuman telah selesai, dan dipanggil dengan satu parameter yang merupakan kesalahan atau nol.
Mengembalikan keadaan DHT saat ini, termasuk node DHT dan nilai BEP44.
< "Node": [], "Nilai": <>>
Node DHT, khususnya, berguna untuk mempertahankan DHT ke disk antara restart klien BitTorrent (seperti yang direkomendasikan oleh spec). Setiap node dalam array adalah objek dengan properti host (string) dan port (angka).
Untuk mengembalikan node DHT saat instantiasi objek DHT baru, cukup lilitkan pada node di array dan tambahkan dengan metode addNode.
const DHT1 = baru DHT() // Beberapa waktu berlalu . // Hancurkan DHT const node = DHT1.TOJSON().node DHT1.menghancurkan() // Beberapa waktu berlalu . // inisialisasi DHT baru dengan tabel perutean yang sama dengan yang pertama const DHT2 = baru DHT() node.untuk setiap(fungsi (node) DHT2.addNode(node) >)
Tambahkan node secara manual ke tabel routing DHT. Jika ada ruang di tabel perutean (atau simpul yang tidak responsif dapat diusir untuk membuat ruang), simpul akan ditambahkan. Jika tidak, simpul tidak akan ditambahkan. Ini berguna untuk dihubungi saat kawat rekan mengirim pesan port untuk berbagi port DHT mereka.
Node seharusnya terlihat seperti ini:
tuan rumah: Nodehost, pelabuhan: nodeport >Hancurkan DHT. Menutup soket dan membersihkan sumber daya struktur data yang besar.
Tulis muatan sewenang -wenang ke DHT. (BEP 44).
Untuk semua permintaan, Anda harus menentukan:
- memilih.V - Payload buffer untuk ditulis, kurang dari 1000 byte
Jika Anda hanya menentukan opts.v, konten dianggap tidak berubah dan hash hanya akan menjadi hash konten.
Berikut adalah contoh sederhana untuk membuat beberapa konten abadi di DHT:
impor DHT dari 'Bittorrent-dht' const DHT = baru DHT() const nilai = Penyangga.alloc(200).mengisi('ABC') DHT.meletakkan( v: nilai >, fungsi (berbuat salah, hash) menghibur.kesalahan('Kesalahan =', berbuat salah) menghibur.catatan('hash =', hash) >)
Untuk konten yang dapat berubah, hash akan menjadi hash dari kunci publik, opts.k . Opsi ini tersedia:
- memilih.K - ED25519 Buffer Kunci Publik (32 byte) (Diperlukan)
- memilih.tanda (buf) - Fungsi untuk menghasilkan buffer tanda tangan ED25519 (64 byte) yang sesuai dengan opts.k kunci publik (wajib)
- memilih.SEQ - Urutan opsional (integer), harus meningkat secara monoton (diperlukan)
- memilih.CAS-Urutan Opsional Sebelumnya untuk Bandingkan dan Berputar
- memilih.garam - buffer garam opsional untuk dimasukkan (
Perhatikan bahwa Bittorrent BEP44 menggunakan ED25519. Anda dapat menggunakan paket ED25519-Supercop untuk menghasilkan tanda tangan yang sesuai, BitTorrent-DHT-STORE-KEIPAIR, BITTORRENT-DHT-SODIUM atau untuk versi yang lebih nyaman.
Untuk membuat pembaruan yang dapat berubah, Anda perlu membuat kunci elips dan mengemas nilai secara tepat sesuai dengan spesifikasi, seperti itu:
impor ed dari 'Bittorrent-Dht-Sodium' const keypair = ed.keygen() const nilai = Penyangga.alloc(200).mengisi('apa pun') // muatan yang ingin Anda kirim const memilih = k: keypair.pk, seq: 0, v: nilai, tanda: fungsi (buf) kembali ed.tanda(buf, keypair.SK) > > impor DHT dari 'Bittorrent-dht' const DHT = baru DHT() DHT.meletakkan(memilih, fungsi (berbuat salah, hash) menghibur.kesalahan('Kesalahan =', berbuat salah) menghibur.catatan('hash =', hash) >)
Baik dalam bentuk yang dapat berubah atau tidak dapat diubah, callback (kesalahan, hash, n) menembak dengan kesalahan jika tidak ada node yang dapat menyimpan nilainya . N diatur jumlah rekan yang menerima put dan hash, lokasi di mana konten yang dapat berubah atau tidak berubah dapat diambil (dengan DHT.dapatkan (hash)).
Perhatikan bahwa Anda harus menelepon .put () setiap jam untuk konten yang ingin Anda tetap hidup, karena node dapat membuang node data yang lebih tua dari 2 jam.
Jika Anda menerima pasangan kunci/nilai dan Anda ingin ditambahkan kembali ke DHT untuk membuatnya tetap hidup, Anda bisa meletakkannya lagi.
impor ed dari 'Bittorrent-Dht-Sodium' const DHT = baru DHT( memeriksa: ed.memeriksa >) // Anda harus menentukan param "verifikasi" jika Anda ingin mendapatkan konten yang dapat berubah, jika tidak null akan dikembalikan DHT.mendapatkan(kunci, fungsi (berbuat salah, res) DHT.meletakkan(res, fungsi () // Tambahkan kembali pasangan kunci/nilai >) >)
DHT.Dapatkan (hash, opts, callback)
Baca catatan data (dibuat dengan .put ()) dari DHT. (BEP 44)
Diberikan hash, string hex atau buffer, pencarian konten data dari DHT, mengirimkan hasil di callback (err, res) .
Opsi ini tersedia:
- memilih.Verifikasi - Ganti fungsi verifikasi ED25519 default yang disediakan selama instantiasi DHT.
- memilih.garam - buffer garam opsional (jika ada) yang digunakan untuk menghitung hash. Harus ditentukan jika dimasukkan dalam hash.
- memilih.Cache - Gunakan nilai respons yang di -cache secara lokal bila tersedia alih -alih melakukan pencarian jaringan (default ke true).
Objek res mirip dengan objek opsi yang ditulis dengan DHT dengan .meletakkan() :
- res.V - Nilai dimasukkan
- res.ID - simpul yang mengembalikan konten
- res.K - Kunci publik (hanya ada untuk data yang dapat berubah)
- res.SIG - tanda tangan (hanya ada untuk data yang dapat berubah)
- res.SEQ - Urutan (opsional, hanya ada untuk data yang dapat berubah)
Dipancarkan saat DHT sepenuhnya bootstrap (i.e. Tabel routing cukup diisi melalui node bootstrap). Perhatikan bahwa tidak apa -apa untuk melakukan pencarian sebelum acara 'siap'.
Catatan: Jika Anda menginisialisasi DHT dengan < bootstrap: false >Opsi, maka acara 'Ready' akan menembakkan centang berikutnya bahkan jika tidak ada node di tabel perutean. Diasumsikan bahwa Anda akan secara manual mengisi meja perutean dengan DHT.addNode jika Anda lulus opsi ini.
Dipancarkan saat DHT mendengarkan.
DHT.ON ('Peer', Function (Peer, Infohash, From) < . >)
Dipancarkan saat rekan potensial ditemukan. Peer adalah bentuknya . Infohash adalah info torrent hash dari segerombolan yang dimiliki rekan. Dipancarkan sebagai respons terhadap panggilan pencarian (infoHash).
DHT.on ('error', function (err) < . >)
Dipancarkan saat DHT memiliki kesalahan fatal.
DHT.on ('node', function (node) < . >)
Dipancarkan saat DHT menemukan simpul baru.
DHT.ON ('umumkan', fungsi (rekan, infoHash) < . >)
Dipancarkan ketika rekan mengumumkan dirinya untuk disimpan dalam DHT.
DHT.ON ('Warning', Function (err) < . >)
Dipancarkan saat DHT mendapat pesan yang tidak terduga dari simpul DHT lain. Ini murni informasi.
- Protokol DHT Bittorrent
- Kademlia: Sistem informasi peer-to-peer berdasarkan metrik XOR
MTE menjelaskan: Bagaimana Bittorrent DHT Peer Discovery Bekerja

Penemuan rekan adalah bagian penting dari protokol Bittorrent. Dia’s bagaimana unduhannya terjadi begitu cepat: Anda terhubung ke banyak orang, dan masing -masing mengunggah sedikit file kepada Anda. Fenomena ini telah menciptakan cara yang sangat populer untuk mengunduh dan berbagi informasi di internet, baik yang sah maupun tidak sah. Terlepas dari efeknya terhadap kekayaan intelektual, saya’m di sini untuk menggambarkan satu hal: bagaimana seluruh proses penemuan rekan kerja bittorrent benar -benar berhasil. Anda mungkin tahu sedikit (atau banyak) tentang mekanisme ini, tetapi tentu saja Anda cukup’penasaran untuk mengetahui apa arti istilah DHT dan bagaimana rekan -rekan yang terdaftar di bawahnya menemukan Anda di tempat pertama.
Apa arti DHT?
DHT kekurangan “Tabel Hash Terdistribusi,” dan itu mewakili media yang Anda temukan, juga dikenal sebagai “Bootstrap.” SAYA’LL jelaskan sedikit. Perlu diingat fakta bahwa Anda dapat menemukan rekan melalui DHT.

Sementara banyak orang mengatakannya’S desentralisasi, itu’S sebenarnya sangat sulit untuk melakukan ini, mengingat sifat unicast dari internet. Saat Anda terhubung ke web, Anda tidak’t mengumumkan kehadiran Anda ke miliaran komputer yang sudah terhubung. Ini hanya akan membuang banyak bandwidth. Sebaliknya, penyedia layanan internet lokal Anda’router, serta tujuan yang Anda hubungkan, adalah satu -satunya yang sadar Anda’bahkan online. Itu’s apa “unicast” artinya, di awam’istilah s. Multicast adalah apa yang terjadi saat komputer Anda masuk ke jaringan lokal. Kehadirannya diketahui oleh setiap komputer lain di subnet yang sama, dan mereka’sekarang sadar akan kehadiran Anda. Karena ini tidak’t terjadi di internet eksternal, di sana’benar -benar tidak ada cara untuk benar -benar menyusun struktur yang sepenuhnya terdesentralisasi, mengingat keterbatasan protokol bittorrent itu sendiri.
Akibatnya, cenderung ada dua DHT utama yang Anda sambungkan saat Anda mulai mengunduh file torrent: router.Bittorrent.com Dan router.uTorrent.com. Jika Anda’Penasaran, Anda terhubung ke mereka di port 6881. Dia’tidak terlalu diperlukan untuk menghafal informasi ini. Terkadang data rekan tertanam dalam file torrent untuk membuat proses menemukan rekan lebih mudah.
Bootstrap

Untuk mulai mengumpulkan teman -teman, pertama harus bootstrap ke dalam jaringan torrent. Bootstrap hanyalah cara mewah untuk menggambarkan proses menghubungkan ke DHT dan menemukan rekan. Setelah terhubung, server DHT akan mengirimkan beberapa alamat IP peer yang Anda’ll juga terhubung ke. Mereka’akan memberi Anda alamat rekan yang terhubung dengan mereka, dan sebagainya, dan sebagainya, sampai daftar rekan Anda menunjukkan semua rekan yang mengunduh (atau penyemaian) file Anda’mencoba untuk mendapatkan. Dia’seperti mengikuti pohon dari akar ke cabang.
Secara teoritis, Anda hanya benar -benar membutuhkan satu alamat sebaya untuk mendapatkan semua rekan lainnya, karena itu akan membagikan sisa alamat dengan Anda. Ini menyelamatkan pelacak dan DHT satu ton bandwidth yang seharusnya sia -sia dalam mengirim daftar rekan ke setiap rekan baru yang terhubung dan memberi tahu setiap orang ketika salah satu dari mereka memutuskan hubungan. Kerumitan diminimalkan dengan membuat informasi menyampaikan satu sama lain.
Setelah kamu’telah menemukan semua rekan Anda, unduhan Anda dimulai!
Jika DHT ada di luar sana, mengapa kebanyakan orang masih menggunakan pelacak?
DHT bisa menyenangkan, tetapi kebanyakan orang masih menggunakan pelacak untuk mengunduh data mereka. Ini karena sifat yang melekat dari DHT. Membiarkan’S bilang saya memiliki situs di mana saya mengunggah banyak kreasi sumber terbuka saya sebagai torrents. Untuk sepenuhnya mengontrol apa yang terjadi pada torrents itu, dan melindungi privasi individu yang mengunduhnya, itu’lebih menguntungkan bagi saya untuk menjadi tuan rumah pelacak saya sendiri. Situs yang memposting pelacak penggunaan materi pengunduhan terlarang sebagai media preferensi mereka untuk mempertahankan aspek bawah tanah dan mengontrol apa yang diterbitkan pada mereka dan apa yang dihapus.
Yang mengatakan, tidak semua unduhan torrent ilegal. Di sana’S a Repositori besar-besaran dari proyek open-source dan domain publik karya orang yang hanya ingin membagikan apa yang mereka miliki tanpa membuang-buang bandwidth host web mereka.
Bingung?
Jika kamu’masih bingung dengan informasi yang dibagikan di sini, tinggalkan komentar di bawah ini dan kami dapat berdiskusi!
Miguel Leiva-Gomez
Miguel telah menjadi ahli pertumbuhan bisnis dan teknologi selama lebih dari satu dekade dan telah menulis perangkat lunak bahkan lebih lama. Dari kastil kecilnya di Rumania, ia menyajikan perspektif yang dingin dan analitis untuk hal -hal yang memengaruhi dunia teknologi.
Berlangganan newsletter kami!
Tutorial terbaru kami dikirim langsung ke kotak masuk Anda
