web-dev-qa-db-ja.com

どのようなシナリオで「netsh http add urlacl」を使用しますか?

私はそのようなコマンドを使用する必要があるシナリオを理解しようとしています:

netsh http add urlacl url=http://server1:1234/ user=Everyone

コンピュータに特定のアドレスを接続できるhostsファイルを使用するようなものですか? (私はそうは思いません)。

docs はそれほど明確ではありません(私には):

Netshはコマンドラインスクリプトユーティリティで、ローカルまたはリモートで、現在実行中のコンピューターのネットワーク構成を表示または変更できます。 Netshには、指定したコンピューターに対してコマンドのグループをバッチモードで実行できるスクリプト機能も用意されています。 Netshは、アーカイブまたは他のサーバーの構成に役立つように、構成スクリプトをテキストファイルに保存することもできます。

質問:

誰かが実際に使用したいシナリオ(+実装)を提供してもらえますか?

追加情報:私は読んだ this question where guy who who 'に(C#経由で)アクセスしようとしました:

http://localhost:1234は機能しますが、

http://server1:1234失敗

(しかし、なぜ彼はそれを解決できるhostsファイルを使用しなかったのか理解できません)-しかし、別の人がnetshがその仕事をすると答えました。
だから、私はここで何か不足していると思います。

14
Royi Namir

netsh httpの構成を変更する場合はhttp.sysを使用します。これはhostsファイルとはまったく異なり、はるかに低いレベルのWindowsで動作します。このレベルは、HTTPサーバーの実行を処理するレベルですコンピューター内でローカルなので、送信されるリクエストではなく、intoコンピューターに送信されるリクエストに関係しますoutインターネットへ。

これは、URLリクエストを処理するためのWindowsのアーキテクチャです。

http.sys architecture

http.sysは、HTTPトラフィックをリッスンし、URLに基​​づいてリクエストをプロセスにディスパッチするため、複数のプロセスが同じポートでHTTPトラフィックをリッスンできます。

http.sysはWindows Server 2003で導入されました。以前は、アプリケーションはエンドポイント(IP:ポート)でソケットを開き、着信トラフィックをリッスンして解析していました。問題は、これにより、すべてのアプリケーションがポート80(http)および443(https)を使用できなくなることでした。ソケットモデルでは、一度に1つのアプリケーションしかエンドポイントをリッスンできないためです。

インターネットインフォメーションサービス(IIS) Webサーバー、またはHTTPサーバーAPIを使用するアプリケーションがHTTPリクエストパスをリッスンする場合、http.sysにURLプレフィックスを登録する必要があります。このプロセスをregistrationと呼びます。

着信リクエストがhttp.sysによって選択され、正しい登録済みアプリケーションに配信されると、これはroutingと呼ばれます。

管理者モードで実行されているすべてのアプリケーションは、URLに登録できます。管理者以外のアプリケーションは、netsh http add urlaclを使用してリクエストを受信する必要があります。

結論:非管理者モードで実行されている低レベルのURLサーバーを構築していないので、netsh http add urlaclを使用する理由はありません。

参照:

18
harrymc