나는 이것이 문제에 대해 약간의 빛을 비추기를 바란다. 에서 맨 페이지 :
tcpdump가 패킷 캡처를 마치면 다음 개수를보고합니다.
패킷 캡처 (tcpdump가 수신하고 처리 한 패킷 수);
필터에 의해 수신 된 패킷 (이 의미는 tcpdump를 실행하는 OS 및 OS 구성 방법에 따라 다름)-명령 줄에 필터가 지정된 경우 일부 OS에서는 필터가 패킷을 계산합니다. tcpdump가 읽고 처리했는지 여부에 관계없이 필터 표현식과 일치하더라도 필터 표현식과 일치하더라도 다른 OS에서는 tcpdump의 읽기 여부에 관계없이 필터 표현식과 일치하는 패킷 만 계산합니다. 아직 처리하지 않았으며 다른 OS에서는 필터 표현식과 일치하고 tcpdump로 처리 된 패킷 만 계산합니다.
커널에 의해 삭제 된 패킷 (이는 OS가 해당 정보를 애플리케이션에보고하는 경우 tcpdump가 실행중인 OS의 패킷 캡처 메커니즘에 의해 버퍼 공간 부족으로 인해 삭제 된 패킷 수임) 0으로보고됩니다.
그리고 2009 년부터 메일 링리스트 항목이 있습니다 :
"필터에 의해 수신 된 패킷"번호는 ps_recv
전화를 건 번호입니다 pcap_stats()
. 와 BPF , 그것은이다 bs_recv
로부터 수 BIOCGSTATS ioctl
. 이 수에는 BPF에 전달 된 모든 패킷이 포함됩니다. 이러한 패킷은 여전히 libpcap에 의해 읽히지 않은 (따라서 tcpdump에 전달되지 않은) 버퍼에 있거나, libpcap에 의해 읽히지 만 아직 tcpdump에 전달되지 않은 버퍼에있을 수 있으므로 패킷을 계산할 수 있습니다. "캡처 된"것으로보고되지 않습니다.
프로세스가 너무 빨리 종료 될 수 있습니까? 패킷이 캡처 -c N
될 때 tcpdump가 종료되도록 지시 하는 플래그 도 있습니다 N
.
문제가 꽤 전문적인 것처럼 보이기 때문에 직접 또는 수백 가지 언어 바인딩 중 하나를 통해 사용할libpcap
수도 있습니다 .
귀하의 질문에, 당신이 얻는 모든 것은 파일 의 캡처 된 패키지 capture.cap
이기 때문에 비어 있지 않은 실행을보고 이것들을 검사 할 수 있습니다.
tcpdump -r capture.cap | wc -l
libpcap을 사용하여 캡처 파일의 항목 수를 반환하는 더 좋은 방법이 있습니다.