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