2011-01-14 2 views
1

C 응용 프로그램에서 libpcap (및 Windows에서 winpcap)을 사용하여 네트워크 트래픽을 모니터링합니다. 연결 속도 통계를 생성하기 위해 각 네트워크 어댑터에서 업로드 및 다운로드 트래픽을 구별해야하지만 라이브러리에서 사용하는 필터식이이를 매우 쉽게 지원하지는 않습니다 (즉 '들어오는'/ '나가는'연산자가 없음).).libpcap을 통한 업로드/다운로드 속도 측정

내가 고려한 한 가지 접근 방법은 각 어댑터의 IP 주소를 쿼리 한 다음 src host 1.2.3.4 (업로드 측정) 및 dst host 1.2.3.4 (다운로드 측정)과 같은 필터를 사용하는 것입니다.

내 질문은 :

위의 하나 (각 어댑터 좋을 텐데 나를이 같은 필터 식을 사용하게 무언가)보다 더 나은/간단한 방법이 있습니까?

위의 방법을 사용하면 단일 어댑터에 둘 이상의 IP 주소가 연결될 수 있습니다. 내가 묻는 이유는 (struct pcap_if에있는) 단일 어댑터의 주소 정보를 보유하고있는 구조체가 가능한 '다음'멤버를 가지고 있기 때문입니다.

답변

2

먼저 pcap에 패킷 만 표시됩니다. "나가는"또는 "들어오는"- 단순히 패킷을 보지 않습니다. 예, IP 헤더에서 src/dst을 사용하여 필터링해야합니다. 패킷이 들어오고 나가는지를 알 수있는 다른 방법은 없습니다.

둘째로, 예, 여러 개의 IP 주소가있는 어댑터를 중지하는 것이 없습니다. 따라서 해당 어댑터에서 구성된 IP 주소를 가져와야합니다. pcap_findalldevs() (WinPCap Documentation) 여기에서 도움을 받아야합니다. 그러면 모니터링 할 장치를 추측 할 수 있어야합니다.

0

1

tcpdump 당신이 pmacct보고 생각 해 봤나 봅니다 - 나는 개인적으로 시간이 과거에이에 기여했다. 이것은 libpcap을 사용하여 회계 목적으로 수동적으로 네트워크 트래픽을 모니터하는 C 도구입니다.

+0

+1, 나는 그 도서관의 모습을 좋아합니다. –