سؤال

أنا أعمل على مشروع مرتبط بالشبكة وأنا أستخدم DTLS (TLS/UDP) لتأمين الاتصالات.

قراءة مواصفات DTLs ، لاحظت أن DTLs تتطلب df العلم (لا جزء) ليتم تعيينه.

على شبكتي المحلية إذا حاولت إرسال رسالة أكبر من 1500 بايت ، لا يتم إرسال شيء. هذا منطقي تمامًا. على Windows ، تقارير SendTo () عن نجاح ولكن لا يتم إرسال شيء.

من الواضح أنني لا أستطيع ضبط df العلم يدويًا لأنه إلزامي لـ DTLs ولست متأكدًا مما إذا كان الحد الأقصى البايت 1500 (MTU؟) يمكن أن يتغير في بعض المواقف. أعتقد أنه يمكن.

لذا ، سؤالي هو: "هل هناك طريقة لاكتشاف هذا الحد؟" باستخدام واجهات برمجة التطبيقات؟

إذا لم يكن الأمر كذلك ، فماذا ستكون أقل قيمة ممكنة؟

يتم تشغيل برامجي تحت UNIX (Linux/Mac OSX) و Windows Oss حتى يتم الترحيب بحلول مختلفة لكل نظام تشغيل ؛)

شكرا جزيلا.

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

المحلول

يوجد الحد الأدنى من MTU يجب دعمه - 576 بايت ، بما في ذلك رؤوس IP. لذلك إذا احتفظت بحزمك أدناه ، فلا داعي للقلق بشأن PMTU-D (هذا ما يفعله DNS).

نصائح أخرى

ربما تحتاج إلى "ضبط تلقائي" عن طريق إرسال مجموعة من أحجام الحزم إلى الهدف ، ومعرفة أيها. فكر في Binary_Search ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top