الدرس 23: تصحيح أخطاء الشبكة — ss, tcpdump, netstat
كتبتَ خادم TCP — لكنه لا يستجيب. هل هو يستمع أصلاً؟ هل المنفذ مشغول؟ هل تصل الحزم؟ في هذا الدرس سنتعلم ثلاث أدوات يجب على كل مهندس Linux معرفتها: ss لعرض الاتصالات المفتوحة، وtcpdump لالتقاط الحزم في الوقت الحقيقي، وnetstat لتفاصيل الاتصالات. في NVIDIA، عندما تتعطل مهمة NCCL all-reduce، يكون tcpdump
ss يشبه فتح دفتر هاتف الحاسوب لمعرفة من المتصل بمن. tcpdump يشبه إمساك ميكروفون في الشارع والإصغاء إلى كل محادثة عابرة. netstat هو النسخة الأقدم من ss — لا يزال مفيداً. معاً يمنحانك صورة كاملة عمّا يحدث على الشبكة، دون تفكيك أي شيء.
- ss
- Socket Statistics — أداة Linux حديثة لعرض جميع الـ sockets المفتوحة. أسرع من netstat وتدعم مرشحات غنية. تحل محل netstat في معظم الحالات.
- tcpdump
- أداة لالتقاط وتحليل حزم الشبكة في الوقت الحقيقي. تتيح لك رؤية ما يمر بالضبط على واجهة شبكة، مُرشَّحاً حسب المنفذ وعنوان IP والبروتوكول وغيرها.
- TIME_WAIT
- حالة TCP يستمر فيها اتصال مغلق في الاحتفاظ بمنفذه لفترة قصيرة (~60 ثانية) لضمان ألا تُقبل عن طريق الخطأ في اتصال جديد حزمٌ شاردة متأخرة الوصول من الاتصال القديم.
- CLOSE_WAIT
- حالة TCP أغلق فيها الطرف البعيد الاتصال لكن الطرف المحلي لم يستدعِ close() بعد. عادةً ما تشير إلى خطأ برمجي في كود الخادم لا ينظّف الاتصالات.
- pcap
- صيغة ملف لحفظ الحزم الملتقطة. يستطيع tcpdump الحفظ إلى ملف .pcap يمكن فتحه لاحقاً في Wireshark لتحليل مفصّل.