W jakich scenariuszach użyję `netsh http add urlacl`?

14

Próbuję zrozumieć, w którym scenariuszu będę musiał użyć takiego polecenia:

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

Czy to jak używanie hostspliku, w którym mogę podłączyć określony adres do mojego komputera? (Nie sądzę).

W docs nie są jasne (do mnie):

Netsh to narzędzie skryptowe z wiersza poleceń, które pozwala lokalnie lub zdalnie wyświetlać lub modyfikować konfigurację sieci aktualnie uruchomionego komputera. Netsh zapewnia również funkcję skryptową, która pozwala na uruchamianie grupy poleceń w trybie wsadowym na określonym komputerze. Netsh może również zapisać skrypt konfiguracyjny w pliku tekstowym w celu archiwizacji lub w celu ułatwienia konfiguracji innych serwerów.

Pytanie:

Czy ktoś może podać scenariusz z życia (+ wdrożenie), w którym będę chciał go użyć?

Informacje dodatkowe: Przeczytałem to pytanie, gdy facet, który próbował uzyskać dostęp (za pomocą C #) do:

http://localhost:1234 działa, ale

http://server1:1234 zawodzi

(Jednak - nie rozumiem, dlaczego nie wykorzystał hostspliku, który mógłby go rozwiązać) - Ale potem inna osoba odpowiedziała, że netshwykona zadanie.
Więc chyba coś mi brakuje.

Royi Namir
źródło
Doskonale wiem, do czego służy plik hosts, robię to codziennie przez ostatnie 1 lata. Nie rozumiem, w jaki sposób kod w moim pytaniu różni się od pliku hosts. Wygląda na to, że oboje robią to samo. I niestety, nie podałeś żadnej różnicy w swojej odpowiedzi
Royi Namir,

Odpowiedzi:

18

Przydałoby się to netsh httppodczas modyfikowania konfiguracji http.sys, która jest zupełnie inna niż hostsplik, pracując na znacznie niższym poziomie systemu Windows. Ten poziom jest ten, który zajmuje się prowadzenie serwera HTTP lokalnie w komputerze , więc zajmuje się wnioski przyjście na komputerze, a nie te, które dzieje się w Internecie.

Oto architektura systemu Windows do obsługi żądań adresów URL:

architektura http.sys

http.sys to sterownik, który nasłuchuje ruchu HTTP i wysyła żądania na podstawie adresów URL do procesów, dzięki czemu wiele procesów może nasłuchiwać ruchu HTTP na tym samym porcie.

http.syszostał wprowadzony w systemie Windows Server 2003. Wcześniej aplikacje właśnie otwierały gniazdo w punkcie końcowym (IP: Port), nasłuchując ruchu przychodzącego i analizując go. Problem polegał na tym, że uniemożliwiało to wszystkim aplikacjom korzystanie z portu 80 (http) i 443 (https), ponieważ w modelu gniazda tylko jedna aplikacja może nasłuchiwać punktu końcowego w danym momencie.

Gdy serwer sieci Web Internetowych usług informacyjnych (IIS) lub dowolna aplikacja korzystająca z interfejsu API serwera HTTP Server nasłuchuje na ścieżce żądań HTTP, musi zarejestrować prefiks adresu URL http.sys. Proces ten nazywamy rejestracją .

Gdy przychodzące żądanie zostanie odebrane http.sysi dostarczone do właściwej zarejestrowanej aplikacji, nazywa się to routingiem .

Każda aplikacja działająca w trybie administratora może zarejestrować adres URL. netsh http add urlacl Do otrzymania żądania należy użyć aplikacji innej niż administrator .

Wniosek: ponieważ nie budujesz niskopoziomowego serwera URL działającego w trybie innym niż administrator, nie masz powodu, aby z niego korzystać netsh http add urlacl.

Bibliografia :

harrymc
źródło
Czy możesz podać scenariusz, w którym coś takiego: „użytkownik chce połączyć się z twoim iis za pomocą ....”
Royi Namir,
Jest to metoda umożliwiająca aplikacjom współdziałanie z usługami IIS. Jeśli zarejestruje się w celu uzyskania prefiksu adresu URL, aplikacja otrzyma wszystkie swoje żądania bezpośrednio, a nie za pośrednictwem IIS, co oznacza, że ​​nie musi być napisane jako rozszerzenie IIS, ani nawet nie trzeba instalować IIS (to teoretycznie - nie t wiem, jak dobrze w praktyce http.sys jest niezależny od IIS).
harrymc