При запуске новых сервисов в 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
Можно сразу завершить этот процесс, отправив результаты через pipe в командлет Stop-Process:
Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess| Stop-Process
Проверьте, что порт 80 теперь свободен:
Test-NetConnection localhost -port 80
Чтобы быстрой найти путь к исполняемому файлу процесса в Windows, используйте команды:
cd /
dir tiny.exe /s /p
Или можно для поиска файла использовать встроенную команду where :
where /R C:\ tiny
В нашем случае мы нашли, что исполняемый файл
tiny.exe
(легкий HTTP сервер), который слушает 80 порт, находится в каталоге c:\Temp\tinyweb\tinyweb-1-94
На днях снова поступил вопрос: Как узнать что слушает TCP/IP порт в Windows?
Я уже когда-то писал об этом, но видать пришло время сделать это еще раз…
Задача: узнать процесс, который занял конкретный порт.
Решение: воспользуемся командной строкой, чтобы увидеть, какие порты используются в данный момент и имеют специальный флаг, который говорит нам, какой порт назначен на каждый номер идентификатора процесса Windows. Тогда мы можем использовать этот номер, чтобы найти, какой именно это процесс.
Откройте командную строку и введите следующее, возможно, придется запустить ее в режиме администратора, чтобы увидеть все процессы:
NETSTAT -AON | MORE
Если вы посмотрите на правую часть, то вы увидите список PID-ов или идентификаторов процессов. Найдите тот, который привязан к порту, с которым вы работаете, вы увидите 0.0.0.0:80 или порт 80, его PID — 4708.
Теперь вы можете просто открыть диспетчер задач, возможно, придется использовать опцию Показать процессы для всех пользователей, и тогда вы сможете найти PID в списке.
Есть еще один вариант:
Например C:\>netstat -an|findstr /i listen
Подробней читаем здесь: http://dosprompt.info/network/netstat.example.asp
Всем хорошей работы !!!
08.08.2012 —
Опубликовал: |
ms windows server 2008
Sorry, the comment form is closed at this time.
Содержание статьи:
- Типовые задачи и их решение
- Вариант 1: смотрим список прослушиваемых портов + приложение (общий случай)
- Вариант 2: а если наоборот — по названию приложения узнать порт
- Вариант 3: исп-ем спец. приложения (более информативнее и быстрее)
- Вопросы и ответы: 0
Доброго времени!
При запуске некоторого ПО/сервисов можно столкнуться с тем, что определенный порт в системе уже занят… какой-нибудь другой программой (скажем, настраиваете вы апач — и возникает конфликт порта 80. Например, на нем может «висеть/слушать» Skype…). Незадача…?
Собственно, в заметке приведу неск. способов, как можно относительно быстро узнать «кем» и «чем» заняты определенные порты — а это позволит быстро изменить их настройки и разрешить вопрос! (разумеется, приводить советы посмотреть описание установленного софта, в котором разработчики указывают порты — я не буду: ибо это долго, и не всегда продуктивно… 🙂).
*
Примечание:
- заметка носит информативный характер, и не явл. инструкцией в последней инстанции. Дело в том, что нередко встречаются не офиц. резервируемые порты… и, разумеется, точности здесь никакой быть не может;
- если у вас не получается подключиться к сетевым играм, есть проблемы с раздачей/загрузкой торрентов и пр. — ознакомьтесь с заметкой про проброс портов на роутере (это немного не по теме, но когда речь заходит об этом — очень часто приходится ссылаться на сию заметку).
*
Типовые задачи и их решение
Вариант 1: смотрим список прослушиваемых портов + приложение (общий случай)
По умолчанию в Windows есть консольная утилита netstat. Она позволяет посмотреть активные соединения протокола TCP/IP (в т.ч. там есть и порты).
*
Чтобы вывести полный список портов (TCP, UDP) нужно:
1) Запустить 📌командную строку от имени администратора.
2) Ввести команду Netstat –ao и нажать Enter.
(можно ее слегка изменить и использовать такую: netstat -aon| find «LISTENING»)
Примечание:
- «-a» – см. все соединения и порты.
- «-o» – см. числовые идентификаторы процесса, отвечающего за конкретное соединение (Process ID, сокращенно: PID).
- «-n» – см. номера портов в числовом формате»;
Где тут порт и идентификатор, см. скрин, я выделил // пример работы с командной строкой, команда netstat
📌 Для справки!
В списке, который предоставит нам команда Netstat, есть строки с аббревиатурами: «ESTABLISHED» и «LISTENING». В чем разница:
- «ESTABLISHED» — означает, что в данный момент установлено соединение;
- «LISTENING» — означает, что сокет ожидает соединения (в режиме прослушивания).
Причем, и тот и другой порты открыты, но один ожидает соединения, а другой уже установил соединение!
Например, протокол HTTP (это порт 80-й) находится в режиме прослушивания («LISTENING») до тех пор, пока кто-нибудь не зайдет на сервер. В тот момент, когда кто-нибудь будет загружать страницу — режим поменяется на «ESTABLISHED».
3) Например, понадобилось нам узнать какой процесс занял порт с идентификатором (PID) «5288» — вводим в командной строке tasklist | find «5288» и нажимаем Enter;
Вводим PID и смотрим название процесса
4) Почти сразу же узнаем, что это фирменная утилита от производителя ноутбука ASUS (шла вместе с операционной системой Windows // инсталлируется автоматически при установке драйверов).
Asus
5) Кстати, если вам неудобно пользоваться командной строкой — то узнать название процесса и его расположение по PID можно в 📌диспетчере задач (Ctrl+Alt+Del): достаточно перейти во вкладку «Подробности».👇
Диспетчер задач — подробности — сортировка по ИД процессу
*
Вариант 2: а если наоборот — по названию приложения узнать порт
Относительно просто!
Находим нужный процесс в 📌диспетчере задач (вкладка «Подробности» для Windows 11). Узнаем его ИД (в моем случае 6216, взял для примера uTorrent).
uTorrent — ИД 6216
Далее в комодной строке набираем следующее:
netstat -aon| find «6216»
где вместо «6216» нужно указать свой ИД.
19411 порт, используемый uTorrent
В результате определяем, что uTorrent слушает порт 19411…
Кстати, в настройках uTorrent (если запустить саму программу) — можно тоже узнать и изменить этот порт на какой-нибудь другой.
Настройки uTorrent — выбор порта
*
Вариант 3: исп-ем спец. приложения (более информативнее и быстрее)
📌 TCPView
Ссылка на сайт Microsoft: https://learn.microsoft.com/ru-ru/sysinternals/downloads/tcpview
TCPView — небольшая спец. утилита (не требующая установки), позволяющая очень быстро узнать список всех сетевых соединений, с информацией о портах, IP-адресах и пр.
Причем, список можно отсортировать по нужному вам столбцу + отфильтровать по какой-нибудь аббревиатуре. В общем, вещи удобная! См. скрин ниже. 👇
TCPView — список приложений, смотрим все необходимые свойства
📌 CurrPorts
Ссылка на офиц. сайт: https://www.nirsoft.net/utils/cports.html#DownloadLinks
CurrPorts — еще одна сетевая утилита для просмотра сетевых подкл. В установке программа не нуждается, по информативности не уступает первой. Кстати, у утилиты есть рус. перевод (но скачать его нужно отдельно, есть на офиц. сайте).
CurrPorts — пример использования
*
Дополнения по теме — приветствуются!
Успехов!
👋
How to Identify Programs Using or Blocking Ports on Your Computer
Windows:
The Netstat.exe utility has a switch that can display the process identifier (ID) associated with each connection to identify port conflicts. This information can be used to determine which process (program) listens on a given port.
Using Netstat command:
- Open a CMD prompt
- Type in the command: netstat -ano -p tcp
- You’ll get an output similar to this one
- Look out for the TCP port in the Local Address list and note the corresponding PID number
Using Task Manager, you can match the process ID listed to a process name (program). This feature enables you to find the specific port that a program currently uses. Because this specific port is already in use by a program, another program is prevented from using that same port.
To Match the Process ID to a Program Using Task Manager:
- Press CTRL+ALT+DELETE, and then click Task Manager.
- Click the Processes tab.
- If you do not have a PID column, click View, click Select Columns, and then click to select the PID (Process Identifier) check box.
- Click the column header labeled «PID» to sort the process by their PIDs. You should be able to quickly find the process ID and match it to the program listed in Task Manager.
To Match the Process ID to a Program Using the Command Line:
Example to find which process uses TCP port 9443:
C:\>netstat -ano -p tcp |find «9443»
Process with PID 1400 is listening on TCP port 9443. Now, we can query the task list to find the process.
C:\>tasklist |find «1400»
Here is a typical situation where the EveryonePrint Web service uses TCP port 9443.
Linux:
The Netstat.exe command has a switch that can display the process identifier (PID) associated with each connection to identify port conflicts. This information can be used to determine which process (program) listens on a given port.
Using Netstat command:
- Open a terminal
- Type in the command: sudo netstat -ano -p tcp
- You’ll get an output similar to this one
- Look out for the TCP port in the Local Address list and note the corresponding PID number
To Match the Process ID to a Program:
From the netstat list, you already know the Program name; you can have further details about it using the following command:
ps -ef | grep <PID number>
If you’re a system administrator, you know how important it is to keep an eye on the processes running on your Windows system. Sometimes, you may need to find out which process is listening on a particular port. In this article, we’ll show you how to do that using both CMD and PowerShell.
By learning how to identify the process listening on a port, you can troubleshoot network-related issues more effectively and take necessary actions to fix them.
Method 1. Using Command Prompt
Use the following command to find out the process id (PID) listening on port 80. You can change this port to search for another port.
netstat -aon | findstr ":80" | findstr "LISTENING"
Output:
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 TCP [::]:80 [::]:0 LISTENING 4
The output will show you the process ID (PID) of the process listening on the specified port. You can then use the Task Manager to find the process using the PID.
Use this process id with the task list command to find the process name.
tasklist /fi "pid eq 4"
You will see the process name in the results.
Method 2. Using PowerShell
The second method uses the PowerShell command to find out the process running on a specific port on Windows.
Launch the PowerShell terminal and execute the following command to find the process name running on port 80. You can change the port number to check for other ports.
Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess
The output will show you the process ID (PID) of the process listening on the specified port. You can then use the Task Manager to find the process using the PID.
Conclusion
In conclusion, identifying the process listening on a port is a useful skill for system administrators, especially when troubleshooting network-related issues. In this article, we’ve shown you how to do that using both CMD and PowerShell.
By using CMD, you can use the netstat command to find out which process is listening on a port. In PowerShell, you can use the Get-NetTCPConnection cmdlet to achieve the same result.
With these tools at your disposal, you can quickly identify the processes that are listening on specific ports on your Windows system and take necessary actions to fix any issues that may arise. So, next time you need to troubleshoot network-related issues, try using CMD or PowerShell to identify the processes listening on specific ports, and see how it can make your job easier.