web-dev-qa-db-ja.com

Windowsネットワークスタックのどこで、WinPcap / Npcapフック/フィルターを使用してパケットを「リッスン」しますか?

ソケットを介してIPCを実行するプロセスの問題を調査しています。ソケットはローカルマシンのNICのIPで提供され、接続は別のプロセスからローカルマシンのNICのIPに行われます。ローカルマシン上。

これにより、少なくともWiresharkがパケットを認識できる程度にWindowsネットワークスタックがドロップダウンすることを期待していました。ただし、そうではないようです。したがって、ソケットIPCはスタックの上位で発生します[Windowsイベントトレース(ETW)機能がトラフィックをIPフレームとして認識するかどうかを確認するのは興味深いでしょう]と結論付けることができます。これはそうではありません。この質問には重要ではありません(これはスタックオーバーフローではないため)。

WinPcap/Npcapは、ネットワークスタックのどこで「ライブ」になり、パケットをリッスンしてwiresharkに渡しますか?

私は最新のWindowsOSバージョン(クライアント:7以降、10以降、サーバー:2008以降、2012以降、2016以降)に焦点を当てています。具体的には、このクライアントはWindows10です。

パケットをスタックに送信するのではなく、パケットをホストに「ループバック」するという決定がネットワークスタックのどこで行われるのかを事実上知りたいのです。

ありがとう

3
mbrownnyc

高速ループバックが有効になっていない限り、IP層にあり、TCP層にあります。Microsoftネットワークスタックがインストルメントされていないため、NetworkMonitorやWiresharkなどのアプリケーションは機能しません。ループバックトラフィックをキャプチャします。

"TCPループバックインターフェイスのデフォルトの動作は、ローカルTCPトラフィックをAFD(本質的にカーネルモード表現)を含むほとんどのネットワークスタックを介して移動することですユーザーモードのTCPソケット)、およびTCPおよびIPプロトコル層)に対応する層。

https://blogs.technet.Microsoft.com/wincat/2012/12/05/fast-tcp-loopback-performance-and-low-latency-with-windows-server-2012-tcp-loopback- fast-path /

別の方法として、Microsoftメッセージアナライザーを使用してWindowsフィルタリングプラットフォーム(WFP)レイヤーでキャプチャできる場合があります。

https://blogs.msdn.Microsoft.com/winsdk/2014/08/15/rejoice-we-can-now-capture-loopback-traffic/

1
Greg Askew