
시스템 독립적인 사용자 수준 패킷 캡처 및 필터링을 위한 라이브러리입니다. 여러 플랫폼에서 저수준 네트워크 모니터링, 보안 분석 및 디버깅을 위한 이식 가능한 프레임워크를 제공합니다.
보안 이슈를 신고하려면 [email protected]로 이메일을 보내주십시오.
버그 및 기타 문제를 신고하거나, 패치를 기여하거나, 기능을 요청하거나, 일반적인 피드백을 제공하려면 기여 지침을 참조하십시오.
문서 디렉토리에는 특정 운영 체제 및 옵션에 관한 README 파일이 있습니다.
익명 Git은 다음을 통해 사용할 수 있습니다:
https://github.com/the-tcpdump-group/libpcap.git
이 디렉토리에는 사용자 수준 패킷 캡처를 위한 시스템 독립적 인터페이스인 libpcap의 소스 코드가 포함되어 있습니다. libpcap은 저수준 네트워크 모니터링을 위한 휴대용 프레임워크를 제공합니다. 응용 분야로는 네트워크 통계 수집, 보안 모니터링, 네트워크 디버깅 등이 있습니다. 거의 모든 시스템 공급업체가 패킷 캡처에 대해 서로 다른 인터페이스를 제공하고, 우리는 이 기능을 필요로 하는 여러 도구를 개발해 왔기 때문에, 이식성을 높이고 각 응용 프로그램에서 여러 시스템 종속적 패킷 캡처 모듈의 필요성을 줄이기 위해 이 시스템 독립적 API를 만들었습니다.
formerly from Lawrence Berkeley National Laboratory
Network Research Group <[email protected]>
ftp://ftp.ee.lbl.gov/old/libpcap-0.4a7.tar.Z
일부 플랫폼에는 해당 플랫폼의 패킷 캡처를 위한 OS 인터페이스와 관련된
문제점(예: 기본적으로 내장되어 있지 않은 경우 OS에서 해당 인터페이스에 대한
지원을 활성화하는 방법)을 다루는 README.{system} 파일이 있습니다.
libpcap 인터페이스는 BSD 패킷 필터의 아키텍처를 기반으로 하는 필터링 메커니즘을 지원합니다. BPF는 1993년 Winter Usenix 논문 "The BSD Packet Filter: A New Architecture for User-level Packet Capture" (압축 PostScript, gzip PostScript, PDF)에 설명되어 있습니다.
대부분의 패킷 캡처 인터페이스가 일부 커널 내 필터링을 지원하지만, libpcap은 BPF 프로그램을 지원하는 사용 사례, 즉 BPF 패킷 캡처 인터페이스, Linux 패킷 소켓 및 GNU/Hurd 인터페이스에 대해서만 커널 내 필터링을 사용합니다.
다른 모든 경우에 libpcap은 모든 패킷을 사용자 공간으로 읽어 들인 다음 필터 프로그램을 사용하여 평가하므로 추가 오버헤드가 발생합니다(특히 선택적 필터의 경우). 이상적으로는 libpcap이 BPF 필터를 기본 커널 하위 시스템과 호환되는 필터 프로그램으로 변환해야 하지만, 이는 구현되어 있지 않습니다.
BPF는 NetBSD, FreeBSD, OpenBSD, DragonFly BSD, macOS, QNX 및 Solaris 11에서 표준입니다. AIX에는 이전 버전의 수정되고 문서화되지 않은 버전이 표준으로 있습니다.
Linux에는 BPF 기반 시스템이 여러 개 있으며, libpcap은 많은 메모리 매핑 수신 메커니즘을 지원하지만 아직 어떤 eBPF 메커니즘도 지원하지 않습니다. 자세한 내용은 Linux 전용 README를 참조하십시오.
이제 다른 플랫폼 중에서도 Linux 및 *BSD에서 작동해야 하는 공유 라이브러리를 만드는 규칙이 있습니다.
라이브러리의 soname을 libpcap.so.1로 설정합니다. 이것이 올바른 값이며,
아닙니다 libpcap.so.1.x 또는 libpcap.so.1.x.y 등이어서는 안 됩니다.
우리는 꽤 오랫동안 libpcap 릴리스 간의 바이너리 호환성을 유지해 왔습니다. libpcap에 링크된 바이너리를 특정 libpcap 릴리스에 묶을 이유가 없습니다.