Вопрос: Как узнать, кто слушает порт 80 в Windows в многопользовательском случае? [Дубликат]


На этот вопрос уже есть ответ:

Как узнать, кто слушает порт 80 в Windows?

Не предлагайте использовать

netstat -aon | findstr :80

потому что он сообщает PID NT Kernel & System которая является бесполезной информацией.

Мне нужно знать точное имя компонента, чтобы его контролировать.


2
2018-03-10 08:34


Источник


Ну если http.sys , у вас, вероятно, нет никаких шансов узнать. - Daniel B
Что http.sys? Это часть IIS? - Dims
http.sys это HTTP-движок режима ядра Windows. Он может использоваться многими программами одновременно с каждым прослушиванием запросов в «подкаталог». Для .NET есть HttpListener класс. IIS также использует http.sys, - Daniel B
… а также superuser.com/questions/465529 а также superuser.com/questions/43307 , - JdeBP


Ответы:


Хорошо, давайте сделаем это ответом.

То, что вы видите, скорее всего, является результатом использования программы http.sys HTTP-движок режима ядра Windows, представленный в Windows Server 2003 (и XP?). Это позволяет разработчикам обойти ограничение, что прослушивающий порт может обслуживаться только одной программой за раз. С http.sys, программа регистрирует пространство имен, например. http://192.168.1.2:80/helloworld, Теперь программа получает все запросы, начиная с зарегистрированного пространства имен. В то же время другая программа могла бы слушать http://192.168.1.200:80/helloworld,

Другим побочным эффектом является то, что даже «без root» программы могут прослушивать порт 80 при условии, что одноразовая настройка будет завершена.

Естественно, Microsoft не развивалась, потому что это все забава и игры. Службы IIS используют http.sys для прослушивания. Так что это вероятный кандидат в вашем случае.

Если в настоящее время ни одна программа не зарегистрировала пространства имен, http.sys перестает слушать.

netsh http show servicestate должен иметь возможность перечислять все активные пространства имен.


4
2018-03-10 09:00



Можно ли перечислить записи в http.sys? - Dims
Я обновил ответ, чтобы включить команду, которая, похоже, выполняет это. - Daniel B
В приведенной выше команде показан идентификатор процесса, поэтому вы можете узнать, какой exe прослушивает. - tjleigh


Вы Можно пытаться TcpView, но если это действительно в ядре (как в - сокете, открытом драйвером), то нет никакого способа сообщить, что именно контролирует сокет. Это даже если вы используете что-то вроде ProcMon выполнить трассировку загрузки и зафиксировать точный момент сокета, связанного с tcp / 80. Что вам нужно, это вариант ProcMon, который также будет захватывать трассировку стека для каждого события, и я не видел такого инструмента.

Но сначала попробуйте TcpView. Скорее всего, это фактически служба пространства пользователя, которую вы используете, а не компонент ядра.


2
2018-03-10 08:44



TcpView показывает очень длинный список с некоторыми IP-адресами, представленными в формате IPv6. Нет никакого способа поймать конкретный. - Dims