استخدام NAT Traversal لتوصيل المستخدمين في الوضع الخامل

هذه المقالة هي ترجمة مجانية لأحد الإدخالات في مدونة مطور DC++.

وبإذن المؤلف (وكذلك من أجل الوضوح والفائدة)، قمت بتلوينه بالروابط وأكملته ببعض الأبحاث الشخصية.

مقدمة

يجب أن يكون مستخدم واحد على الأقل من الزوج المتصل في الوضع النشط في هذا الوقت. ستكون آلية اجتياز NAT مفيدة عندما لا يتم تكوين الوضع النشط على أي من الجانبين. يحدث هذا عادةً بسبب جدار الحماية أو جهاز NAT الذي يحظر الاتصالات الواردة.

إذا كان كلا العميلين في الوضع النشط

يرسل العميل البادئ أمرًا يحتوي على عنوان IP الخاص به والمنفذ $ كونيكت تو مي إلى عميل آخر. باستخدام هذه البيانات، يقوم العميل الذي تلقى الأمر بإنشاء اتصال مع البادئ.

إذا كان أحد العملاء في الوضع السلبي

من خلال المحور، عميل سلبي A يرسل أمرا $ريفكوننيكتومي العميل النشط Bوالذي يستجيب بعد ذلك بالأمر $ConnectToMe.

استخدام NAT Traversal لتوصيل المستخدمين في الوضع الخامل
كخادم S في الحالة أعلاه يوجد محور DC

إذا كان كلا العميلين في الوضع السلبي محور أدك

العملاء وراء NATs المختلفة 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 لتوصيل المستخدمين في الوضع الخامل
الرسم التوضيحي مناسب للعملية برمتها مع التحذير من ذلك بروتوكول لا يستخدم المنافذ العامة التي تفتحها الجلسة NAT-Sوكذلك العناوين الخاصة.

خاتمة

في وقت كتابة المقالة (الأصلية)، كان ما يقرب من نصف عملاء DC يعملون في الوضع السلبي. وهذا يعني أنه لا يمكن إجراء ربع جميع الاتصالات الممكنة.

بالإضافة إلى ذلك سيكون DC++ قادرًا على تجاوز NATباستخدام الاتصالات الموجودة A-S и B-S لإنشاء اتصال مباشر بين العميل والعميل، حتى لو A и B هم في الوضع السلبي.

المصدر: www.habr.com

إضافة تعليق