استفاده از NAT Traversal برای اتصال کاربران در حالت غیرفعال

این مقاله ترجمه رایگان یکی از مدخل های موجود در وبلاگ توسعه دهنده DC++.

با اجازه نویسنده (و همچنین برای وضوح و علاقه)، آن را با پیوندها رنگ آمیزی کردم و با تحقیقات شخصی تکمیل کردم.

معرفی

حداقل یک کاربر از جفت اتصال باید در این زمان در حالت فعال باشد. مکانیسم پیمایش NAT زمانی مفید خواهد بود که حالت فعال در هر دو طرف پیکربندی نشده باشد. این معمولاً به دلیل مسدود کردن اتصالات ورودی توسط یک فایروال یا دستگاه NAT است.

اگر هر دو کلاینت در حالت فعال باشند

کلاینت آغازگر دستوری را ارسال می کند که حاوی آدرس IP و پورت خود است $ConnectToMe به مشتری دیگر با استفاده از این داده ها، سرویس گیرنده ای که فرمان را دریافت کرده است، با آغازگر ارتباط برقرار می کند.

اگر یکی از مشتریان در حالت غیرفعال باشد

از طریق هاب، یک مشتری منفعل A فرمان می فرستد $RevConnectToMe مشتری فعال Bکه سپس با دستور $ConnectToMe پاسخ می دهد.

استفاده از NAT Traversal برای اتصال کاربران در حالت غیرفعال
به عنوان یک سرور S در مورد بالا یک هاب DC وجود دارد

اگر هر دو کلاینت در حالت غیرفعال روشن باشند هاب ADC

مشتریان پشت NAT های مختلف A и B به هاب پیوست S.

استفاده از NAT Traversal برای اتصال کاربران در حالت غیرفعال
اینگونه است که اتصال به هاب از سمت مشتری به نظر می رسد A

هاب اتصالات در پورت 1511 را می پذیرد. مشتری A اتصالات خروجی را از شبکه خصوصی خود از طریق پورت 50758 برقرار می کند. هاب نیز به نوبه خود آدرس دستگاه NAT را می بیند، با آن کار می کند و آن را با توجه به شناسه مشتریان برای مشتریان پخش می کند.

مشتری A به سرور ارسال می کند S پیام درخواست کمک برای ارتباط با مشتری B.

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

همچنین در حالت غیرفعال، مشتری Bبا دریافت این دستور، باید پورت خصوصی خود را که برای اتصال به هاب از طریق NAT استفاده می شود، گزارش دهد.

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

پس از دریافت این اطلاعات مشتری A بلافاصله سعی می کند با مشتری ارتباط برقرار کند B و پورت خصوصی خودش را گزارش می دهد.

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

چه علاقه ای دارد؟ علاقه به جابجایی نقطه پایانی همان اتصال با ایجاد یک اتصال جدید به یک آدرس عمومی از طریق یک پورت خصوصی از قبل استفاده شده است.

استفاده از NAT Traversal برای اتصال کاربران در حالت غیرفعال
بینگو!

البته در این مورد کلاینت NAT B حق دارد اولین درخواست اتصال از مشتری را رد کند A، اما درخواست خود او به درون "سوراخ" ایجاد شده توسط همین ارتباط می رود و ارتباط برقرار می شود.

استفاده از NAT Traversal برای اتصال کاربران در حالت غیرفعال
تصویر مناسب برای کل فرآیند با احتیاط که پروتکل از پورت های عمومی باز شده توسط جلسه استفاده نمی کند NATSو همچنین آدرس های خصوصی.

خاتمه

در زمان نوشتن مقاله (اصلی)، تقریباً نیمی از مشتریان DC در حالت غیرفعال کار می کنند. این بدان معنی است که یک چهارم تمام اتصالات ممکن را نمی توان برقرار کرد.

به علاوه DC++ قادر به دور زدن NAT خواهد بودبا استفاده از اتصالات موجود AS и BS برای برقراری ارتباط مستقیم مشتری-مشتری، حتی اگر A и B در حالت منفعل هستند.

منبع: www.habr.com

اضافه کردن نظر