Настройка Wi-Fi

Проверить занят ли порт. Как узнать, какая программа использует порт в Windows.

Проверить занят ли порт. Как узнать, какая программа использует порт в Windows.

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

Например, браузеры, как правило, всегда используют порт под 80-м номером, тогда как почтовые клиенты могут подключаться к одновременно двум портам, 25-му — для отправки писем, 110-му — для получения.

Вы можете самостоятельно проверить, какой порт занят, и какой программой. Это несложно. В Windows для этого можно использовать специализированное ПО наподобие TCPView или встроенные средства системы — всемогущую командную строку. В последнем случае нужно запустить консоль с администраторскими правами и ввести в окно следующую команду:

netstat /?

При этом отобразится общее описание команды и перечень доступных параметров. Так, использование команды netstat, дополненной ключом -a, откроет список с названиями всех подключений, ключ -o предоставит доступ к идентификатору каждого процесса, ключ –b выведет исполняемый файл, задействованный в организации подключения, в чем, собственно, и заключается наша задача. Также для просмотра номеров портов и адресов можно вводить netstat –N. Ключи можно сочетать, если нужно узнать больше подробностей о порте.



Например, чтобы посмотреть список активных подключений, источник, локальный и внешний адреса, идентификатор и состояние, нужно вводить netstat –a –n –o. Чтобы узнать, какому файлу, принадлежит, например ID 2248, нужно просто расширить вводимую команду, добавив ключ –b. Как вариант, можно также использовать другую команду:

tasklist | find "2248"

Вот и все. Теперь вы знаете, как узнать, какое приложение в Windows какой порт использует.

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

Недаром эти два слова являются омонимами.

С этой точки зрения компьютер представляется ничем иным как городом, а еще лучше страной с множеством портов, а программы, имеющие доступ в Интернет – судами с полезным или опасным грузом (тут уж всякое бывает).

Портом компьютерным и портом как местом на берегу моря помимо явного назначения еще в том заключается, что суда, если их размеры тому позволяют, могут в разные порты входить, а вот программы только к определенным портам подключаться.



Многие браузеры, к примеру, используют порт под номером 80, в то время как могут использовать два порта, а именно номер 25 для отправки почты и номер 110 для приема.

Так вот, иногда у пользователей возникает необходимость узнать, какой порт использует какая программа. А узнать это весьма просто. Для этих целей можно воспользоваться специальными утилитами типа TCPView либо же самой обыкновенной командной строкой. Запустите консоль от имени администратора и выполните вот такую команду:
netstat /?





При этом откроется краткое описание команды и список доступных параметров. Например, использование netstat с ключом –а выведет список всех подключений и портов прослушивания, ключ –o откроет доступ к ID каждого процесса, а ключ –b покажет исполняемый файл, участвующий в создании подключения, что собственно нами и нужно. Для просмотра адресов и номеров портов также можно использовать ключ –N .

Итак, выполняем команду netstat –a –n –o и смотрим, что получилось. Мы получили список активных подключений с указанием протокола, локального и внешнего адресов, состояния и идентификатора. Как узнать, к примеру, какому файлу принадлежит ID 2248? Можно расширить команду добавим в нее ключ –b или тут же выполнить другую команду tasklist | find "2248" . Вот все так просто.

Если порт открыт это означает, что какая либо программа (например сервис) использует его для связи с другой программой через интернет или в локальной системе. Чтобы посмотреть какие порты открыты в вашей системе Linux можно использовать команду netstat. В выводе будут показаны все сервисы и прослушиваемые ими порты и ip адреса.

sudo netstat -ntulp Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 2392/smbd
tcp 0 0 0.0.0.0:9518 0.0.0.0:* LISTEN 2894/skype
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2896/vlc
tcp 0 0 127.0.0.1:3493 0.0.0.0:* LISTEN 2467/upsd
...

  • -l или —listening — посмотреть только прослушиваемые порты
  • -p или —program — показать имя программы и ее PID
  • -t или —tcpпоказать tcp порты
  • -u или —udp показать udp порты
  • -n или —numeric показывать ip адреса в числовом виде

Способ 2 lsof

Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию i.

dhcpcd 2136 root 6u IPv4 4986 0t0 UDP *:bootpc
hamachid 2323 root 8u IPv4 5587 0t0 TCP 192.168.1.2:35445->212.118.234.65:https (ESTABLISHED)
smbd 2392 root 27u IPv6 5624 0t0 TCP *:microsoft-ds (LISTEN)
sshd 2421 root 3u IPv4 6196 0t0 TCP *:ssh (LISTEN)
upsd 2467 nut 4u IPv4 6235 0t0 TCP comm-app.local:nut (LISTEN)

Еще один пример, смотрим какие процессы работают с портом 80:

sudo lsof -i | grep 80

