WindowsのI / Oモデルは、コンポーネントのスタックに基づいています。データは、物理ネットワークカードとデータを消費するアプリケーションの間に存在するスタックのさまざまなコンポーネントを経由する必要があります。これらのさまざまなコンポーネントは、スタックを流れるときにデータ(たとえば、TCPパケット)を検査し、そのパケットの内容に基づいて、データが変更されたり、パケットが完全に破棄されたりすることがあります。
これは、パケットがアプリケーションからワイヤへ、またはその逆に到達するために通過する「ネットワークスタック」の単純化されたモデルです。
上のスクリーンショットに示されている最も興味深いコンポーネントの1つは、WFP(Windowsフィルタリングプラットフォーム)コールアウトAPIです。拡大すると、次のようになります。
開発者は、独自のモジュールをこのスタックの適切な場所に自由にプラグインできます。たとえば、ウイルス対策製品は通常、このモデルに接続してネットワークトラフィックを検査したり、ファイアウォール機能を提供したりする「フィルタードライバー」を使用します。Windows Firewallサービスも明らかにこのモデルに適合します。
Wiresharkなど、ネットワークトラフィックを記録するアプリケーションを作成する場合、適切な方法は、独自のドライバーを使用し、ネットワークパケットを検出できるようにできるだけ低くスタックに挿入することです。ファイアウォールモジュールがそれらを削除する前に。
そのため、このプロセスには多くの「ドライバー」が関与しています。多くの異なる種類のドライバーも。また、ハードディスクドライブの読み取りや書き込みなど、システム上の他の形式の入出力は、非常に類似したモデルに従います。
もう1つの注意事項-WFPコールアウトは、ネットワークスタックに身をゆだねる唯一の方法ではありません。例として、WinPCapはドライバーと直接NDISとインターフェイスします。つまり、フィルタリングが行われる前にトラフィックを傍受する可能性があります。
NDISドライバー
WinPCap
参照:
Vista +の次世代TCP / IPスタック
Windowsフィルタリングプラットフォームアーキテクチャ