pada tingkat apa tumpukan jaringan tcpdump mendapatkan informasinya?

12

Ketika saya mencoba untuk memperbaiki pengontrol ethernet yang salah di sini , satu hal yang saya coba adalah menjalankan tcpdump pada mesin.

Saya menemukan hal menarik bahwa tcpdump dapat mendeteksi bahwa beberapa paket ICMP yang dipikir oleh aplikasi ping tidak benar-benar keluar melalui kabel, walaupun itu berjalan pada mesin yang sama. Saya telah mereproduksi hasil tcpdump di sini:

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

Perhatikan bagaimana nomor seq melonjak beberapa kali ... yang menunjukkan paket yang dihasilkan aplikasi ping yang sebenarnya tidak meninggalkan kotak.

Yang membawa saya ke pertanyaan saya: bagaimana tcpdump dapat mendeteksi bahwa paket ICMP tidak benar-benar keluar? Apakah bisa entah bagaimana langsung memantau apa yang ada di kabel?

Jika berhasil, saya menganggapnya dengan menghubungkan ke beberapa bagian dari kernel, yang pada gilirannya antarmuka ke beberapa perangkat keras yang merupakan bagian standar dari pengontrol jaringan.

Meski begitu, itu sangat keren! Jika itu sebenarnya bukan bagaimana fungsi tcpdump, dapatkah seseorang menjelaskan kepada saya bagaimana mendeteksi paket yang hilang dalam perangkat lunak?

Eric
sumber

Jawaban:

13

Iya. Dengan menempatkan antarmuka jaringan ke mode promiscuous, tcpdump dapat melihat dengan tepat apa yang terjadi (dan masuk) antarmuka jaringan.

tcpdump beroperasi pada layer2 +. dapat digunakan untuk melihat Ethernet, FDDI, PPP & SLIP, Token Ring, dan protokol lain yang didukung oleh libpcap, yang melakukan semua pengangkatan berat tcpdump.

Lihat bagian pcap_datalink () dari halaman manual pcap untuk daftar lengkap protokol layer 2 yang dapat dianalisis oleh tcpdump (via libpcap).

Sebuah membaca dari halaman manual tcpdump akan memberikan pemahaman yang baik tentang bagaimana sebenarnya, tcpdump dan antarmuka libpcap dengan kernel dan jaringan interface untuk dapat membaca data link layer frame baku.

Tim Kennedy
sumber
1
Terima kasih Tim. Satu hal, saya melihat halaman manual tcpdump, dan tidak melihat apa pun tentang antarmuka kernel / jaringan. Saya ingin tahu lebih banyak tentang ini, jika Anda memiliki petunjuk lain.
Eric
halaman manual pcap yang saya tautkan di atas berbicara lebih banyak tentang antarmuka jaringan. tcpdump hanya menyajikan data. libpcap yang menangkap data, dan antarmuka ke perangkat jaringan.
Tim Kennedy