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

2911
Royi Namir

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

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

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

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

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

Вопрос:

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

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

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

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

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

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

1 ответ на вопрос

8
harrymc

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

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

http.sys architecture

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

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

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

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

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

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

Рекомендации :

Можете ли вы представить сценарий, где что-то вроде: «пользователь хочет подключиться к вашему IIS с ....» Royi Namir 6 лет назад 0
Это метод, позволяющий приложениям работать бок о бок с IIS. Если он регистрируется для префикса URL, приложение получит все свои запросы напрямую, а не через IIS, что означает, что его не нужно писать как расширение IIS, и даже не нужно устанавливать IIS (это теоретически - я не не знаю, насколько хорошо на практике http.sys не зависит от IIS). harrymc 6 лет назад 0

Похожие вопросы