
システム非依存のユーザーレベルパケットキャプチャおよびフィルタリングライブラリ。複数プラットフォームにわたる低レベルネットワーク監視、セキュリティ分析、デバッグのためのポータブルフレームワークを提供します。
セキュリティ問題を報告するには、[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インターフェースに関する問題(デフォルトで組み込まれていない場合にそのインターフェースのサポートを有効にする方法など)を説明した README.{system} ファイルがあります。
libpcapインターフェースは、BSDパケットフィルタのアーキテクチャに基づいたフィルタリングメカニズムをサポートしています。BPFは、1993年冬の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リリースに結び付ける理由はありません。