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

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

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

不建议使用

netstat -aon | findstr :80

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

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

答案1

好吧,让我们来回答一下。

您看到的结果很可能是程序使用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应该能够枚举所有活动的命名空间。

答案2

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

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

相关内容