Короче говоря, ваш процесс связан с интерфейсом обратной связи, который не может получать пакеты из внешней сети. Вам нужно будет перенастроить процесс, связанный с портом 8020, для связи с внешним интерфейсом, чтобы иметь возможность подключаться к нему с другого хоста.
Длинный ответ заключается в том, что два адреса вашего сайта (127.0.0.1 и 0.0.0.0) являются особыми в определенных отношениях, и полезно понимать, что вы видите.
Адреса в блоке адресов Интернет-протокола 127.0.0.0/8 (из которых 127.0.0.1 - один) зарезервированы для внутреннего использования на хосте. Подробности см. rfc5735 , но в этих адресах нет ничего особенного, кроме того, что все IP-хосты используют одинаковые правила и не настроены для маршрутизации этих адресов за пределы хоста или маршрутизатора.
На вашем компьютере вы обычно видите специальный «петлевой» сетевой интерфейс, которому назначено 127.0.0.1.
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
Этот интерфейс является специальным и никогда не подключается к внешней сети. Он используется, когда программа хочет подключиться к службе на локальном компьютере, так как 127.0.0.1 почти всегда будет настроен как активный сетевой интерфейс. Пакеты будут поступать на этот интерфейс только в том случае, если они отправлены из локального процесса.
Другой адрес вашего сайта, 0.0.0.0, является специальным и обычно представляет все IP-адреса, сопоставленные с любым сетевым интерфейсом на вашем компьютере. Когда программа хочет прослушивать соединения, поступающие через любой сетевой интерфейс или IP-адрес, она привязывает порт TCP / UDP к 0.0.0.0 для прослушивания соединений.
Тем не менее, в вашем случае вы сообщаете о выводе netstat, содержащем 0.0.0.0 в строках, описывающих сокеты TCP в состоянии LISTEN. В этом случае netstat выводит список сокетов, прослушивающих соединения, и использует 0.0.0.0:* в качестве заполнителя для поля внешнего адреса своего вывода. В этом случае 0.0.0.0:* означает, что сокет ожидает подключения с любого хоста.
Что касается вашего вопроса о "tcp 0" против "unix 2", это первые два столбца вашего вывода netstat. Полезно взглянуть на заголовки столбцов вашей команды netstat:
# netstat -nap | head -2
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
То, что вы сообщаете как «tcp 0», просто означает, что сокет, использующий протокол TCP, имеет нулевые байты в полученной очереди, ожидая, пока программа, подключенная к этому сокету, будет использовать. Точно так же "unix 2" - это то, что называется сокетом unix с двумя байтами, ожидающими в своей очереди приема для того, чтобы подключенный процесс использовал.
Сокеты TCP являются частью стека TCP / IP, который может использоваться локально или в IP-сетях для взаимодействия процессов. Сокеты UNIX, с другой стороны, проще и используются только для того, что называется IPC или межпроцессным обменом данными, который происходит только между двумя процессами, работающими в локальной системе, и при этом не используется сеть (в любом случае, нет адресов и портов). Сокеты UNIX считаются более эффективными, чем сокеты TCP, но они, очевидно, более ограничены в функциональности. В UNIX-подобных системах сокеты UNIX реализованы в виде файла в файловой системе специального типа «сокет», который оба процесса используют для чтения и записи сокета в качестве канала связи.