tcpdump lấy cấp độ nào của ngăn xếp mạng?


12

Khi tôi đang cố gắng vô ích để sửa một bộ điều khiển ethernet bị lỗi ở đây , một điều tôi đã thử là chạy tcpdump trên máy.

Tôi thấy thật thú vị khi tcpdump có thể phát hiện ra rằng một số gói ICMP mà ứng dụng ping nghĩ rằng nó đang gửi không thực sự đi trên dây, mặc dù nó đang chạy trên cùng một máy. Tôi đã sao chép các kết quả tcpdump ở đây:

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

Lưu ý cách số seq nhảy nhiều lần ... cho biết các gói mà ứng dụng ping tạo ra không thực sự rời khỏi hộp.

Điều này đưa tôi đến câu hỏi của tôi: làm thế nào tcpdump có thể phát hiện ra rằng các gói ICMP không thực sự phát hành? Có thể bằng cách nào đó trực tiếp theo dõi những gì trên dây?

Nếu nó thực hiện được điều này, tôi giả sử nó bằng cách giao tiếp với một phần của kernel, lần lượt giao diện với một số phần cứng là một phần tiêu chuẩn của bộ điều khiển mạng.

Mặc dù vậy, điều đó thật tuyệt! Nếu đó không thực sự là chức năng của tcpdump, ai đó có thể giải thích cho tôi cách phát hiện các gói bị thiếu trong phần mềm không?

Câu trả lời:


13

Đúng. Bằng cách đưa các giao diện mạng vào chế độ lăng nhăng, tcpdump có thể thấy chính xác những gì đang diễn ra (và trong) giao diện mạng.

tcpdump hoạt động ở layer2 +. nó có thể được sử dụng để xem xét Ethernet, FDDI, PPP & SLIP, Token Ring và bất kỳ giao thức nào khác được libpcap hỗ trợ, thực hiện tất cả các công việc nặng của tcpdump.

Hãy xem phần pcap_dirthink () của trang man pc để biết danh sách đầy đủ các giao thức lớp 2 mà tcpdump (thông qua libpcap) có thể phân tích.

Việc đọc trang man tcpdump sẽ cho bạn hiểu rõ về cách chính xác, giao diện tcpdump và libpcap với giao diện kernel và mạng để có thể đọc các khung lớp liên kết dữ liệu thô.


1
Cảm ơn Tim. Một điều, tôi đã xem trang người đàn ông tcpdump và không thấy gì về giao diện kernel / mạng. Tôi tò mò tìm hiểu thêm về điều này, nếu bạn có bất kỳ gợi ý nào khác.
Eric

trang man pc mà tôi liên kết ở trên nói nhiều hơn về giao diện mạng. tcpdump chỉ trình bày dữ liệu. đó là libpcap thu thập dữ liệu và giao diện với các thiết bị mạng.
Tim Kennedy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.