This blog shows how to find TCP ports used or reserved by applications on Windows. It is not related to specific SAP applications.
Problem:
An application cannot start, because the port it wants to use, is in use by another application (or components of the operating system).
How can we found out which application uses this port?
Example:
SAP Message Server executable cannot start, because the ports it wants to open is in use by another application.
The ports which should be used in this example are: 3600 and 3900.
Use netstat -anob to list all established and listening ports
The command “netstat -anob” shows all in-use ports and the binary (application) which use them.
Example:
In this example we see the process msg_server.exe which is listening on ports 3600 and 3900.
Another msg_server.exe which tries to bind these ports, must therefore fail.
Use netstat -anoq to list all bound ports (= reserved ports)
The command “netstat -anoq” additionally shows a list of all ports in “bound” state. Unfortunately, the option “b” for binary cannot be used in conjunction with the “q” parameter.
Example
To get a nicer list of bound ports, use this PowerShell command line:
Get-NetTCPConnection -State Bound | ForEach-Object {$p = (Get-Process -Id $_.OwningProcess);New-Object -TypeName psobject -Property @{ "LocalPort" = $_.LocalPort; "PID" = $p.Id; "ProcessName" = $p.Name; }} | Format-Table -AutoSize -Property PID, ProcessName, LocalPort
Example:
In this list we see SAP applications, but also Windows components like Cluster service (clussvc.exe), Cluster Resource Monitor (rhs.exe), Microsoft Management Console (MMC) and other applications.
A bound port can also be in established state (all SAP applications in above example have a related “established” entry.
Port 61493 is in use by Windows services host (svchost), but “netstat -ano” shows no related established port. In this case, the port is “reserved” by the OS for this application.
Summary:
Look for applications / processes which appear in the bound-list, but not in the established-list.
If you want to search for applications that use/reserve a specific port, netstat -ano is not sufficient. You need to look also for ports in “bound” state.
Links:
https://superuser.com/questions/557665/determining-what-process-has-bound-a-port-without-listening-on-windows
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/netstat
In another article, we explained computer ports and what they’re used for. Other than that, what can we do with port information? Since all traffic in and out of the computer goes through ports, we can check on them to see what they’re doing. Maybe the port isn’t listening for traffic? Maybe something is using a port that shouldn’t be?
We’re going to use the Windows command netstat to see our listening ports and PID (Process ID). We’re also going to see what we can do with that information.
What Is Netstat?
The netstat command is a combination of the words ‘network’ and ‘statistics’. The netstat command works in all versions of Windows from Windows XP right up to Windows 10. It’s also used in other operating systems (OS) like Unix and Linux, but we’ll stick to Windows here.
Netstat can provide us with:
- The name of the protocol the port is using (TCP or UDP).
- The local IP address and name of the computer and the port number being used.
- The IP address and port number to which we’re connecting.
- The state of a TCP connection. For details on what these states are, read the Event Processing section of RFC 793.
- Use the key combination Win Key + X. In the menu that opens, select Command Prompt.
- Enter the command <pre>netstat -a -n -o</pre>. The parameters for netstat are preceded with a hyphen, not a forward slash like many other commands. The -a tells it to show us all active connections and the ports on which the computer is listening.
The -n tells netstat to show the IP addresses and ports as numbers only. We’re telling it to not try to resolve the names. This makes for a quicker and neater display. The -o tells netstat to include the PID. We’ll use the PID later to find out what process is using a specific port.
- View the results and take note of the addresses, port numbers, state, and PID. Let’s say we want to know what’s using port 63240. Note that its PID is 8552 and it’s connecting to the IP address 172.217.12.138 on port 443.
What’s Using That Port?
- Open Task Manager. That’s most easily done by using the key combination Ctrl + Shift + Esc.
- Click on the Details tab. To make this easier to find, click on the PID column header to sort the PIDs numerically.
- Scroll down to PID 8552 and see what process it is. In this case, it’s googledrivesync.exe. But is it really? Sometimes viruses can make themselves look like legitimate processes.
- In a web browser, go to ipinfo.io. Enter the IP address 172.217.12.138. As we can see, the IP address is registered to Google. So this googledrivesync.exe is a legitimate one.
How To Get Port, PID, & Process Name In PowerShell
PowerShell is Microsoft’s newer way to use a command-line interface with Windows. We say newer, but it’s been around for several versions. You should learn PowerShell even if you’re a home user.
Most Windows commands also work in PowerShell, plus we can combine them with PowerShell’s cmdlets – pronounced command-lets. Joe at Winteltools.com provides the script for this method.
- Open Notepad and enter the following code:
$netstat = netstat -aon | Select-String -pattern "(TCP|UDP)" $processList = Get-Process foreach ($result in $netstat) { $splitArray = $result -split " " $procID = $splitArray[$splitArray.length – 1] $processName = $processList | Where-Object {$_.id -eq $procID} | select processname $splitArray[$splitArray.length – 1] = $procID + " " + $processName.processname $splitArray -join " " }
- Save the file as get-NetstatProcessName.ps1. Make sure to note where it’s being saved. It’s important to change the Save as type: to All Files (*.*) or it will get saved as get-NetstatProcessName.ps1.txt and it won’t work for us.
- Open PowerShell and navigate to the location in which the script was saved. In this case, it’s <pre>cd C:\Scripts</pre>. Hit Enter to run the command.
- Run the script using dot-sourcing to make it work. That means use ./ before the name of the file. The command will be <pre>./get-NetstatProcessName.ps1</pre>
- Now we can see all the traditional netstat info plus the process name. No need to open Task Manager anymore.
Go Get Them
We’ve covered two ways to use the netstat command to see listening ports. It can be used either in the old Command Prompt or within a PowerShell script. With the information it can give us, we’ve looked at how it can help us figure out what our computer is doing.
If you thought netstat is a great utility, take a look at some other Windows TCP/IP utilities like tracert, ipconfig, and nslookup. Or use Resource Monitor to get a better look into hidden website and Internet connections. There is a lot you can do to see exactly what your computer is doing.
Have you used netstat to solve a problem? Please tell us what you did. Any questions about how to use netstat? Please ask us in the comments below.
I have trouble identifying the application using port 25 on my Windows-10 system. Any useful hints to list used ports and using applications without 3rd party applications ?
asked Jan 12, 2016 at 14:49
0
Without the use of any external software. Open a command prompt:
netstat -abn
OR
netstat -a -n -p tcp -o
Within Task Manager -> Processes/Details Tab
You can match the PID against the result of the second netstat command above, you can then find the image name/end the process etc if required.
There’s also plenty of third party applications that can simplify the process and make the information easier to read, simple Google search if you want to find them.
answered Jan 12, 2016 at 14:57
Samuel NicholsonSamuel Nicholson
1,5442 gold badges13 silver badges26 bronze badges
0
A GUI solution would be to use the Resource Monitor
of Windows. You can start it by pressing START
and entering this command: Perfmon /Res
Then you can click on the Network
tab to view all network connections, listening ports, etc.
Here is a screenshot of what it looks like:
answered Jan 12, 2016 at 15:05
masgomasgo
2,1841 gold badge16 silver badges32 bronze badges
0
Open a command shell and run
netstat -a -n -p tcp -o
No need to run as administrator.
The last column is the PID. You can look up this PID in the task manager. Be sure to activate «show processes of all users» there.
See the documentation for netstat.
answered Jan 12, 2016 at 14:58
The post requests responses without third party apps, however, others reading this may be more inclined toward a GUI.
For those looking for an application, TCPView seems to work best.
It is microsoft recommended and has a clear and easy to use GUI.
https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview
answered Mar 7 at 10:15
GuntyGunty
1116 bronze badges
1
All of you were way behind. A far easier method (was, & still is in 2023) is first to open the Command Prompt.
(can do this by holding the windows logo key on your keybard+Cut&Paste, or just type in these 3 letters> cmd.
So, Winlogo+cmd)
Than type in or Copy(Ctrl+C), & Paste(Ctrl+V)
*To terminate running process:
cmd>TASKLIST
[choose the task you want to terminate,than:]
cmd>taskkill /IM [program name ie:]mswebview2.exe /F
*Typing help in cmd gives options after running something
too. Sometimes, it may even provide an example,
that’s how the above EASY method was obtained-
after very minimal tial & error.
So the very easy way after the tidbits above:
-
windowslogo+cmd
-
TASKLIST
-
taskkill /IM [program name ie:]mswebview2.exe /F
EASY METHOD + no «3rd.party» software .)
answered Apr 8 at 13:44
1
Old now, but I use this powershell (saved as simplens.ps1
):
$procs = Get-Process
$ports = netstat -ano
$ports[4..$ports.length] |
# First column comes back empty, so we set to "ProcessName" as a placeholder for later
ConvertFrom-String -PropertyNames ProcessName,Proto,Local,Remote,State,PID |
where State -eq 'LISTENING' |
foreach {
$_.ProcessName = ($procs | where ID -eq $_.PID).ProcessName
$_
} |
Format-Table
answered Sep 11 at 21:24
Joel CoehoornJoel Coehoorn
28.1k15 gold badges88 silver badges133 bronze badges
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.
At any one time, there’s a whole bunch of information being sent between your Windows 10 PC and the endless void of the Internet. This is done using a process whereby network-dependent processes seek out TCP and UDP ports, which they use to communicate with the Internet. First, your data gets sent to remote ports at the destination or website your processes are trying to connect to, then it gets received at local ports back on your PC.
Most of the time, Windows 10 knows how to manage ports and ensure that traffic is being directed through the right ports so that those processes can connect with what they need to. But sometimes two processes may be assigned to one port, or maybe you just want to get a better picture of your network traffic and what’s going in and out.
That’s why wrote this guide that shows you how to check open ports on Windows and see which applications are using which ports.
Also read: How to Set Up Port Forwarding in Windows
Check Port Usage With Nirsoft CurrPorts
NirSoft is one of the best indie software developers, giving us great utilities, like PassView and WirelessKeyView. While some people will prefer checking their ports without installing third-party software (in which case, scroll down to the CMD method), CurrPorts is easily the fastest and most convenient way to check port status on Windows.
Once you’ve installed CurrPorts, just open it to see a list of all your ports currently in use. If you’re looking for local ports in use, just click the «Local Port» column at the top to order the list by port number (handy if you’re looking for a specific one). You can do the same thing with remote ports, too.
If you want to really find specific ports, click the «Advanced Filters» icon at the top and enter your string in the format they suggest. It should look something like the below image.
Hit OK when you’re ready, and the list will filter down to your queries.
Also read: How to Open Ports and Set Up Port Forwarding on Your Router
List Open Ports Using the Command Prompt
The integrated — though not necessarily the simplest — way to check open ports is to use the trusty command prompt.
Click the Start button, type cmd
, then right-click «Command Prompt» when it shows up in the search results. Click «Run as administrator.»
Once you’re in the elevated command prompt, enter the following command:
This will steadily bring up a list of open ports that is probably quite long, along with the Windows processes that are using them. (You can press Ctrl + A , then Ctrl + C to copy all information to the clipboard.) On the average PC, there will be two main local IP addresses that contain ports on your PC.
The first, in our case, is «127.0.0.1.» This IP address is otherwise known as «localhost» or a «loopback address,» and any process listening to ports here is communicating internally on your local network without using any network interface. The actual port is the number you see after the colon. (See image below.)
The bulk of your processes will probably be listening to ports prefixed with «192.168.xxx.xxx,» which is your IP address. This means the processes you see listed here are listening for communications from remote Internet locations (such as websites). Again, the port number is the number after the colon.
Also read: How to Disable USB Ports in Windows 10
Install TCPView to Check Open Ports
If you don’t mind installing a third-party app and want to have more control over what’s going on with all your ports, you can use a lightweight app called TCPView. This immediately brings up a list of processes and their associated ports.
What make this better than the command prompt is that you can actively see the ports opening, closing and sending packets. Just look for the green, red and yellow highlights. You can also reorder the list by clicking the column headings, making it easier to find the process you want or two separate processes vying for the same port.
If you do find a process or connection you want to close, just right-click that process. You can then select «End process,» which is exactly the same function as the one in Windows task manager. Or you can click «Close Connection» to leave the process open but stop it from listening on a given port.
If you’re having some trouble in Windows 10, then see whether a Windows update may be causing it. We also have a handy guide for managing the health of your hard drive in Windows 10.
Tech writer at Make Tech Easier. Enjoys Android, Windows, and tinkering with retro console emulation to breaking point.
Subscribe to our newsletter!
Our latest tutorials delivered straight to your inbox
Содержание
- Используем команду netstat для просмотра открытых портов
- Отображение всех подключений и ожидающих портов
- Постраничное отображение открытых портов
- Запись результатов в текстовый файл
- Поиск по содержимому
- Вопросы и ответы
Netstat — одна из встроенных команд операционной системы Windows. В ее функциональность входит отображение состояния сети со всеми требуемыми деталями. Пользователь задействует встроенный синтаксис, чтобы отфильтровать результаты или задать дополнительные действия для этой утилиты. В рамках сегодняшнего материала мы бы хотели рассказать о доступных методах просмотра открытых портов с помощью этого стандартного инструмента.
Портами называют натуральные числа, которые записываются в заголовках протоколов передачи данных (TCP, UDP и так далее). Они определяют процесс получения и передачи информации в рамках одного хоста и в большинстве случаев используются онлайн-программами для установки соединения. Просмотр открытых портов может понадобиться в случае определения работоспособности приложений или при стандартном мониторинге сети. Лучше всего с этим справится команда netstat, а ее активация доступна с применением разных аргументов.
Отображение всех подключений и ожидающих портов
Самый простой аргумент, применяемый к утилите netstat, имеет обозначение -a, и отвечает за вывод сведений обо всех активных подключениях их портов, которые ожидают соединения. Такая информация доступна к просмотру без применения прав администратора и выводится на экран следующим образом:
- Поскольку рассматриваемая команда является консольной, потребуется запустить приложение, чтобы ее выполнить. Откройте меню «Пуск», найдите там «Командную строку» и запустите ее. О других методах перехода в консоль читайте в другом нашем материале по следующей ссылке.
- В поле ввода напечатайте
netstat -a
, а затем нажмите на клавишу Enter. - На экране тут же начнет появляться список с доступными адресами.
Подробнее: Открытие командной строки в Windows 10
Мониторинг производится в режиме реального времени, поэтому не все результаты будут доступны к просмотру сразу. Придется подождать немного времени, чтобы все они могли прогрузиться. Во время этого не закрывайте консоль, если не хотите прервать процесс, ведь при повторном запуске команды все начнется заново.
Постраничное отображение открытых портов
К сожалению, приведенный выше вариант отображает не все необходимые данные об открытых портах, поскольку выводит он только те параметры, которые на текущий момент находятся в состоянии LISTENING. К тому же там не указывались уникальные идентификаторы процессов (PID), что тоже играет важную роль во время определенного мониторинга. Потому советуем обратить внимание немного на другие аргументы.
- В консоли пропишите
netstat -aon | more
и нажмите на Enter. - Здесь сразу же появится вся важная информация о портах, которые находятся в разных состояниях. В пятой колонке обозначаются идентификаторы.
- Не все порты выводятся сразу, поэтому нужно жать на Enter, чтобы каждый раз отображать еще по одной строке.
- Если вы увидите поле ввода, значит все страницы были успешно выведены на экран.
Теперь хотелось бы поговорить про используемые аргументы и значение увиденных параметров. Давайте сначала затронем знакомые буквы синтаксиса:
Аргумент | Описание |
---|---|
-a | Отображает сведения обо всех подключениях |
-o | Отвечает за включение колонки с идентификатором каждого адреса |
-n | Переводит адреса портов и их номера в числовой формат |
more | Постраничный вывод элементов |
Важно также уточнить и состояние портов, поскольку они могут являться открытыми, но на этот момент не использоваться или ожидать своего подключения. В колонке «Состояние» могут отображаться такие показатели:
Показатель | Описание |
---|---|
CLOSE_WAIT | Подключение ожидает своего закрытия |
CLOSED | Подключение было успешно закрыто |
ESTABLISHED | Активная работа соединения |
LISTENING | Ожидается соединение или еще говорят: «Слушается порт» |
TIME_WAIT | Время ответа было превышено |
Эти объяснения должны разобраться помочь не только с составлением запросов для netstat, но и без проблем разобраться с полученной информацией.
Запись результатов в текстовый файл
Иногда требуется сохранить готовые результаты мониторинга в текстовый файл, чтобы выполнить дальнейшие действия, ведь копировать информацию прямо из консоли не всегда удобно, да и займет это намного больше времени, нежели просто указать дополнительный аргумент при вводе команды.
- Напишите, например,
netstat -aon | more
илиnetstat - a
, а затем добавьте> netstat.txt
, что означает запись результатов в указанный файл (он будет создан в пользовательской папке). После ввода нажмите на Enter. - Запустите файл, введя его название и формат в консоли.
- Теперь вы можете управлять содержимым и сохранить его в любом другом удобном месте.
Поиск по содержимому
В случае необходимости отображения только подключений с определенными параметрами или адресами лучше всего использовать дополнительную команду find, которая перед выводом сведений произведет фильтрацию данных, и это освободит вас от надобности вручную искать каждый соответствующий пункт. Тогда полная консольная команда приобретает следующий вид:
- Введите
netstat -a | find /I "LISTENING"
, что задаст параметр отображения только портов с состоянием LISTENING, аргумент /I при этом используется для отмены учета регистра символов. - В результатах отобразится только подходящая информация.
Выше вы узнали о методах определения открытых портов через встроенную команду netstat. После этого можете приступить к работе с программами или пробросу других портов в случае необходимости. К слову, этой теме посвящен отдельный материал на нашем сайте. Перейдите по указанным ниже ссылкам, чтобы ознакомиться с подробными инструкциями.
Читайте также:
Открываем порты на роутере
Открываем порты в брандмауэре Windows 10
Команда netstat всегда показывает правильные результаты, однако если хотите убедиться в открытости порта другим путем, рекомендуем задействовать специальные онлайн-сервисы, позволяющие справиться с поставленной задачей.
Читайте также: Сканирование портов онлайн