libpcap 라이브러리를 사용하여 C에서 pcap 파일의 정보를 구문 분석하는 작업을하고 있습니다. 소스/목적지 IP 주소, TCP/UDP 포트 및 소스/목적지 이더넷 주소와 같은 데이터를 얻는 방법을 알아 냈습니다. 다음 목록은 네트워크 및 전송 계층 프로토콜에서 통계를 얻고 프로토콜 당 얼마나 많은 패킷을 얻는가입니다. 나는이 문제에 대한 접근 방법을 알아내는 데 어려움을 겪고 있으며, 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바라고 있습니다. 다른 정보가 /usr/include/netinet.h와 같은 장소에서 여러 가지 데이터 구조로 수집 되었기 때문에이 정보는 어딘가에 있어야하지만 다시 한 번 잃어 버립니다.C에서 pcap의 네트워크 계층 및 전송 계층 프로토콜을 얻으려면 어떻게해야합니까?
0
A
답변
1
이미 답변을 얻은 것처럼 보입니다. IP는 네트워크 계층 프로토콜이므로 IP 주소를 찾을 수 있으면 IP 패킷 수를 계산할 수 있습니다. 유사하게 TCP와 UDP는 전송 계층 프로토콜입니다. 패킷에서 TCP/UDP 포트를 찾을 수 있다면 얼마나 많은 패킷이 어떤 프로토콜을 사용하고 있는지 알 수 있습니다. 콜백 함수에서
0
/* define/compute ip header offset */
ip = (struct sniff_ip*)(packet + SIZE_ETHERNET);
size_ip = IP_HL(ip)*4;
if (size_ip < 20) {
printf(" * Invalid IP header length: %u bytes\n", size_ip);
return;
}
switch(ip->ip_p) {
case IPPROTO_TCP:
/* define/compute tcp header offset */
tcp = (struct sniff_tcp*)(packet + SIZE_ETHERNET + size_ip);
size_tcp = TH_OFF(tcp)*4;
if (size_tcp < 20) {printf(" * Invalid TCP header length: %u bytes\n", size_tcp); return; }
bytes_tcp+=ntohs(ip->ip_len);
packets_tcp++;
break;
}
case IPPROTO_UDP:
bytes_udp+=ntohs(ip->ip_len);
packets_udp++;
break;
}
관련 문제
- 1. 네트워크 또는 전송 계층 퍼징
- 2. C에서 네트워크 계층 프로토콜 개발
- 3. 데이터 링크 계층 및 전송 계층
- 4. 모니터 전송, 네트워크 및 링크 계층 버퍼/리눅스
- 5. 네트워크 계층 (컴퓨터 네트워크, Tanenbaum)
- 6. 최상의 데이터 전송 계층
- 7. 비즈니스 계층 어셈블리에서 뷰의 경로를 얻으려면 어떻게해야합니까?
- 8. 최상위 계층 네트워크 프로토콜을 이해하고 리버스 엔지니어링하는 좋은 도구
- 9. 컴퓨터 네트워크에서 전송 계층 프로토콜 구현을위한 설명서
- 10. WCF 전송 계층 보안 문제
- 11. 계층
- 12. 전송 계층 위의 가로 채기 트래픽
- 13. Oracle에서 최상의 계층 적 쿼리 성능을 얻으려면 어떻게해야합니까?
- 14. 계층 적 쿼리에서 고유 한 요소 목록을 얻으려면 어떻게해야합니까?
- 15. 계층
- 16. 계층
- 17. 네트워크 통신 계층. AsyncTask 오류 처리
- 18. C에서 계층 적 상태 시스템 구현
- 19. 도메인 계층 및 BDD
- 20. .NET 및 데이터베이스 계층
- 21. 서비스 및 서비스 계층
- 22. DDD 및 애플리케이션 계층
- 23. 계층 적 데이터를 시각화하려면 어떻게해야합니까?
- 24. Python의 계층 적 작업 네트워크 계획자
- 25. n 계층 응용 프로그램에서 계층 수 결정
- 26. C에서 시각적 계층 그래프를 만들 필요가 있습니다
- 27. 작성 방법 (구현) 응용 프로그램 계층 네트워크 프로토콜
- 28. 대역폭 형성 및 가상 네트워크 계층/인터페이스 - Windows + .NET
- 29. UIView 계층
- 30. n 계층 비즈니스/서비스 계층 설계