TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
当我在任务管理器中查找进程时,它显示PID 4是SYSTEM,就是它,而不是扩展……没有,只是“SYSTEM”.这里发生了什么?
我害怕结束这个过程,我该怎么办?
当应用程序服务器想要完全控制端口80时会出现此问题.这与Windows的一项功能冲突,该功能旨在使多个进程能够处理端口80上的请求.完全可以让任意数量的进程都在端口上接收HTTP请求80,因为Windows有一个内置的HTTP调度机制.每个进程都可以告诉Windows它想要处理哪些URL.
但是,如果应用程序服务器完全忽略了这一点,那么您将回到灵活性较低的旧式套接字世界,其中只有一个进程可以接收发往任何特定端口的请求.
这可能没问题 – 如果你真的不想要在端口80上处理HTTP请求的特定进程以外的任何东西,那么使用不能支持Windows提供的更灵活机制的应用服务器就可以容忍了. (并且一些流行的应用程序服务器有这个限制.例如,AFAIK,Tomcat无法与其他人一起玩,并且坚持将端口80全部用于自身.所以如果你使用别人的应用服务器,那么它可能是不切实际的.使其适应使用首选机制.)
Windows试图通过不将其调度机制绑定到端口80来适应这种不灵活的服务,直到某些主动要求它为止. (这就是为什么你最初不一定会看到问题的原因,但是在某种更新或配置更改之后可能会遇到这个问题.)但是依靠这个并不是一个非常可靠的解决方案 – 你基本上相信运气,没有什么尝试在应用服务器启动之前在端口80下进行侦听. (进程可能会推测性地尝试在端口80上注册某些URL,并且如果不允许则返回,则有多种原因.)
因此,如果您希望一个服务具有对端口80的独占访问权限,那么您最好告诉Windows.尝试关闭可能尝试使用通常的端口共享机制的所有服务并不是很好,因为很难确信您已经找到了所有这些机制. (特别是当Windows更新似乎改变默认设置时.)禁用你所知道的那些可能是一种好习惯,但最好从两端接近:禁用你不想要的服务,并确保它不是你可能不知道要绊倒你的人.
默认情况下,HTTP.SYS(Windows中的基础端口共享HTTP分派机制)能够侦听所有地址.但你可以告诉它不要.此页面显示了一种方法:http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/
这是一种相对较轻的方法,因为它仍然可以在localhost上侦听IPv6.它只是释放了IPv4端口80.您可以通过更专业的配置进一步使用它. (你甚至可以完全禁用HTTP.SYS,但这可能会破坏80以外的端口,所以它可能会导致问题.)
但无论你做什么,重点是确保HTTP.SYS不会尝试在你关心的IP地址上侦听端口80.完成后,您无需担心禁用服务,也不必担心重新引入问题的其他更改.如果您确保所需的端点实际上不受端口共享的约束,那么您应该发现系统进程停止绑定它.