Как проверить какой программой занят порт
Требования.
Статья применима для Windows 2000/XP/Vista/7.
Информация.
При установке некоторых программ иногда возникает проблема с доступностью порта. Т.е. вы устанавливаете программу, а она вам говорит: «Извините, но предпочитаемый порт номер занят!». И самое интересное программа не говорит чем или кем занят порт.
Как определить каким процессом (программой) занят порт.
1. В меню «Пуск» выберите пункт «Выполнить«;
2. В поле «Открыть» наберите команду cmd и нажмите кнопку «ОК»;
Откроется окно командной строки, примерно такого вида:
3. Наберите команду netstat -ano и нажмите кнопку «Ввод» (Enter) на клавиатуре;
Результатом выполнения данной команды, должен быть список всех активных подключений, с ip-адресами и номерами портов.
4. Теперь в колонке «Локальный адрес», находим нужный нам порт и записываем его идентификатор в колонке «PID»;
Например порт номер 80, его идентификатор 440.
5. Снова открываем меню «Пучк» и выбираем пункт «Выполнить«;
6. В поле «Открыть» вводим команду taskmgr и нажимаем кнопку «ОК»;
7. В окне «Диспетчер задач Windows» переходим на вкладку «Процессы«;
8. В главном меню открываем пункт «Вид» и выбираем пункт «Выбрать столбцы. «;
9. В окне «Выбор столбцов» находим пункт «Идентиф. процесса (PID)» и ставим рядом с ним галочку;
10. Нажимаем кнопку «ОК»;
11. Теперь в окне «Диспетчер задач Windows«, нажимаем на заголовок столбца «PID», для сортировки процессов по возрастанию;
12. Находим номер нашего процесса 440 и в столбце «Имя образа«, смотрим какой процесс занимает наш порт;
В нашем случаи это Apache.exe
| КПД статьи 59.22% |
| Статья помогла? | |
| 2479 | 1011 |
| КОММЕНТАРИИ |
Какая программа слушает определенный порт в Windows?

26.10.2022

itpro

Windows 10, Windows Server 2019

комментария 2
При запуске новых сервисов в Windows, вы можете обнаружить что нужный порт уже занят (слушается) другой программой (процессом). Разберемся, как определить какая программ прослушивает определенный TCP или UDP порт в Windows.
Например, вы не можете запустить сайт IIS на стандартном 80 порту в Windows, т.к. этот порт сейчас занят (при запуске нескольких сайтов в IIS вы можете запускать их на одном или на разных портах). Как найти службу или процесс, который занял этот порт и завершить его?
Чтобы вывести полный список TCP и UDP портов, которые прослушиваются вашим компьютером, выполните команду:
netstat -aon| find «LIST»
Или вы можете сразу указать искомый номер порта:
netstat -aon | findstr «:80» | findstr «LISTENING»
Используемые параметры команды netstat:
- a – показывать сетевые подключения и открытые порты
- o – выводить идентфикатор професса (PID) для каждого подключения
- n – показывать адреса и номера портов в числовом форматер
По выводу данной команды вы можете определить, что 80 порт TCP прослушивается (статус LISTENING ) процессом с PID 16124.

Вы можете определить исполняемый exe файл процесса с этим PID с помощью Task Manager или с помощью команды:
tasklist /FI «PID eq 16124»

Можно заменить все указанные выше команды одной:
for /f «tokens=5» %a in (‘netstat -aon ^| findstr :80’) do tasklist /FI «PID eq %a»
С помощью однострочной PowerShell команды можно сразу получить имя процесса, который прослушивает:
- TCP порт: Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess
- UDP порт: Get-Process -Id (Get-NetUDPEndpoint -LocalPort 53).OwningProcess

См. статью про просмотр сетевых подключений в Windows с помощью PowerShell.
Можно сразу завершить этот процесс, отправив результаты через pipe в командлет Stop-Process:
Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess| Stop-Process
Проверьте, что порт 80 теперь свободен:

Чтобы быстрой найти путь к исполняемому файлу процесса в Windows, используйте команды:
dir tiny.exe /s /p
Или можно для поиска файла использовать встроенную команду where :
В нашем случае мы нашли, что исполняемый файл tiny.exe (легкий HTTP сервер), который слушает 80 порт, находится в каталоге c:\Temp\tinyweb\tinyweb-1-94

Также для просмотра списка процессов и используемых ими TCP портов в Windows можно использовать утилиту TCPView (https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview).

Предыдущая статья Следующая статья
Читайте далее в разделе Windows 10 Windows Server 2019



Установка и настройка OpenVPN сервера под Windows
Как сбросить пароль локального администратора в Windows?
Настройка двухфакторной аутентификации (2FA) в Windows с помощью MultiOTP
Установка KMS сервера vlmcsd на Linux для активации Windows и Office
Как узнать какой порт использует программа
На компьютере может быть установлено довольно много программ и все они резервируют в операционной системе определенный порт для взаимодействия с другим программным обеспечением по сети. В большинстве случаев пользователь заранее знает какой порт использует программа. Это может быть официально зарезервированный порт, под определенный сетевой протокол. Например почтовые программы используют для приема почты протокол POP3 и резервируют порт 110. Бывают неофициально резервируемые порты, например порт 1540 используемый агентом сервера 1С:Предприятие. Информацию об используемых неофициальных портах разработчики программного обеспечения указывают в документации.
На компьютере может быть установлено довольно много программ и все они резервируют в операционной системе определенный порт для взаимодействия с другим программным обеспечением по сети. В большинстве случаев пользователь заранее знает какой порт использует программа. Это может быть официально зарезервированный порт, под определенный сетевой протокол. Например почтовые программы используют для приема почты протокол POP3 и резервируют порт 110. Бывают неофициально резервируемые порты, например порт 1540 используемый агентом сервера 1С:Предприятие. Информацию об используемых неофициальных портах разработчики программного обеспечения указывают в документации.
Определения порта программы стандартными средствами Windows
Узнать какой порт использует программа в операционной системе Windows можно используя инструменты командной строки — tasklist и netstat. С помощью tasklist узнаем номер идентификатора процесса — PID, затем в netstat находим номер порта этого процесса.
Поиск идентификатора процесса PID
1. Открываем командную строку: сочетание клавиш и вводим команду CMD.

