How do I tell which application is using which port?

I have been looking at netstat output on a MacBook. I noticed that some applications enable you to specify which port it uses. Например, utorrent allows you to do that. I chose a port 55743 then ran netstat | grep 55743 and the output was the following.

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

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

2 ответа

Решение

Как упоминал Дэвид Хоуд, 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

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

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

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

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

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

netstat -lp
lsof -i udp:55743
Другие вопросы по тегам