Назад | Перейти на главную страницу

Почему netstat показывает, что процесс Tomcat прослушивает несколько портов?

Вывод netstat с процессом tomcat (pid: 28899) выглядит следующим образом:

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 отображает только идентификатор родительского процесса?

В частности, 8009 - это порт коннектора AJP по умолчанию для Tomcat (например, для mod_ajp в Apache для связи с Tomcat), а localhost: 8005 - порт выключения по умолчанию. Предположительно, вы используете 8000 в качестве порта HTTP-коннектора. Вы можете найти более подробное обсуждение в документации Tomcat.

Короткий ответ: «потому что процесс попросил ядро ​​разрешить ему связываться с тремя портами». Здесь нет неявной границы; вот мой апач, весело слушающий два порта:

[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