سؤال

من مشاركة جويل على مساعد الطيار:

اتصال مباشر!لقد فعلنا دائمًا كل ما في وسعنا للتأكد من أن Fog Creek Copilot يمكنه الاتصال في أي موقف تواصل ، بغض النظر عن جدران الحماية أو Nats.لتحقيق ذلك ، يقوم كلا الطرفين بإجراء اتصالات خارجية إلى خادمنا ، والذي يرسل حركة المرور نيابة عنهم.حسنًا ، في كثير من الحالات ، هذا ليس ضروريًا.لذا فإن الإصدار 2.0 يفعل شيئًا ذكيًا إلى حد ما:يقوم بإعداد الاتصال الأولي من خلال خوادمنا ، بحيث تتصل على الفور بموثوقية بنسبة 100 ٪.ولكن بمجرد أن تكون متصلاً جميعًا ، فإنه بهدوء ، في الخلفية ، يبحث عن طريقة لإجراء اتصال مباشر.إذا لم يستطع ذلك ، فلا صفقة كبيرة:أنت فقط تستمر في الترحيل من خلال خادمنا.إذا كان بإمكانك إجراء اتصال مباشر من نظير إلى نظير ، فإنه يقوم بنقل بياناتك بصمت إلى الاتصال المباشر.لن تلاحظ أي شيء إلا ، على الأرجح ، اتصال أسرع بكثير.

كيف يقومون بتغيير اتصال الخادم إلى اتصال P2P؟

هل كانت مفيدة؟

المحلول

إنها صعبة جدًا ومثيرة للاهتمام.أنا متأكد من أن لدي بعض التفاصيل الخاطئة، ولكن النظرة العامة هي كما يلي:

يمكن للبرامج التحدث مع بعضها البعض بالفعل من خلال خادم جويل، حتى يتمكنوا من تبادل المعلومات مع بعضهم البعض ومع خادم جويل.علاوة على ذلك، لدى جويل عناوين IP الخارجية الخاصة بهم، وهم يقدمون معلومات لجويل حول عناوين IP الداخلية الخاصة بهم.

قرروا تجربة تقنية ثقب الثقب هذه.يبدأ الكمبيوتر "أ" اتصال TCP مع الكمبيوتر "ب" باستخدام عنوان IP الخارجي الخاص بـ "ب".لن يتم المرور، ولكن ما يفعله هو إخبار جهاز التوجيه الخاص بـ A بأنه يحتاج إلى السماح للحزم الواردة من B على منفذ معين.

يفعل الكمبيوتر B نفس الشيء، لكن رسالته تصل إلى A نظرًا لأن جهاز التوجيه الخاص بـ A فتح مجموعة منفذ/IP تتطابق مع ما أرسله B (هناك بعض سحر المنفذ الذي يحدث هنا - وهذا ليس تافهًا، ولكنه قابل للتنفيذ).

يتذكر جهاز التوجيه الخاص بـ B أن B بدأ الاتصال مع A على منفذ معين وIP معين، وبالتالي تتدفق حزم A الآن إلى B عبر جهاز التوجيه الخاص بهم بشكل صحيح أيضًا.

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

-آدم

نصائح أخرى

هناك تقنية تسمى "الثقب" الذي يعمل بشكل جيد مع "Cone" NAT (Cone عبارة عن عائلة تقنية من أجهزة التوجيه).هذه ليست تقنية مؤكدة بنسبة 100%، فهي اليوم تعمل بشكل جيد مع UDP على حوالي 80% من جهاز التوجيه.

هناك بعض تطبيقات المكتبة لتحقيق Hole Punching: صاعقة (ويكيبيديا)

أعتقد أن الإصدار البسيط هو أنهم قاموا بإسقاط اتصال الخادم واستبداله باتصال P2P.

شيء على غرار:

  1. يتصل Machine1 بخوادم مساعد الطيار.
  2. يتصل Machine1 بخوادم مساعد الطيار.
  3. يتصل Machine1 بخوادم مساعد الطيار.
  4. يتصل Machine2 بعد ذلك، ويبدأ في مشاركة الشاشة.
  5. يفتح Machine2 منفذًا مخصصًا لاتصال Machine1 به.
  6. يحاول Machine1 الاتصال بالمنفذ المفتوح الآن على Machine2.

إذا تم تأسيس هذا الاتصال:

  1. تم قطع الاتصال بخوادم مساعد الطيار.
  2. يتم بدلاً من ذلك نقل البيانات عبر الاتصال المباشر (P2P) بين الجهازين.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top