Foydalanuvchilarni passiv rejimda ulash uchun NAT Traversal-dan foydalanish

Ushbu maqola yozuvlardan birining bepul tarjimasi DC++ ishlab chiquvchi blogi.

Muallifning ruxsati bilan (shuningdek, ravshanlik va qiziqish uchun) men uni havolalar bilan rangladim va shaxsiy tadqiqotlar bilan to'ldirdim.

kirish

Bu vaqtda ulanish juftligining kamida bitta foydalanuvchisi faol rejimda bo'lishi kerak. NAT o'tish mexanizmi faol rejim har ikki tomonda ham sozlanmagan bo'lsa foydali bo'ladi. Bu, odatda, kiruvchi ulanishlarni bloklaydigan xavfsizlik devori yoki NAT qurilmasi bilan bog'liq.

Ikkala mijoz ham faol rejimda bo'lsa

Boshlovchi mijoz o'zining IP manzili va portini o'z ichiga olgan buyruq yuboradi $ConnectToMe boshqa mijozga. Ushbu ma'lumotlardan foydalanib, buyruqni olgan mijoz tashabbuskor bilan aloqa o'rnatadi.

Mijozlardan biri passiv rejimda bo'lsa

Hub orqali passiv mijoz A buyruq yuboradi $RevConnectToMe faol mijoz Bkeyin $ConnectToMe buyrug'i bilan javob beradi.

Foydalanuvchilarni passiv rejimda ulash uchun NAT Traversal-dan foydalanish
Server sifatida S yuqoridagi holatda DC hub mavjud

Ikkala mijoz ham passiv rejimda bo'lsa ADC markazi

Turli NATlar ortidagi mijozlar A и B markazga qo'shildi S.

Foydalanuvchilarni passiv rejimda ulash uchun NAT Traversal-dan foydalanish
Xabga ulanish mijoz tomonidan shunday ko'rinadi A

Hub 1511-portdagi ulanishlarni qabul qiladi. Mijoz A 50758-port orqali o'zining shaxsiy tarmog'idan chiquvchi ulanishlarni amalga oshiradi. Hub, o'z navbatida, NAT qurilmasining manzilini ko'radi, u bilan ishlaydi va ularni identifikatorlari bo'yicha mijozlarga uzatadi.

Xaridor A serverga yuboradi S mijoz bilan bog'lanishda yordam so'ragan xabar B.

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

Shuningdek, passiv rejimda mijoz B, ushbu buyruqni olgandan so'ng, NAT orqali markazga ulanish uchun foydalanilgan shaxsiy port haqida xabar berishi kerak.

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

Ushbu ma'lumotni olgandan so'ng, mijoz A darhol mijoz bilan aloqa o'rnatishga harakat qiladi B va o'zining shaxsiy porti haqida xabar beradi.

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

Nima qiziqish bor? Qiziqish allaqachon ishlatilgan shaxsiy port orqali umumiy manzilga yangi ulanishni yaratish orqali bir xil ulanishning so'nggi nuqtasini o'zgartirishdir.

Foydalanuvchilarni passiv rejimda ulash uchun NAT Traversal-dan foydalanish
Bingo!

Albatta, bu holda mijoz NAT B mijozning birinchi ulanish so'rovini rad etishga haqli A, lekin uning o'z so'rovi aynan shu aloqa tufayli yaratilgan "teshik" ga shoshiladi va aloqa o'rnatiladi.

Foydalanuvchilarni passiv rejimda ulash uchun NAT Traversal-dan foydalanish
Ogohlantirish bilan butun jarayon uchun mos rasm protokol sessiya tomonidan ochilgan umumiy portlardan foydalanmaydi NAT-S, shuningdek shaxsiy manzillar.

Epilog

(Asl) maqolani yozish vaqtida DC mijozlarining taxminan yarmi passiv rejimda ishlamoqda. Bu barcha mumkin bo'lgan ulanishlarning to'rtdan bir qismini amalga oshirish mumkin emasligini anglatadi.

Kelajakda DC++ NAT ni chetlab o'tishi mumkin bo'ladimavjud ulanishlardan foydalanish A-S и B-S to'g'ridan-to'g'ri mijoz-mijoz aloqasini o'rnatish uchun, hatto A и B passiv rejimda.

Manba: www.habr.com

a Izoh qo'shish