שיעור 23: דיבוג רשת — ss, tcpdump, netstat
כתבתם שרת TCP — אבל הוא לא מגיב. האם הוא בכלל מאזין? האם הפורט תפוס? האם packets מגיעים? בשיעור הזה נלמד שלושה כלים שכל מהנדס Linux חייב להכיר: ss לצפייה בחיבורים פתוחים, tcpdump ללכידת packets בזמן-אמת, ו-netstat לפרטי חיבורים. ב-NVIDIA, כשעבודת NCCL all-reduce תקועה, tcpdump הוא הכלי הראשון שמגלה
ss הוא כמו לפתוח את ספר הטלפונים של המחשב ולראות מי מחובר למי. tcpdump הוא כמו להחזיק מיקרופון ברחוב ולהקשיב לכל שיחה שעוברת. netstat הוא הגרסה הישנה יותר של ss — עדיין שימושית. ביחד הם נותנים לכם תמונה מלאה של מה קורה ברשת, בלי לפרק שום דבר.
- ss
- Socket Statistics — כלי Linux מודרני לצפייה בכל ה-sockets הפתוחים. מהיר יותר מ-netstat ותומך בפילטרים עשירים. מחליף את netstat ברוב המקרים.
- tcpdump
- כלי ללכידה וניתוח packets ברשת בזמן-אמת. מאפשר לראות בדיוק מה עובר על ממשק רשת, לפי פורט, כתובת IP, פרוטוקול ועוד.
- TIME_WAIT
- מצב TCP שבו חיבור שנסגר ממשיך להחזיק את הפורט לזמן קצר (כ-60 שניות) כדי לוודא שכל ה-packets של החיבור הישן לא יתפסו בטעות בחיבור חדש.
- CLOSE_WAIT
- מצב TCP שבו הצד הרחוק סגר את החיבור אך הצד המקומי טרם קרא close(). לרוב מצביע על bug בקוד שרת שלא מנקה חיבורים.
- pcap (packet capture)
- פורמט קובץ לשמירת packets שנלכדו. tcpdump יכול לשמור לקובץ .pcap שאפשר לפתוח לאחר מכן ב-Wireshark לניתוח מפורט.