Как узнать, какое приложение использует тот или иной порт?

Как узнать, какое приложение использует тот или иной порт?

Я смотрел на netstatвывод на MacBook. Я заметил, что некоторые приложения позволяют вам указать, какой порт они используют. Например, utorrentпозволяет вам сделать это. Я выбрал порт 55743, затем запустил netstat | grep 55743, и вывод был следующим.

udp6       0      0  *.55743                *.*
udp4       0      0  *.55743                *.*

Когда я выхожу, utorrentпорт освобождается. Но если я не знаю номер порта, то как я могу узнать, какое приложение использует какой порт? И возможно ли, что некоторые приложения тайно используют порты для связи с внешними серверами-устройствами?

решение1

Как Дэвид Хоуд упомянул, lsof -iваш друг дает вам снимок текущих соединений/операций сокетов. К сожалению, на OS X netstatэта функция не поддерживается.

Другие варианты включают в себя:

Activity Monitor.appпозволяет вам видеть файлы и порты, открытые приложением. Это можно сделать, дважды щелкнув по процессу и открыв вкладку «Открытые файлы и порты».

Dtrace - проверитьsoconnectскрипт, который предоставляет вам постоянную информацию о сетевых операциях, пока вы не выйдете (control+c). Пример вывода:

sudo /tmp/soconnect.d 
PID    PROCESS          FAM ADDRESS          PORT   LAT(us) RESULT
8211   X-Lite           2   192.168.1.109    5060        25 Success
4112   Google Chrome    2   173.194.34.134   443         53 In progress
8211   X-Lite           2   192.168.1.109    5060        30 Success

Одно приложение, которое мне лично очень нравится, это little snitch, но оно, как оказалось, является коммерческим программным обеспечением. Хотя это программное обеспечение для настольного брандмауэра, у него есть ряд функций, которые могут быть вам интересны:

  • сетевой монитор, который сообщает, какие приложения куда подключаются (в некотором роде похоже на вывод soconnect.d)
  • захват сетевого трафика для каждого приложения (т.е. аналогично Wireshark, вы можете наблюдать за сетевым трафиком, но ограничить его только определенным приложением)

Отвечая на ваш второй вопрос - да, в традиционных операционных системах (например, OS X, Windows) приложения имеют возможность подключаться к сторонним системам различными способами и отправлять что угодно. Ряд настольных брандмауэров пытаются решить эту проблему, позволяя вам указать, куда каждое приложение может подключаться, таким образом, имея своего рода белый список. Как и все остальное в безопасности, этот подход не лишен своих подводных камней.

ps. Я не имею никаких связей с поставщиками программного обеспечения для настольных брандмауэров :)

решение2

Этого можно добиться с помощью дополнительных аргументов netstat или с помощью lsof:

netstat -lp
lsof -i udp:55743

Связанный контент