كيفية التحقق من محتويات حزمة العودة في ICMP بينغ / صدى؟

StackOverflow https://stackoverflow.com/questions/321293

  •  11-07-2019
  •  | 
  •  

سؤال

عند التحقق من صدى بينغ، يبدو أن المرافق / المكتبات غالبا ما تحقق سوى الاختباري من الحزمة، ولا تؤكد فعلا أن حمولة أرسلت مباريات الحمولة التي تم إرجاعها. على سبيل المثال، محلل ICMP إيثار ريال ليتحقق فقط من أجل اختبارية سيئة، وهذا كل ما روبي الصافية لل روبي الشيكات كذلك.

وأنا التصحيح قضية برنامج تشغيل شبكة الاتصال على مستوى منخفض، وأنا بحاجة للتأكد من أن البيانات لا يجري المهترئ عندما وردت، لذلك أريد أن اختبار السائق الخاص بي باستخدام طلب على مستوى منخفض مثل <أ href = ل "http://tools.ietf.org/html/rfc792" يختلط = "نوفولو noreferrer"> ICMP صدى . ومع ذلك، أدواتي بينغ الحالية غير كافية، لأنني أخشى أنه في حين أن الاختباري قد تطابق البيانات الواردة في رد الصدى، البيانات في استجابة صدى لا يتطابق مع البيانات في طلب الصدى. حتى على الرغم من أن كلا منهما اختبارية صالحة (لا يوجد خطأ في التعليمات البرمجية الاختباري)، هناك خطأ في البيانات تلقي جزء، مثل أن سائق بلدي لا يتلقى ما يفكر المضيف انها إرسال.

وكيف يمكن أن أتحقق من حمولة صدى للتأكد من أنه هو نفس ما بعثت بها؟ إذا كان هناك قائمة بذاتها "بينغ بجنون العظمة" المنفعة التي يمكن استخدامها، وهذا جيد جدا - أنا فقط بحاجة إلى أن تكون قادرة على تختلف أطوال بينغ والترددات كما اراه المشكلة فقط عندما تكون الشبكة التي غمرتها المياه.

وكنت تفضل ذلك في شكل روبي مكتبة / المتكررة، ولكن أي لغة أو التطبيق المستقل هو مقبول، في ما دام يمكنني نعل ذلك في تشغيل ويندوز.

وشكرا!

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

المحلول 2

وTom: شكرا للإجابة. قلت:

<اقتباس فقرة>   

والمتلقي إعادة يحسب الاختباري من البيانات ويقارن ذلك لتلك التي تم إرسالها.

ولكن بعد ذلك قال أيضا:

<اقتباس فقرة>   

لا يتضمن الاختباري ICMP رؤوس TCP، فقط نوع ICMP، رمز، الاختباري وحقول البيانات.

ونوع ICMP يختلف بين طلب صدى / رد (واحد هو 0، والآخر هو أنا أعتقد 8). لذلك من خلال تعريف (وعمليا، إذا كنت تأخذ نظرة خاطفة مع إيثار ريال) اختبارية ICMP لا تطابق بين طلب إرسال والرد الصدى.

وكانت مشكلتي انه اذا المرافق بينغ / مكتبات فحص أي شيء (وغالبا ما فعلوه لا)، قاموا بفحص فقط للتأكد من أن الاختباري مطابقة البيانات. إلا أنه يبدو أن نادرا ما يفعل الناس في الواقع التحقق من البيانات المرسلة مع استجابة echo'd للتأكد من أن الحمولات هما متطابقة. فمن الممكن أن كلا من الطلب والرد يمكن أن يكون اختبارية صالحة، ولكن حمولات مختلفة، ومعظم الروتينية بينغ رأيت لم التحقق من مثل هذا الشرط (ولكن يحدث أن تكون هذا النوع من الأخطاء أواجه في بلدي الجهاز في الوقت الحاضر).

وشكرا للنظر في سؤالي والاستجابة على الرغم من - هو محل تقدير ذلك كثيرا

و @جميع:

في رده على سؤالي الخاص، وكنت قادرا على استخدام قوة <لأ href = "http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping(VS.80) .aspx اتصال "يختلط =" نوفولو noreferrer ">. الطبقة صافي بينغ ، كما أنه يتيح لي سهولة الوصول إلى المخزن المؤقت استجابة تلقت (على عكس معظم المكتبات بينغ أخرى وجدت).

نصائح أخرى

وأعتقد أنك في عداد المفقودين نقطة من الاختباري. والغرض من هذا هو اختباري للتحقق من أن البيانات سليمة. المرسل يحسب الاختباري من البيانات، ويحيله مع البيانات. المتلقي إعادة بحساب الاختباري من البيانات ومقارنتها لتلك التي تم إرسالها. إذا كانت لا تطابق، ثم البيانات ليست سليمة أو واحد من اثنين يحسب أنه من الخطأ. في معظم الأحيان اختبارية سيئة لا تؤدي إلى الحزم المسلمة لأن هناك الكثير من بروتوكول كسر مداخن هناك، وmanglers حزمة الدورة والتي لا إصلاح عن الاختباري، ولكن إذا كان كلا الجانبين لا يحدث للقيام بذلك بشكل صحيح ثم الاختيار الاختباري يخبرك أن البيانات سليمة.

هل تبحث في الاختباري TCP أو الاختباري ICMP؟ لا يتضمن الاختباري ICMP رؤوس TCP، فقط نوع ICMP، رمز، الاختباري وحقول البيانات. فشل الاختباري TCP لا يعني بالضرورة محتويات ICMP ليست سليمة، ويمكن أن يعني فقط أن رؤوس TCP وعبثوا (عن طريق كسر NAT، ربما).

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