为什么 netstat 显示 Tomcat 进程监听多个端口?

为什么 netstat 显示 Tomcat 进程监听多个端口?

tomcat 进程(pid:28899)的 netstat 输出如下:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      28899/java      
....
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      28899/java        
....
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      28899/java 

那么为什么一个进程可以监听三个 tcp 端口呢?是不是因为 8009 和 8005 被 tomcat 的两个子进程监听,而 netstat 只显示父进程 ID?

答案1

简短的回答是“因为进程要求内核允许它绑定到三个端口”。这方面没有隐含的限制;这是我的 apache,愉快地监听两个端口:

[madhatta@lory mail]$ sudo netstat -apn|grep http
tcp        0      0 178.18.123.145:443          0.0.0.0:*                   LISTEN      1753/httpd          
tcp        0      0 :::80                       :::*                        LISTEN      1753/httpd          

答案2

更具体地说,8009 是 Tomcat 的默认 AJP 连接器端口(例如,Apache 中的 mod_ajp 与 Tomcat 通信),而 localhost:8005 是默认关闭端口。据推测,您使用 8000 作为 HTTP 连接器端口。您​​应该能够在 Tomcat 文档中找到更深入的讨论。

相关内容