Кто слушает порт
Перейти к содержимому

Кто слушает порт

Какая программа слушает определенный порт в Windows?

date

26.10.2022

user

itpro

directory

Windows 10, Windows Server 2019

comments

комментария 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.

netstat найти программу, которая заняла порт

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

tasklist /FI «PID eq 16124»

tasklist - найти процесс, который слушает порт в windows

Можно заменить все указанные выше команды одной:

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

powershell найти процесс, который слушает TCP порт

См. статью про просмотр сетевых подключений в 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

команда позволяет найти путь к exe файу в windows

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

Утилита TCPView показывает процессы и открытые ими порты

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Читайте далее в разделе Windows 10 Windows Server 2019

page

page

page

Установка и настройка OpenVPN сервера под Windows

Как сбросить пароль локального администратора в Windows?

Настройка двухфакторной аутентификации (2FA) в Windows с помощью MultiOTP

Установка KMS сервера vlmcsd на Linux для активации Windows и Office

Какой процесс слушает порт в Linux?

date

17.05.2023

user

itpro

directory

Linux

comments

Комментариев пока нет

В этой статье мы рассмотрим, как найти процесс, который слушает определенный порт в Linux.

Можно получить информацию о процесс, который слушает определенный порт командой:

$ sudo lsof -i :8000

В этом примере видно, что порт 8000 занят процессом python3.

lsof - найти процесс, который занял порт в linux

Можно вывести список всех запущенных процессов Linux, который используют любые TCP/UDP порты:

$ sudo netstat -lntup| grep LISTEN

Мы используем следующие ключи:

  • -l – показать тольо прослушиваемые порты
  • -n – показать IP адреса и номера портов в числовом виде и не пытаться их резолвить (соответствие номеров портов и название служб содержится в файле /etc/services)
  • -t – показать открытые TCP порты
  • -u – показать UDP порты
  • -p – показать название процесс, который прослушивает порт

netstat -lntup- список открытых сокетов в linux

Мы нашли PID процесса ( 72005 ), который использует порт и теперь можно вывести информацию о том, как он запущен:

$ ps -aux | grep 72005

найти команду, которая запустила процесс

В этом примере видно, что процесс запущен вручную пользователем root с помощью команды python3 -m http.server (используется для запуска простого HTTP сервера на python для публикации текущего каталога).

Чтобы быстро завершить процесс, который слушает нужный вам порт и освободить его, выполните:

$ sudo kill -9 72005

Проверьте, что порт теперь свободен:

$ sudo lsof -i :8000

Ранее мы показывали, как найти программу, которую слушает определенный порт в Windows.

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Читайте далее в разделе Linux

page

page

page

Установка и настройка прокси сервера Squid в Linux

Управление конфигурацией Windows через Ansible

Мониторинг срока регистрации (освобождения) домена в Zabbix

Настройка Wi-Fi точки доступа на Linux

Что значит, когда приложение «слушает» порт?

Означает, что приложение прослушивает определенный порт на наличие подключений к нему.
То есть программа готова анализировать передаваемые на порт команды и либо их выполнять, либо сообщать о несоответствии команд определенным правилам (протоколу) . К примеру HTTP сервер прослушивает 80 порт. Как только ваш браузер (хотя, на самом деле, это делает операционная система вместе с сетевой картой и ее драйверами) устанавливает соединение с 80 портом сервера ему передаются команды, которые тот выполняет и возвращает, к примеру, html страницу или файл.

В протоколах TCP и UDP (семейства TCP/IP) порт — идентифицируемый номером системный ресурс, выделяемый приложению, выполняемому на некотором сетевом хосте, для связи с приложениями, выполняемыми на других сетевых хостах (в том числе c другими приложениями на этом же хосте) .
Для каждого из протоколов TCP и UDP стандарт определяет возможность одновременного выделения на хосте до 65536 уникальных портов, идентифицирующихся номерами от 0 до 65535. При передаче по сети номер порта в заголовке пакета используется (вместе с IP-адресом хоста) для адресации конкретного приложения (и конкретного, принадлежащего ему, сетевого соединения) .
В обычной клиент-серверной модели приложение либо ожидает входящих данных (или запроса на соединение; «слушает порт» ; роль сервера) , либо посылает данные (или запрос на соединение) на известный порт, открытый приложением-сервером (роль клиента) .
По умолчанию приложению выдается порт с произвольным (например, ближайшим свободным, большим 1024) номером. При необходимости приложение может запросить конкретный (предопределённый) номер порта. Так, веб-серверы обычно открывают для ожидания соединения предопределённый порт 80 протокола TCP.

ps: если на пальцах, то IP адрес — это общий номер телефона, а порт — добавочный к нему номер. .
то есть по IP вы попадаете на машину-сервер (скажем, организация в городе, если по телефону) , а по порту обращаетесь к какой то конкретной службе (конкретному человеку) . А то, что приложение «слушает» — означает, что у нужного вам человека есть отдельный дополнительный номер и он «сидит» возле него :)) вы ему позвонили, он поднял трубку и сказал «Алло», вы в ответ что то еще. Вот так и установилось соединение и пошел обмен информацией.

Что значит, когда приложение «слушает» порт?
А это значит возьмем два продвинутых сервера (не железяка) а файловых (программных)

nginx и apache так вот если их использовать по отдельность то они будут слушать порт-80

но так как они братаны их ставят вместе на одну железяку (сервер только железный ) не файловый (программа «nginx apache» — ‘это программы но тоже серваки)

то на frontend ставится nginx и он слушает 80-порт от клиента (браузера) а уже apache на Backende слушает ( 8080-й) или другой и принимает запросы только те которые ему передает nginx.

когда они спарены (nginx и apache) то nginx(Сидит на 80-м) порту и слушает клиента (браузера)))
nginx смотрит если к ним валят запросы 50/50(к примеру) половина статика а половина динамика, то nginx
на себя берет статику (тут как настроите) — а apache отдает динамику и сервера работают в 100 и в 1000 раз быстрее
но это другой вопрос.

но вдвоем на одной железяке они не будут работать на одном порту
(будут если одного из них выключить).

Ещё проще представь что на работе и у тебя 80-е окно принимаешь исповедь ахаха.
от люде, сидишь к тебе приходят люди исповедуются а ты как frontend(nginx) принимаешь (запросы)

и если простая исповедь ты там что то проварнякаешь и человек уйдет с облегчением на душе.

ноооо приходит чел и начинает исповедоваться что он что то сотворил и тут ты понимаешь что это не (статика) а динамика и передаешь это apache(м**там) и возвращаешь клиенту ответ))).

Как узнать, какой процесс использует тот или иной порт

Иногда полезно знать, какой процесс занял тот или иной порт, например, порт 80. В этой статье будет рассказано, как это сделать в Linux.

Решить поставленную задачу можно с помощью одной из команд — netstat, fuser и lsof. Также можно использовать псевдофайловую систему /proc (однако это менее удобный способ и мы его рассматривать не будем). Далее будут показаны примеры использования этих команд.

Использование netstat

Представим, что нам нужно найти процесс, использующий порт 80. Попробуем сделать это с помощью netstat.

1.png

Определяем процесс, использующий порт 80 с помощью netstat

В данном случае видно, что порт 80 используется процессом apache2. 11681 — это PID процесса. Получить дополнительную информацию о процессе можно командами:

2.png

Информация о процессе

Можно также ввести команду ps -ax | grep apache2 для того, чтобы узнать, какие процессы с именем apache2 еще запущены.

3.png

Список процессов apache2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *