2009-09-24 10 views
12

私はMicrosoftがHTTP.SYSを作成してIISのパフォーマンスを向上させることを知っています。私の質問は、HTTP.SYSがHTTPトラフィックを処理するのですか?すべてアプリですか?たとえば、Winsockを使用してHTTPトラフィックを受信する場合、HTTP.SYSはこのデータをWinsock API経由で透過的に渡していますか?または、Windowsの新しいカーネルでWinsockがHTTP.SYSに置き換えられましたか?すべてのHTTPトラフィックはWindows上でHTTP.SYSを経由しますか?

マイクロソフトでは、私が知る限り、これについてはドキュメントではっきりしていません。

答えて

6

アプリケーションはhttp.sysを使用することができます。彼らは独自のHTTPプロトコルハンドラを実装することを選択できます。

セキュリティ上の理由からアプリケーションがhttp.sysを使用することを強く推奨します。http.sysによって実装されるHTTPサーバーはかなり強化されており、他のHTTPサーバーではセキュリティ上の欠陥が発生する可能性があります。

私が知る限り、HTTP.SYSはNDISではなくTCPスタックに話します(そうしないと、内部的にすべてのTCPを実装する必要があり、意味がありません)。

0

WinsockはHTTPよりも低いソケットレベルなので、Http.Sysを経由するとは思われません。

Internet Explorerは、Vista経由でHttp.sysを使用しないHTTP通信にWininetを使用します。

編集「Windows Internals」という本はあなたの質問に答えると思います。

+2

Winsocketはユーザーレベルのライブラリで、HTTP.SYSはカーネルレベルのドライバです。したがって、ネットワークレベルが技術的にスタック内で高い場合でも、HTTP.SYSはWinsockより前でなければなりません。 これは依然として問題を残しています.HTTP.SYSはすべてのHTTPトラフィックを処理しますか?その場合、IISにバインドされていないHTTPトラフィックはWinsockを使用しているユーザープロセスでどのようになりますか? –

+2

@LeeksandLeaksアプリケーションが稼動していて、キューを処理している場合、リッスンするように指示されたエンドポイントのトラフィックのみを処理します。 Http.sysは、tcp上でHTTPに似た通信を検知すると魔法のように動作しません。 – fabspro

関連する問題