1

ネットワークトラフィックを監視するために、Cアプリケーションでlibpcap(およびWindowsではwinpcap)を使用しています。接続速度の統計を生成するには、各ネットワークアダプターでアップロードトラフィックとダウンロードトラフィックを区別する必要がありますが、ライブラリで使用されるフィルター式はこれを簡単にサポートしていないようです(つまり、「着信」/「発信」演算子はありません) )。

私が検討したアプローチの1つは、各アダプターのIPアドレスを照会してから、 (src host 1.2.3.4アップロードを測定するため)やdst host 1.2.3.4(ダウンロードを測定するため)などのフィルターを使用することです。

私の質問は次のとおりです。

上記のものよりも優れた/単純なアプローチはありますか(各アダプターに同じフィルター式を使用できるようにするものがいいでしょう)?

上記のアプローチが進むべき道である場合、単一のアダプターに複数のIPアドレスが関連付けられている可能性はありますか?私が尋ねる理由pcap_addrは、単一のアダプター(in struct pcap_if)のアドレスの詳細を保持する構造体に「next」メンバーがあり、これが可能であることを示唆しているためです。

4

3 に答える 3

2

まず、pcapはパケットのみを確認することを忘れないでください。「送信」や「受信」は表示されません。単にパケットです。そうです、ipヘッダーのsrc/を使用してフィルタリングする必要があります。dstパケットが着信か発信かを判断する方法は他にありません。

第二に、はい、複数のIPアドレスを持つアダプターを止めるものは何もありません。したがって、そのアダプタから構成されたIPアドレスを取得する必要があります。pcap_findalldevs()(WinPCapドキュメント)ここで役立つはずです。そこから、監視するデバイスを推測できるはずです。

于 2011-01-14T16:35:51.057 に答える
1

pmacctを見ることを検討しましたか?私は過去にこれに個人的に貢献しました。これは、libpcapを使用して、アカウンティングの目的でネットワークトラフィックを受動的に監視するCツールです。

于 2011-01-14T16:11:38.763 に答える
0

試すtcpdump

于 2011-01-14T16:09:48.063 に答える