tcpdump는 어떤 수준의 네트워크 스택에서 정보를 얻습니까?


12

내가 여기에 결함이있는 이더넷 컨트롤러를 수정하려고 헛되이 시도했을 때, 내가 시도한 한 가지는 컴퓨터에서 tcpdump를 실행하는 것입니다.

tcpdump가 핑 응용 프로그램이 전송한다고 생각한 일부 ICMP 패킷이 동일한 시스템에서 실행 중이더라도 실제로 유선으로 나가지 않는다는 것을 감지 할 수 있다는 것이 흥미 롭습니다. 나는 그 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 번호가 어떻게 여러 번 점프하는지 확인하십시오. 이것은 핑 응용 프로그램이 실제로 상자를 떠나지 않는 패킷을 나타냅니다.

tcpdump가 어떻게 ICMP 패킷이 실제로 나가지 않았 음을 감지 할 수 있었습니까? 어떻게 든 와이어에 무엇이 있는지 직접 모니터링 할 수 있습니까?

이것이 달성되면 커널의 일부와 인터페이스하여 네트워크 컨트롤러의 표준 부분 인 일부 하드웨어와 인터페이스하는 것으로 가정합니다.

그럼에도 불구하고, 그것은 꽤 멋지다! 이것이 실제로 tcpdump가 작동하는 방식이 아닌 경우 누군가 소프트웨어에서 누락 된 패킷을 어떻게 감지했는지 설명 할 수 있습니까?

답변:


13

예. tcpdump는 네트워크 인터페이스를 무차별 모드로 설정하여 네트워크 인터페이스에서 나가는 (및 들어간) 내용을 정확하게 볼 수 있습니다.

tcpdump는 layer2 +에서 작동합니다. 이더넷, FDDI, PPP & SLIP, 토큰 링 및 libpcap이 지원하는 다른 프로토콜을 보는 데 사용할 수 있습니다.

tcpdump (libpcap을 통해)가 분석 할 수있는 계층 2 프로토콜의 전체 목록은 pcap 매뉴얼 페이지 의 pcap_datalink () 섹션을 참조하십시오 .

의 읽기 는 tcpdump 매뉴얼 페이지는 당신에게 정확히 어떻게, 커널과 네트워크 인터페이스는 tcpdump와 libpcap의 인터페이스는 원시 데이터 링크 계층 프레임을 읽을 수의 좋은 이해를 줄 것이다.


1
고마워 팀. 한 가지, 나는 tcpdump 매뉴얼 페이지를 보았고 커널 / 네트워크 인터페이스에 대해서는 아무것도 보지 못했습니다. 다른 포인터가 있으면 이것에 대해 더 자세히 알고 싶습니다.
Eric

위에서 링크 한 pcap 매뉴얼 페이지는 네트워크 인터페이스에 대해 자세히 설명합니다. tcpdump는 데이터 만 제공합니다. 데이터를 캡처하고 네트워크 장치에 인터페이스하는 libpcap입니다.
팀 케네디
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.