Вывод 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