TCP SACK وDSACK في Wireshark: تشخيص فقدان الحزمة وخيار sack_perm وإعادة الإرسال في PCAPs
تشخيص خيارات TCP SACK وDSACK وsack_perm في Wireshark PCAPs. ويغطي الإقرارات الانتقائية واسترداد فقدان الحزم وإعادة الترتيب وتكرار ACKs وعمليات إعادة الإرسال الزائفة.
يصبح تحليل إعادة إرسال TCP أكثر دقة عند توفر الإقرار الانتقائي. يبحث المستخدمون عن "TCP SACK pcap" و"DSACK Wireshark" و"duplicate SACK" و"إعادة الإرسال الزائف" و"إعادة ترتيب TCP مقابل فقدان الحزمة" و"التقاط حزمة ACK انتقائية" عندما يُظهر التتبع ACKs مكررة وعمليات إعادة إرسال وحزم خارج الترتيب ولكن السبب الجذري غير واضح.
تعتبر جراحة PCAP مفيدة لأن دليل SACK يتم تنفيذه في خيارات TCP. إذا قمت بقص الحزم الخاطئة، أو فقدت المصافحة، أو فصلت ACKs عن البيانات، يصبح التشخيص أضعف.
ما يضيفه SACK
تتعرف ACKs TCP التقليدية على البايت المتوقع التالي. إذا كان هناك جزء مفقود ولكن وصلت أجزاء لاحقة، فيمكن للمتلقي الاستمرار في إقرار الفجوة فقط.
يتيح SACK للمتلقي أن يقول: "ما زلت أفتقد هذا النطاق السابق، ولكنني تلقيت هذه النطاقات اللاحقة."
وهذا يساعد على التمييز:
- فقدان الحزمة الفعلي
- التسليم خارج الترتيب.
- الحزم المكررة.
- سلوك المتلقي
- سلوك استرداد المرسل.
يجب التفاوض على SACK
يتم التفاوض على قدرة SACK في SYN وSYN-ACK. إذا بدأ الالتقاط بعد المصافحة، فقد لا تعرف ما إذا كان SACK مسموحًا به أم لا.
احفظ دائمًا:
- SYN.
- SYN-ACK.
- خيار SACK المسموح به.
- خيار مقياس النافذة.
- خيار الطابع الزمني إذا كان موجودا.
وهذا هو السبب في أن "غطاء صغير الحجم حول إعادة الإرسال" قد لا يكون كافيًا.
تكرار ACKs مع كتل SACK
الإقرارات المكررة لا تعني جميعها نفس الشيء. يمكن لـ ACK المكرر مع كتل SACK إخبار المرسل بالضبط بنطاقات البايت اللاحقة التي وصلت.
أدلة للتفتيش:
- رقم الاقرار.
- كيس الحافة اليسرى والحافة اليمنى.
- كتل SACK المتكررة.
- معلومات كيس جديدة.
- ما إذا كانت البيانات المفقودة ستظهر لاحقًا.
- ما إذا كانت إعادة الإرسال تملأ الفجوة.
وهذا أقوى بكثير من مجرد حساب الإقرارات المكررة.
فقدان الحزمة مقابل إعادة الترتيب
إذا وصل مقطع متأخرًا ولكن لم يتم فقده، فقد يُظهر SACK أن البيانات اللاحقة قد تم استلامها بالفعل. قد يقوم المرسل بإعادة الإرسال، ومن ثم قد تصل الحزمة الأصلية أيضًا. يمكن أن يبدو ذلك فوضويًا.
أسئلة:
- هل وصل الجزء الأصلي متأخرا؟
- هل وصلت إعادة الإرسال أولاً؟
- هل أبلغت DSACK لاحقًا عن بيانات مكررة؟
- هل هناك مسار يعيد ترتيب الحزم؟
- هل تعبر الدفقات روابط أو أنفاقًا أو مسارات متوازنة التحميل؟
يمكن أن تساعد جراحة PCAP في عزل نطاق التسلسل الدقيق ومقارنة ترتيب الحزم.
ماذا يعني DSACK
يمكن لـ Duplicate SACK الإبلاغ عن تلقي بيانات مكررة. وهذا مفيد لتحديد عمليات إعادة الإرسال الزائفة أو إعادة الترتيب.
قد تشير أدلة DSACK إلى:
- أعاد المرسل إرسالها دون داع.
- قامت الشبكة بتسليم البيانات الأصلية في وقت متأخر.
- شهدت نقطة الالتقاط التكرارات.
- حصل جهاز الاستقبال على كل من البايتات الأصلية والمعاد إرسالها.
- الحزم المكررة في Middlebox.
وهذا استنتاج مختلف عن عبارة "فقدت الحزمة".
إعادة الإرسال الزائفة
إعادة الإرسال ليست دائمًا دليلاً على الخسارة. قد يتم تشغيله عن طريق:
- Reordering.
- تأخر سلوك ACK.
- التقاط التحف التفريغ.
- مهلة إعادة الإرسال صغيرة جدًا.
- ضغط ACK.
- توقيت المحاكاة الافتراضية.
- عدم تماثل المسار.
تساعد SACK وDSACK في إثبات ما إذا كانت البيانات مفقودة بالفعل أو متأخرة.
نقطة الالتقاط مهمة
إذا كان pcap أحادي الجانب أو تم أخذه خلف NAT، فقد يكون تفسير SACK أمرًا صعبًا. قد تكون الحزمة غائبة عن نقطة الالتقاط الخاصة بك ولكنها موجودة في جهاز الاستقبال.
ممارسة مفيدة:
- قارن بين اللقطات من جانب المرسل والمستقبل.
- حافظ على مزامنة الطوابع الزمنية.
- الحفاظ على أرقام التسلسل.
- تجنب قطع حزم ACK فقط.
- لاحظ موقع التفريغ والتقاط.
تحليل SACK بدون حزم ACK ليس تحليلاً.
قائمة التحقق من التصحيح
استخدم سير العمل هذا:
- احتفظ بمصافحة TCP.
- تأكيد السماح بـ SACK.
- ابحث عن أول نسخة ACK مكررة.
- فك رموز كتل SACK.
- تعيين نطاقات SACK لحزم البيانات.
- تحديد نطاقات التسلسل المعاد إرسالها.
- تحقق من وجود DSACK.
- خسارة منفصلة عن إعادة الطلب.
- تحقق من نقطة الالتقاط وسياق التفريغ.
- الاحتفاظ بالحزم قبل/بعد حدث الاسترداد.
التشخيص النهائي
يوفر TCP SACK وDSACK دليلاً دقيقًا على فقدان الحزم وإعادة الترتيب والتسليم المكرر وعمليات إعادة الإرسال الزائفة. المفتاح هو الحفاظ على خيارات المصافحة، وحزم ACK فقط، وكتل SACK، ونطاقات التسلسل المعاد إرسالها.
تساعد جراحة PCAP في الحفاظ على سلامة هذه الأدلة حتى يتمكن تحليل فقدان TCP من تجاوز أعداد ACK المكررة العامة.