ขณะที่ผมกำลังพยายามที่ไร้ผลที่จะแก้ไขข้อผิดพลาดของตัวควบคุมอีเธอร์เน็ตที่นี่สิ่งหนึ่งที่ผมพยายามวิ่ง tcpdump บนเครื่อง
ฉันพบว่าน่าสนใจที่ tcpdump สามารถตรวจจับได้ว่าแพ็คเก็ต ICMP บางอันที่แอปพลิเคชัน ping คิดว่าการส่งไม่ได้ออกนอกสายจริงแม้ว่ามันจะทำงานบนเครื่องเดียวกันก็ตาม ฉันทำซ้ำผลลัพธ์ tcpdump เหล่านี้ที่นี่:
14:25:01.162331 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 1, length 64
14:25:02.168630 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 2, length 64
14:25:02.228192 IP 74.125.224.80 > debian.local: ICMP echo reply, id 2334, seq 2, length 64
14:25:07.236359 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 3, length 64
14:25:07.259431 IP 74.125.224.80 > debian.local: ICMP echo reply, id 2334, seq 3, length 64
14:25:31.307707 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 9, length 64
14:25:32.316628 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 10, length 64
14:25:33.324623 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 11, length 64
14:25:33.349896 IP 74.125.224.80 > debian.local: ICMP echo reply, id 2334, seq 11, length 64
14:25:43.368625 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 17, length 64
14:25:43.394590 IP 74.125.224.80 > debian.local: ICMP echo reply, id 2334, seq 17, length 64
14:26:18.518391 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 30, length 64
14:26:18.537866 IP 74.125.224.80 > debian.local: ICMP echo reply, id 2334, seq 30, length 64
14:26:19.519554 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 31, length 64
14:26:20.518588 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 32, length 64
14:26:21.518559 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 33, length 64
14:26:21.538623 IP 74.125.224.80 > debian.local: ICMP echo reply, id 2334, seq 33, length 64
14:26:37.573641 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 35, length 64
14:26:38.580648 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 36, length 64
14:26:38.602195 IP 74.125.224.80 > debian.local: ICMP echo reply, id 2334, seq 36, length 64
โปรดสังเกตว่าหมายเลข seq กระโดดหลายครั้ง ... ที่ระบุแพ็คเก็ตที่แอปพลิเคชัน ping สร้างขึ้นซึ่งไม่ได้ออกจากกล่องจริง
สิ่งใดนำมาสู่คำถามของฉัน: tcpdump สามารถตรวจจับได้อย่างไรว่าแพ็คเก็ต ICMP นั้นไม่ได้ออกไปข้างนอกจริง ๆ มันสามารถที่จะตรวจสอบสิ่งที่อยู่ในสายโดยตรงหรือไม่?
หากทำสิ่งนี้สำเร็จฉันคิดว่ามันคือการเชื่อมต่อกับบางส่วนของเคอร์เนลซึ่งจะเชื่อมต่อกับฮาร์ดแวร์บางตัวที่เป็นส่วนมาตรฐานของคอนโทรลเลอร์เครือข่าย
ถึงอย่างนั้นมันก็ค่อนข้างเจ๋ง! หากนั่นไม่ใช่วิธีการทำงานของ tcpdump ใครบางคนสามารถอธิบายให้ฉันฟังได้ว่ามันตรวจพบแพ็กเก็ตที่หายไปในซอฟต์แวร์ได้อย่างไร