2. Запускаем tasklist и находим PID процесса.
Если необходимо отобразить полный список процессов, в том числе служебных и системных, необходимо использовать tasklist без аргументов.
tasklist
Команда tasklist /fi «status eq running» найдет только те процессы, которые были запущенны программами. Это сократит список процессов и облегчит поиск.
tasklist /fi "status eq running"
Находим в списке нужную программу, например OneDrive.exe и запоминаем соответствующий PID.

Поиск порта процесса
Для получения списка используемых портов воспользуемся утилитой командной строки netstat.
netstat -aon
B netstat были использованы слtдующие аргументы:
-a — показывает все сокеты, используемые процессами
-o — показывает PID процесса
-n — показывает адреса в числовом формате
В результате будет получен довольно крупный список активных сетевых соединений, среди которых необходимо найти соединение с нужным PID.

Чтобы отфильтровать список и сразу найти сетевое соединение с нужным PID перенаправим результаты netstat в утилиту findstr «PID_number», где PID_number — идентификатор искомого процесса.
netstat -aon | findstr "15304"

В найденных результатах видно, что процесс c PID 15304 (программа OneDrive.exe) использует несколько сетевых портов: 11906, 11907, 11908.
Обращайте внимание на то, для какого траспортного протокола открыт порт: ТСР или UDP. Это информация будет важна, когда будете пробрасывать порт через межсетевой экран.
Программы для просмотра сетевых соединений
Этот способ подойдет для тех, кто не хочет погружаться в работу утилит командной строки Windows, а желает быстро и просто получить информацию о портах, которые использует программа, в графическом интерфейсе.
Без труда в интернете можно найти 2 бесплатные программы для полчения списка сетевых соединений операционной системы — это «TCPView» и «Curr ports».
TCPView
TCPView — программа из набора утилит Sysinternals от Марка Руссиновича, с некоторых пор ставшей частью самого Microsoft. Программа не требует установки, занимает небольшой объем дискового пространства и скачать ее можно с официального сайта Майкрософт: https://docs.microsoft.com/ru-ru/sysinternals/downloads/tcpview .
После запуска программы будет сразу показан список всех сетевых соединений процессов с информацией о протоколе, локальном и удаленном адресе, локальном и удаленном порте соединения. Список можно фильтровать, сортировать и следить за изменениями онлайн. В дополнение к этому можно убить какой-либо процесс или определить кому принадлежит ip-адрес хоста, с которым установлено соединение.
Из мелких недостатков — отсутствие русского языка.

CurrPorts
CurrPorts — программа от проекта под названием NirSoft, который так же специализируется на разработке простых и бесплатных утилит для Windows. Программа так же не требует установки, мало весит и в целом очень похожа на TCPView, но имеет более аскетичный интерфейс. Скачать программу можно с официального сайта проекта: https://www.nirsoft.net/utils/cports.html#DownloadLinks .
Из плюсов программы следует отметить наличие русского языка. Чтобы русифицировать программу нужно скачать отдельный файл русификации и положить его в папку с программой.

Остались вопросы или что-то непонятно — смело оставляйте комментарии.
Как определить программу, использующую тот или иной порт TCP/IP
П рограммы, способные соединяться с интернетом при подключении к сети используют так называемые порты — цифровые адреса сетевых устройств. Иногда при тонкой настройке программ или устройств возникает необходимость узнать, какое приложение занимает тот или иной порт, например с целью освободить его для другой программы. В Windows сделать это очень просто. Основных вариантов два: с помощью обычной командной строки и с помощью сторонних утилит.
В командной строке
Для отображения текущих соединений TCP/IP в Windows используется штатная консольная утилита netstat. Она может принимать более 10 параметров, но для того чтобы узнать какой порт занят каким процессом, вполне хватит трех: -a, -o и –n. Для начала необходимо получить список всех текущих соединений. От имени администратора откройте консоль CMD и выполните эту команду:

Данные будут выведены в пять колонок: имя, локальный адрес, внешний адрес, состояние и идентификатор процесса (PID). Отыщите нужный вам порт и посмотрите, с каким PID он связан. Теперь откройте Диспетчер задач, переключитесь на вкладку «Процессы» (в Windows 7) или «Подробности» (в Windows 8.1) и найдите в списке этот PID. А найдя его, вы идентифицируете и процесс.

Примечание: если в Диспетчере задач у вас не отображается ИД процесса, включите его через меню «Вид» -> «Выбрать столбцы».
В утилите CurPorts
Второй способ более прост, но для определения занимающего порт процесса вам понадобится сторонняя утилита CurPorts. Она бесплатна, проста и не требует установки.

Если её запустить, в окошко будут выведены не только порты и связанные с ним процессы и сервисы, но и пути к исполняемым файлам, их описания, версии, данные о разработчике и много другой полезной информации.