在多宿主情况下,如何知道谁在监听 Windows 上的 80 端口?

Dim*_*ims 5 networking windows

如何知道谁在监听 Windows 上的 80 端口?

不建议使用

netstat -aon | findstr :80
Run Code Online (Sandbox Code Playgroud)

因为它报告的PIDNT Kernel & System是无用的信息。

我需要知道组件的确切名称才能控制它。

Dan*_*l B 10

好吧,让我们把它作为一个答案。

您所看到的很可能是使用http.sysWindows Server 2003(和 XP?)中引入的 Windows 内核模式 HTTP 引擎的程序的结果。它允许开发人员绕过侦听端口一次只能由一个程序提供服务的限制。使用http.sys,程序注册一个命名空间,例如http://192.168.1.2:80/abc。该程序现在接收以注册的命名空间开始的所有请求。同时,另一个程序可以在http://192.168.1.2:80/xyz.

另一个副作用是,即使“非 root”程序也可以侦听端口 80,前提是一次性设置已完成。

自然,微软没有开发这个,因为它很有趣和游戏。Internet 信息服务 (IIS)http.sys用于侦听。所以这很可能是你的情况。

如果没有程序当前注册了命名空间,则http.sys停止侦听。

netsh http show servicestate 应该能够枚举所有活动的命名空间。


Ang*_*rom 2

可以尝试TcpView,但如果它实际上在内核中(如驱动程序打开的套接字),那么实际上没有办法知道到底是什么控制了套接字。即使您使用ProcMon之类的东西来进行启动跟踪并捕获套接字绑定到 tcp/80 的确切时刻也是如此。您需要的是 ProcMon 的变体,它还可以捕获每个事件的堆栈跟踪,但我还没有见过这样的工具。

但首先尝试 TcpView。有可能它实际上是您需要的用户空间服务,而不是内核组件。


归档时间:

查看次数:

4584 次

最近记录:

6 年,5 月 前