Menggunakan NAT Traversal untuk menghubungkan pengguna dalam mode pasif

Artikel ini adalah terjemahan gratis dari salah satu entri di Blog pengembang DC++.

Dengan izin dari penulis (serta untuk kejelasan dan minat), saya mewarnainya dengan tautan dan melengkapinya dengan beberapa penelitian pribadi.

pengenalan

Setidaknya satu pengguna dari pasangan penghubung harus berada dalam mode aktif saat ini. Mekanisme traversal NAT akan berguna ketika mode aktif tidak dikonfigurasi di kedua sisi. Hal ini biasanya disebabkan oleh firewall atau perangkat NAT yang memblokir koneksi masuk.

Jika kedua klien dalam mode aktif

Klien yang memulai mengirimkan perintah yang berisi alamat IP dan portnya sendiri $HubungkanToSaya ke klien lain. Dengan menggunakan data ini, klien yang menerima perintah membuat koneksi dengan inisiator.

Jika salah satu klien dalam mode pasif

Melalui hub, klien pasif A mengirimkan perintah $RevConnectToMe klien aktif Byang kemudian merespons dengan perintah $ConnectToMe.

Menggunakan NAT Traversal untuk menghubungkan pengguna dalam mode pasif
Sebagai pelayan S pada kasus di atas ada hub DC

Jika kedua klien dalam mode pasif aktif pusat ADC

Klien di balik NAT yang berbeda A ΠΈ B bergabung dengan hub S.

Menggunakan NAT Traversal untuk menghubungkan pengguna dalam mode pasif
Ini adalah tampilan koneksi ke hub dari sisi klien A

Hub menerima koneksi pada port 1511. Klien A membuat koneksi keluar dari jaringan pribadinya melalui port 50758. Hub, pada gilirannya, melihat alamat perangkat NAT, bekerja dengannya dan menyiarkannya ke klien sesuai dengan pengidentifikasi mereka.

Klien A mengirimkan ke server S pesan meminta bantuan untuk terhubung dengan klien B.

Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991

Juga dalam mode pasif, klien B, setelah menerima perintah ini, harus melaporkan port pribadinya yang digunakan untuk terhubung ke hub melalui NAT.

Hub: [Incoming][178.79.159.147:1511] DNAT BBBB AAAA ADCS/0.10 59566 1649612991

Setelah menerima informasi ini klien A segera mencoba membuat koneksi dengan klien B dan melaporkan pelabuhan pribadinya sendiri.

Hub:		[Outgoing][178.79.159.147:1511]	 	D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991

Apa minatnya? Kepentingannya adalah menggeser titik akhir koneksi yang sama dengan membuat koneksi baru ke alamat publik melalui port privat yang sudah digunakan.

Menggunakan NAT Traversal untuk menghubungkan pengguna dalam mode pasif
Bingo!

Tentu saja, dalam hal ini klien NAT B berhak menolak permintaan koneksi pertama dari klien A, tetapi permintaannya sendiri mengalir ke β€œlubang” yang diciptakan oleh koneksi ini, dan koneksi pun terjalin.

Menggunakan NAT Traversal untuk menghubungkan pengguna dalam mode pasif
Ilustrasi cocok untuk keseluruhan proses dengan peringatan itu protokol tidak menggunakan port publik yang dibuka oleh sesi NAT-S, serta alamat pribadi.

Bagian terakhir dr suatu karya sastra

Pada saat penulisan artikel (asli), sekitar setengah dari klien DC bekerja dalam mode pasif. Ini berarti seperempat dari semua kemungkinan sambungan tidak dapat dibuat.

Di masa depan DC++ akan dapat melewati NATmenggunakan koneksi yang ada A-S ΠΈ B-S untuk membuat koneksi klien-klien langsung, meskipun A ΠΈ B berada dalam mode pasif.

Sumber: www.habr.com

Tambah komentar