thisによれば、wiresharkはパケットが破棄される前にパケットを取得することができます(したがって、自分でパケットを取得することはできません)。そして私はまだwiresharkがパケットを取得するためのLinuxカーネルの正確な位置を知りたいと思っています。Wireshark/tcpdump/libpcapは、Linuxカーネル内のどこでパケットを傍受しましたか?
答えは "UN * Xesでは、LinuxではAF_PACKETソケットを使用するlibpcapを使用しています。"誰も "AF_PACKETソケット"を使うもっと具体的な例がありますか? wiresharkが正しく理解されている場合、ネットワークインターフェイスカード(NIC)はすべての着信パケットをコピーし、ユーザーが定義したフィルタ(ベルケリーパケットフィルタ)に送信します。しかし、これはどこで起こりますか?あるいは、私はその理解に間違っていて、私はここで何かを見逃しますか?
ありがとうございます!
ありがとうございました!!!それは確かに私が欲しいものです。もう1つの質問ですが、これを考えると、libpcapはカーネルに何もしておらず、純粋なユーザー空間プログラムです。それはソケットの別のインスタンスを持ってそれを聞いて、すべてのパケットのコピーを持っています。私はこれらの理解を訂正していますか? – zzy
"私はlibpcapがカーネルに何もしていないと思うし、純粋なユーザスペースプログラムです。" libpcapはユーザー空間のライブラリですが、「カーネルのものは何もしません」ということはわかりません。私は簡単にネットワーク(主にイーサネット)のキャプチャを見てきましたが、usb、bluetoothなどがあります。あなたが興味を持っている場合にコードをチェックする必要があります。 "ソケットの別のインスタンスを持ってそれを聞こうとしますすべてのパケットのコピーを持っています。 "はい、ネットワーク(主にイーサネット)のキャプチャはこのように動作するようです。 –