В каких случаях я буду использовать `netsh http add urlacl`?


14

Я пытаюсь понять, в каком сценарии мне нужно будет использовать такую ​​команду:

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

Это как использовать hostsфайл, где я могу подключить определенный адрес к моему компьютеру? (Я так не думаю).

В документах не так ясно (мне):

Netsh - это утилита сценариев командной строки, которая позволяет локально или удаленно отображать или изменять сетевую конфигурацию компьютера, который работает в данный момент. Netsh также предоставляет функцию сценариев, которая позволяет вам запускать группу команд в пакетном режиме на указанном компьютере. Netsh также может сохранить сценарий конфигурации в текстовом файле для архивации или для настройки других серверов.

Вопрос:

Может ли кто-нибудь предоставить реальный сценарий (+ реализация), где я хочу его использовать?

Дополнительная информация: Я прочитал этот вопрос, где парень, который пытался получить доступ (через C #) к:

http://localhost:1234 работает, но

http://server1:1234 терпит неудачу

(Однако - я не понимаю, почему он не использовал hostsфайл, который мог бы его решить) - Но тогда другой человек ответил, что netshсделает работу.
Итак, я думаю, что я что-то здесь упускаю


Я прекрасно знаю, какой файл хостов используется, я делаю это каждый день в течение последних 1 лет. Я не понимаю, чем код в моем вопросе отличается от файла hosts. Кажется, что они оба делают то же самое. И, к сожалению, вы не предоставили никакой разницы в вашем ответе
Ройи Намир

Ответы:


18

Вы бы использовали netsh httpпри изменении конфигурации http.sys, которая полностью отличается от hostsфайла, работая на гораздо более низком уровне Windows. Этот уровень является тот , который обрабатывает работает на сервере HTTP локально на вашем компьютере , так что касается запросов , поступающих на ваш компьютер, а не те , происходит из к Интернету.

Это архитектура в Windows для обслуживания запросов URL:

архитектура http.sys

http.sys это драйвер, который прослушивает HTTP-трафик и отправляет запросы на основе URL-адресов процессов, поэтому несколько процессов могут прослушивать HTTP-трафик на одном и том же порту.

http.sysбыл представлен в Windows Server 2003. Ранее приложения просто открывали сокет на конечной точке (IP: порт), прослушивая входящий трафик и анализируя его. Проблема заключалась в том, что это делало невозможным для всех приложений использование портов 80 (http) и 443 (https), поскольку в модели сокетов только одно приложение может прослушивать конечную точку в любой момент времени.

Когда веб-сервер служб IIS или любое приложение, использующее API-интерфейс HTTP-сервера, прослушивают какой-либо путь HTTP-запроса, им необходимо зарегистрировать префикс URL-адреса http.sys. Мы называем этот процесс регистрацией .

Когда входящий запрос выбирается http.sysи доставляется в правильное зарегистрированное приложение, это называется маршрутизацией .

Любое приложение, работающее в режиме администратора, может зарегистрировать URL. Для netsh http add urlacl получения запроса необходимо использовать приложение без прав администратора .

Вывод: поскольку вы не создаете низкоуровневый URL-сервер, работающий в режиме без прав администратора, у вас нет причин для его использования netsh http add urlacl.

Ссылки :


Можете ли вы представить сценарий, где что-то вроде: «пользователь хочет подключиться к вашему IIS с ....»
Рой Намир

Это метод, позволяющий приложениям работать бок о бок с IIS. Если он регистрируется для префикса URL, приложение получит все свои запросы напрямую, а не через IIS, что означает, что его не нужно писать как расширение IIS, а также даже не нужно устанавливать IIS (это теоретически - я не не знаю, насколько хорошо на практике http.sys не зависит от IIS).
Harrymc
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.