ntpd 2213 root 23u IPv6 5422 0t0 UDP :ntp
ntpd 2213 root 27u IPv6 5598 0t0 UDP :ntp
skype 2894 serigy 87u IPv4 7080 0t0 TCP *:9518 (LISTEN)
chrome 3114 sergiy 122u IPv4 31904 0t0 TCP 192.168.1.2:47804->srv118-131-240-87.vk.com:https (ESTABLISHED)

Способ 3. nmap

Nmap — мощный сетевой сканер, разработанный для сканирования и пентестинга удаленных узлов, но ничего не мешает направить его на локальный компьютер:

Starting Nmap 6.47 (http://nmap.org) at 2015-08-02 17:27 EEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00036s latency).
Other addresses for localhost (not scanned): 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1
rDNS record for 127.0.0.1: comm-app.local
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3493/tcp open nut
8080/tcp open http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

Если вы хотите посмотреть какие порты на компьютере доступны снаружи, здесь тоже пригодится Nmap. Если компьютер — общедоступный сервер, то результат скорее всего не будет отличатся от локального сканирования, но на домашнем компьютере все немного по другому. Первый вариант — используется роутер и в сеть будут видны только порты роутера, еще одним порогом защиты может стать NAT сервер провайдера. Технология NAT позволяет нескольким пользователям использовать один внешний IP адрес. И так для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:

nmap 178.93.149.50

В результате мы можем получить открытый порт 80 веб сервера, или даже 21 — файлового сервера, которых мы не устанавливали, эти порты открыты роутером, 80 — для веб-интерфейса, а 21 для может использоваться для обновления прошивки. А еще можно вообще не получить результатов, это будет означать что все порты закрыты, или на сервере установлена система защиты от вторжений IDS.

От имени администратора в командной строке набери команду:

Netstat -ab

Поскольку список может быть довольно большой, то лучше вывести всё это дело в какой-нибудь файл. Например, так:

Netstat -ab > ports.txt

В файле искать будет проще.

Подробное объяснение

Да вообще программ для подобных целей полно, любой брандмауер/фаервол может это отобразить. Ну если необходимо решить задачу именно стандартными средствами ОС Windows, то можно воспользоваться консольной программой netstat.

Удобно использовать с ключом -b (netstatn -b), таким образом будет выведен список не только открытых портов, но и приложений, которые эти порты используют, а так же будут указаны активные подключения, сетевые адреса (внутренние и внешние) с сетевыми портами, идентификаторы процессов использовавших конкретный порт (PID) и их названия.

А вообще советую почитать справку по этой утилите, набрав в консоле (она же cmd) команду netstat /? Там много полезной информации написано, в том числе и по ключам, с помощью которых можно детализировать списки вывода информации не только по сетевым портам.

Отображение статистики протокола и текущих сетевых подключений TCP/IP.

NETSTAT [-a] [-b] [-e] [-n] [-o] [-p протокол] [-r] [-s] [-v] [интервал]

A Отображение всех подключений и ожидающих портов.
-b Отображение исполняемого файла, участвующего в создании каждого подключения, или ожидающего порта. Иногда известные исполняемые файлы содержат множественные независимые компоненты. Тогда отображается последовательность компонентов, участвующих в создании подключения, либо ожидающий порт. В этом случае имя исполняемого файла находится снизу в скобках , сверху - компонент, который им вызывается, и так до тех пор, пока не достигается TCP/IP. Заметьте, что такой подход может занять много времени и требует достаточных разрешений.
-e Отображение статистики Ethernet. Он может применяться вместе
с параметром -s.
-n Отображение адресов и номеров портов в числовом формате.
-o Отображение кода (ID) процесса каждого подключения.
-p протокол Отображение подключений для протокола, задаваемых этим
параметром. Допустимые значения: TCP, UDP, TCPv6 или UDPv6.
Используется вместе с параметром -s для отображения статистики
по протоколам. Допустимые значения: IP, IPv6, ICMP, ICMPv6,
TCP, TCPv6, UDP или UDPv6
-r Отображение содержимого таблицы маршрутов.
-s Отображение статистических данных по протоколам. По умолчанию
данные отображаются для IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP
и UDPv6. Параметр -p позволяет указать подмножество выводящихся
данных.
-v При использовании с параметром -b, отображает последовательность компонентов, участвующих в создании подключения, или ожидающий порт для всех исполняемых файлов.
интервал Повторный вывод статистических данных через указанный
промежуток времени в секундах. Для прекращения вывода данных
нажмите клавиши CTRL+C. Если параметр не задан, сведения о
текущей конфигурации выводятся один раз.

Если есть всё же есть возможность, то лучше воспользоваться сторонними программами ибо так удобнее. Например утилита Tcpview Марка Руссиновича покажет детальную информацию о сетевых портах, при этом в режиме реального времени будет ещё и мониторить всё это.