При запуске новых сервисов в 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
In this tutorial, we will learn how to run the netstat
command to check open ports in Windows Operating System. We will also look at command options and how to use the findstr
command (similar to grep) to filter the netstat output.
To check open ports, open a command prompt (or PowerShell) as administrator and run the netstat
command as follows:
netstat -aon
The command displays lots of information. What you should pay attention to are Local Addresses that are in the LISTENING state.
As you can see in the previous screenshot, In my Windows 10 computer, port 22 (SSH) is open.
Administrators can run the following command to show opened ports only without all other details:
netstat -aon | findstr /i listening
One important point is that the Windows Firewall may block a port even if it is in the listening state. In the Windows Defender Firewall with Advanced Security, there has to be a corresponding inbound firewall rule to match the listening port (Anything with a green checkmark is an open rule).
The Foreign Address column of the output shows the IP address and port of the computer/server at the remote end of the connection.
To check that the port is open from a remote computer, an administrator can run the telnet
command from a remote computer against the IP address of the Windows computer.
For example, to check if port 22 is open, I will run the telnet
command from a remote computer as follows:
telnet IP_ADDRESS 22
Replace IP_ADDRESS with the actual IP Address of the Windows computer.
Filtering netstat using findstr
Administrators can use the findstr
CMD command (which is similar to grep
) to filter netstat
command data based on string patterns.
For example, run the following command to check TCP connections in TIME_WAIT
State.
netstat -a | findstr /i TIME_WAIT
The /I
option is for the case insensitive matching.
Command Options
Windows netstat command, without any command-line arguments, displays active TCP connections.
It also includes some useful command options to show network connections and ports in various forms, such as show connections and opened ports based on the protocol, find the process id of a connection/port, view network statics, and find the application that utilizes connections and ports.
-a | displays all network connections and ports on which Windows is listening (include both IPv4 or IPv6 addresses). |
-b | The output shows you which applications are using each active connection and ports (need administrative privileges). |
-e | Displays network statistics, such as the Errors, the number of bytes, and packets sent and received. |
-n | Displays addresses and ports in numerical format. |
-f | When used, the output will contain Fully Qualified Domain Names (FQDNs) of IP addresses, if available. |
-o | Displays an additional column that contains the Process ID (PID). |
-p | Display data for a specific protocol (e.g., -p TCP). The Protocol can be one of the following: TCP , UDP , TCPv6 , or UDPv6 . If combined with the -s option, Protocol can be TCP , UDP , ICMP , IP , TCPv6 , UDPv6 , ICMPv6 , or IPv6 . |
-r | Check Windows routing table. |
-s | Displays detailed network statistics for each protocol (IPv4 , IPv6 , ICMPv4 , ICMPv6 , TCP , and UDP ). |
interval | Sets Time interval (in seconds) to automatically update the output. See examples to learn more. |
Examples: Using the netstat command
List all Active TCP connections:
netstat
Check open ports:
netstat -aon | findstr /i listening
Only want to see information about TCP protocol:
netstat -a -p tcp
Show network statistics:
netstat -s
Real-time network monitoring — In the following example, we set a 5 second time interval to check active network connections in real-time. The number 5 causes the command to repeat every five seconds (Press CTRL+C
to quit).
netstat -n 5
If you need more information about the Windows netstat command, type netstat \?
in the command prompt.
Connections between applications work much like conversations between humans. The conversation is started by someone speaking. If no one is listening, then the conversation doesn’t get far. How do you know who’s listening on a Windows PC? The Netstat command-line utility and the PowerShell Get-NetTCPConnection
cmdlet.
Not a reader? Watch this related video tutorial!
Not seeing the video? Make sure your ad blocker is disabled.
In this tutorial, you will learn how to inspect listening ports and established TCP connections on your Windows computer with Netstat and the native PowerShell command Get-NetTCPConnection
.
Prerequisites
If you’d like to follow along with examples in this tutorial, be sure you have:
- A Windows PC. Any version will do. This tutorial is using Windows 10 Build 21343.1
- PowerShell. Both Windows PowerShell and PowerShell 6+ should work. This tutorial us using PowerShell v7.2.0-preview.2
Using Netstat to Find Active and Listening Ports
Netstat is one of those command-line utilities that seems like it’s been around forever. It’s been a reliable command-line utility to inspect local network connections for a long time. Let’s check out how to use it to find listening and established network connections.
Netstat has many different parameters. This tutorial will only use three of them. To learn more about what netstat can do, run
netstat /?
.
Assuming you’re on a Windows PC:
1. Open up an elevated command prompt (cmd.exe).
2. Run netstat -a
to find all of the listening and established connections on the PC. By default, netstat only returns listening ports. Using the -a
parameter tells netstat to return listening and established connections.
The output above is broken out into four columns:
Proto
– shows either UDP or TCP to indicate the type of protocol used.Local Address
– shows the local IP address and port that is listening. For many services, this will be 0.0.0.0 for the IP part, meaning it is listening on all network interfaces. In some cases, a service will only listen on a single Network Interface (NIC). In that case, netstat will show the IP address of the NIC. A colon separates the IP address from the port that it is listening on.Foreign Address
– shows the remote IP address the local connection is communicating with. If theForeign Address
is0.0.0.0:0
, the connection is listening for all IPs and all ports. For established connections, the IP of the client machine will be shown.State
– shows the state the port is in, usually this will beLISTENING
orESTABLISHED
.
3. Now run netstat -an
. You should now see that any names in the output have been turned into IP addresses. By default, netstat attempts to resolve many IP addresses to names.
4. Finally, perhaps you’d like to know the Windows processes that are listening or have these connections open. To find that, use the -b
switch.
Using the
-b
switch requires an elevated command prompt or PowerShell prompt. You will get the errorThe requested operation requires elevation
if you use the-b
switch in a non-elevated prompt.
Using PowerShell to Find Active and Listening Ports
Now that you’ve got a chance to see how the old-school netstat utility shows active and listening ports, let’s see how to do it in PowerShell.
Using PowerShell gives you a lot more control to see just what you want, rather than having to scroll through long lists of output. The Get-NetTCPConnection
cmdlet is much more specific than netstat about what you want to see.
This tutorial isn’t going to cover all of the parameters that come with the
Get-NetTCPConnection
cmdlet. If you’re curious, runGet-Help Get-NetTCPConnection -Detailed
to discover more examples.
On your Windows PC:
1. Open up a PowerShell console as administrator.
The only reason you need to elevate a PowerShell console is to see the program that owns the connection (like the netstat
-b
parameter).
2. Run Get-NetTcpConnection
. You’ll see output similar to what netstat provided. Instead of just a big string of output, Get-NetTcpConnection
returns a list of PowerShell objects.
You can now see the same general information that netstat provided you by now; by default, you have information on the OwningProcess
(the -b
switch on netstat) and the AppliedSetting
field, which relates to the network profile the connection is a part of.
Unlike netstat, the
Get-NetTCPConnection
cmdlet will now show listening UDP connections.
3. Pipe the output to Select-Object
showing all properties. You’ll see PowerShell returns a lot more information that netstat did.
Get-NetTCPConnection | Select-Object -Property *
4. Now, narrow down the output to just listening ports.
Get-NetTCPConnection -State Listen
5. Now, find the process names for the OwningProcess
fields. To do that, run the Get-Process
cmdlet and provide the process ID as shown below.
If you’d like to create another property for the process name, you could optionally use a Select-Object
calculated field.
Get-NetTCPConnection | Select-Object -Property *,@{'Name' = 'ProcessName';'Expression'={(Get-Process -Id $_.OwningProcess).Name}}
6. Narrow down the states to a bit more by finding Listening
and Established
states by defining the State
parameter value as a comma-delimited list.
Get-NetTCPConnection -State Listen,Established
7. Finally, limit the connections down by the port the connection is connected to with the RemotePort
parameter.
Use the
LocalPort
parameter to filter connections by local port.Get-NetTCPConnection -RemotePort 443
Get-NetTCPConnection -RemotePort 443
Conclusion
You have now seen how the Netstat utility and the Get-NetTCPConnection
PowerShell cmdlet help you find local network connections.
Now that you can show the processes running on a server combine this with the Test-NetConnection PowerShell cmdlet to get an end-to-end view of connectivity between a client and server.
Все способы:
- Вариант 1: Брандмауэр
- Вариант 2: Консольные утилиты
- Способ 1: «Командная строка»
- Способ 2: «Windows PowerShell»
- Вариант 3: Онлайн-сервисы
- Вариант 4: Сторонние приложения
- Способ 1: TCPView
- Способ 2: PortQry
- Вариант 5: Веб-интерфейс маршрутизатора
- Вопросы и ответы: 0
Важно! Большая часть описанных в этой статье способов просмотра открытых портов являются универсальными для всех операционных систем семейства Windows, оставшиеся подойдут только для определенных версий. Об этом будет указанно непосредственно в тексте. Несмотря на это, все скриншоты, приведенные в статье, сделаны в Windows 10, но отличия в них заключаются исключительно в графическом оформлении интерфейса.
Вариант 1: Брандмауэр
Все открытые в системе порты фиксируются в брандмауэре, соответственно, их можно посмотреть там. Для этого выполните следующее:
- Откройте главное окно брандмауэра. Сделать это можно разными способами, универсальный подразумевает использование ввода специальной команды в утилите «Выполнить». Для этого сначала вызовите ее сочетанием клавиш Win + R, а затем впишите в поле «Открыть» команду
control firewall.cpl
и нажмите Enter.Читайте также: Настройка брандмауэра в Windows 11 / 10 / 7
- В открывшемся окне щелкните по пункту «Дополнительные параметры», расположенному на боковой панели слева.
- В новом меню на навигационной панели слева нажмите по пункту «Правила для входящих подключений».
- Найдите в списке интересующее вас разрешающее подключение (пункт, отмеченный зеленной галочкой) и откройте его «Свойства». Для этого щелкните дважды кнопкой мыши по названию.
- В появившемся окне проследуйте на вкладку «Протоколы и порты» и найдите поле «Локальный порт» — именно там и указаны искомые данные.
- Таким же образом проверьте оставшиеся подключения, чтобы узнать все открытые порты.
Обратите внимание! Этот способ не предоставляет сразу весь список открытых портов, их потребуется проверять каждый раз отдельно, что не очень удобно. Но таким образом вы сможете узнать дополнительную информацию выбранного подключения в окне его «Свойств».
Вариант 2: Консольные утилиты
Посмотреть сразу все открытые порты в операционной системе можно путем ввода специальной команды в консольных утилитах. Притом они будут различаться в «Командной строке» и «Windows PowerShell».
Способ 1: «Командная строка»
В «Командной строке» можно вывести перечень всех открытых портов с помощью команды netstat
. Она также имеет дополнительные параметры, которые позволяют гибко настроить вывод данных. Этой утилите у нас на сайте посвящена отдельная статья, в которой подробно рассмотрено ее использование. Воспользуйтесь ссылкой ниже, чтобы ознакомиться с изложенной там инструкцией.
Подробнее: Использование команды netstat для просмотра открытых портов
Способ 2: «Windows PowerShell»
Аналогичные сведения можно посмотреть в «Windows PowerShell», для этого потребуется воспользоваться командой Get-NetTCPConnection
.
- Сначала нужно запустить саму консоль от имени администратора. Во всех операционных системах это можно сделать через поиск. Вызовите его сочетанием клавиш Win + S и в появившееся поле введите запрос «Windows Powershell», а затем в результатах кликните правой кнопкой мыши по искомому приложению и воспользуйтесь пунктом «Запуск от имени администратора». При необходимости после этого подтвердите запуск, нажав по кнопке «Да» в появившемся диалоговом окне контроля учетных записей.
- Теперь можете ввести в окно консоли команду
Get-NetTCPConnection
и нажать Enter. По итогу на экране появится перечень всех портов TCP в системе, включая закрытые. - Чтобы отобразить список только открытых, необходимо воспользоваться параметром
-State
со значениемListen
. Итоговая команда будет выглядеть следующим образом:Get-NetTcpConnection -State Listen
- Если вы хотите просмотреть информацию о конечной точке UDP, тогда команда будет другой:
Get-NetUDPEndpoint
. Запущенная без опций, она вернет список только локальных портов. - Если необходимо просмотреть сетевые интерфейсы, тогда к команде потребуется добавить дополнительный параметр. В итоге она будет выглядеть следующим образом:
Get-NetUDPEndpoint | Where-Object {($_.LocalAddress -eq "0.0.0.0") -or ($_.LocalAddress -eq "::")}
Вы увидите только открытые удаленные порты UDP, локальные в перечне будут отсутствовать.
Вариант 3: Онлайн-сервисы
В интернете есть специальные сервисы, которые позволяют вывести информацию о всех открытых на компьютере портах. Это удобный способ, который не подразумевает использования штатных средств операционной системы и ввода специальных консольных команд. В сети есть множество решений для выполнения поставленной задачи, о трех из них детально рассказывается в отдельной статье на нашем сайте.
Подробнее: Онлайн-сервисы для проверки портов компьютера
Вариант 4: Сторонние приложения
Компания Microsoft для просмотра информации о состоянии портов выпустила два отдельных приложения. Они различаются набором дополнительных функций, но одинаково хорошо подходят для выполнения поставленной задачи.
Способ 1: TCPView
TCPView — это приложение с графическим интерфейсом, которое предоставляет сведения о процессах, запущенных в операционной системе. Также в нем отображается их принадлежность к определенному порту и протоколу передачи данных. Чтобы воспользоваться всеми функциями программы, потребуется изначально скачать ее на компьютер. Для этого перейдите на официальный сайт разработчика, воспользовавшись кнопкой ниже.
Скачать TCPView с официального сайта
Теперь выполните описанные далее действия, чтобы получить данные об открытых портах компьютера:
- Находясь на странице загрузки приложения, кликните по строке «Download TCPView». Точное ее расположение показано на изображении ниже.
- После завершения загрузки перейдите в папку, в которую вы сохранили файл, и извлеките их из архива. Сделать это можно как встроенными средствами операционной системы, так и с помощью стороннего программного обеспечения. Об этом подробнее рассказывается в другой статье на нашем сайте.
Подробнее: Методы извлечения из архива папки с файлами
- Затем перейдите в извлеченную директорию и запустите исполняемый файл приложения «Tcpview.exe». Устанавливать его не потребуется, так как программа является портативной.
- В открывшемся окне будут отображаться все запущенные процессы, их название находится в столбце «Process», а используемые ими порты указаны в столбце «Local Port». Соответственно, все они являются в настоящее время открытыми.
- Дополнительно можете пролистать страницу программы вправо до столбца «State» — именно там отображается состояние каждого порта. Он может прослушиваться, находиться в ожидании или вовсе не использоваться. Но, несмотря на это, каждый находящийся в списке порт является открытым.
Способ 2: PortQry
PortQry — это тоже приложение от компании Microsoft для просмотра открытых портов, только она не имеет графического интерфейса, поэтому пользоваться ей возможно только через «Командную строку».
Скачать PortQry с официального сайта
Эта программа не является портативной, в отличие от разобранной ранее в статье, поэтому ее потребуется инсталлировать, предварительно скачав на компьютер. А потом можно будет запустить утилиту в консоли и проверить открытые порты.
- Перейдя на страницу загрузки приложения, нажмите по кнопке «Download», чтобы начать скачивание инсталляционного файла.
- После того как загрузка завершится, перейдите в директорию со скачанным файлом и запустите его двойным кликом по названию. Затем в появившемся окне примите условия лицензионного соглашения и продолжайте следовать инструкциям инсталлятора.
Важно! Оставьте путь установки программы по умолчанию, чтобы при выполнении последующих действий, описанных в этой инструкции, не появлялось ошибок.
- Закройте окно инсталлятора и запустите «Командую строку» от имени администратора, например через поиск по системе. Вызовите соответствующий интерфейс комбинацией клавиш Win + S, введите запрос и в результатах щелкните по пункту «Запуск от имени администратора».
Читайте также: Как запустить «Командную строку» от имени администратора в Windows 11 / 10
- Проследуйте в директорию, в которую было установлено приложение. По умолчанию это
C:\PortQryV2
. Чтобы туда перейти, следует ввести и выполнить следующую команду:cd C:\PortQryV2
- Запустите приложение с параметром
-local
, чтобы вывести на экран список всех открытых портов в операционной системе.portqry.exe -local
Теперь, спускаясь по консоли вниз, вы будете видеть тип подключения, номер порта, его адрес (внешний и внутренний) и статус.
Вариант 5: Веб-интерфейс маршрутизатора
Оставшийся способ просмотра открытых портов на компьютере подразумевает вход в админ-панель роутера. Для этого необходимо знать логин и пароль, а по умолчанию они соответствуют тем, что указаны на корпусе устройства. Развернуто о том, как войти в меню маршрутизатора, рассказывается в другой статье на нашем сайте. При необходимости воспользуйтесь ссылкой ниже, чтобы ознакомиться с изложенной там информацией.
Подробнее: Как войти в веб-интерфейс роутера
Важно! В админ-панели маршрутизатора можно посмотреть только те порты, которые были заданы по умолчанию или созданы вручную пользователем. Так что посмотреть абсолютно все порты этим способом не получится. Также следует учитывать, что все дальнейшие действия будут выполняться на примере админ-панели роутера TP-Link, но в других моделях устройств все будет похожим.
- Перейдите в меню роутера, после чего проследуйте в раздел «Forwarding», воспользовавшись навигационной панелью в левой части интерфейса.
- В развернувшемся списке подразделов кликните по пункту «Port Triggering», чтобы перейти к списку открытых портов.
- В целевом меню размещен список всех портов маршрутизатора. В нем номер находится в столбце «Trigger Port», а в «Status» вы можете посмотреть его статус. Значение «Enabled» означает, что порт открыт, а «Disabled» — закрыт. Также вы можете менять этот статус вручную, нажав по соответствующей кнопке.
Наша группа в TelegramПолезные советы и помощь
В Windows при запуске сервисов может возникнуть конфликт портов, если нужный порт уже занят другим процессом. Например, IIS не запустится на порту 80, если он используется. В этой статье расскажем, как определить, какая программа прослушивает TCP или UDP порт, с помощью netstat, PowerShell, tasklist и как освободить порт.
Приобрести оригинальные ключи активации Windows 11 можно у нас в каталоге от 1690 ₽
Поиск программы по порту с помощью netstat
1. Выведите все прослушиваемые порты:
netstat -aon | find "LIST"
Параметры:
– -a: показывает все подключения и порты.
– -o: отображает PID процесса.
– -n: числовой формат адресов и портов.
2. Найдите процесс по конкретному порту (например, 80):
netstat -aon | findstr ":80" | findstr "LISTENING"
Пример вывода: порт 80 занят процессом с PID 16124.
3. Определите программу по PID:
tasklist /FI "PID eq 16124"
Вывод покажет имя исполняемого файла (например, tiny.exe).
4. Однострочная команда:
for /f "tokens=5" %a in ('netstat -aon ^| findstr :80') do tasklist /FI "PID eq %a"
Поиск программы с помощью PowerShell
1. Найдите процесс для TCP-порта:
Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess
2. Найдите процесс для UDP-порта:
Get-Process -Id (Get-NetUDPEndpoint -LocalPort 53).OwningProcess
3. Завершите процесс:
Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess | Stop-Process
4. Проверьте, свободен ли порт:
Test-NetConnection localhost -Port 80
Поиск пути к исполняемому файлу
1. Поиск файла по имени:
cd \
dir tiny.exe /s /p
2. Использование where:
where /R C:\ tiny
Пример: найдено c:\Temp\tinyweb\tinyweb-1-94\tiny.exe.
Устранение неполадок
Порт не отображается:
– Убедитесь, что процесс запущен (netstat -aon).
– Проверьте права администратора для PowerShell.
Конфликт портов:
– Завершите процесс (Stop-Process) или измените порт сервиса (например, в настройках IIS).
Файл не найден:
– Проверьте правильность имени файла в tasklist.
– Используйте where для поиска по всему диску.
Рекомендации
– Безопасность: Завершайте только известные процессы, чтобы не нарушить работу системы.
– Мониторинг: Используйте Resource Monitor (resmon) для визуального анализа сетевых подключений.
– Автоматизация: Создайте скрипт для проверки портов:
$port = 80
$process = Get-Process -Id (Get-NetTCPConnection -LocalPort $port -ErrorAction SilentlyContinue).OwningProcess
if ($process) { Write-Output "Port $port used by $($process.ProcessName) (PID: $($process.Id))" } else { Write-Output "Port $port is free" }
– Логи: Проверяйте Event Viewer (eventvwr) для анализа ошибок портов.
Определение программы, использующей порт в Windows, возможно через netstat, tasklist или PowerShell (Get-NetTCPConnection, Get-NetUDPEndpoint). Эти инструменты позволяют быстро найти процесс, завершить его или освободить порт. Использование PowerShell упрощает автоматизацию и предоставляет гибкость для анализа сетевых подключений.
Лицензионный ключ активации Windows от