Как определить программу, использующую тот или иной порт TCP/IP
П рограммы, способные соединяться с интернетом при подключении к сети используют так называемые порты — цифровые адреса сетевых устройств. Иногда при тонкой настройке программ или устройств возникает необходимость узнать, какое приложение занимает тот или иной порт, например с целью освободить его для другой программы. В Windows сделать это очень просто. Основных вариантов два: с помощью обычной командной строки и с помощью сторонних утилит.
В командной строке
Для отображения текущих соединений TCP/IP в Windows используется штатная консольная утилита netstat. Она может принимать более 10 параметров, но для того чтобы узнать какой порт занят каким процессом, вполне хватит трех: -a, -o и –n. Для начала необходимо получить список всех текущих соединений. От имени администратора откройте консоль CMD и выполните эту команду:
Данные будут выведены в пять колонок: имя, локальный адрес, внешний адрес, состояние и идентификатор процесса (PID). Отыщите нужный вам порт и посмотрите, с каким PID он связан. Теперь откройте Диспетчер задач, переключитесь на вкладку «Процессы» (в Windows 7) или «Подробности» (в Windows 8.1) и найдите в списке этот PID. А найдя его, вы идентифицируете и процесс.
Примечание: если в Диспетчере задач у вас не отображается ИД процесса, включите его через меню «Вид» -> «Выбрать столбцы».
В утилите CurPorts
Второй способ более прост, но для определения занимающего порт процесса вам понадобится сторонняя утилита CurPorts. Она бесплатна, проста и не требует установки.
Если её запустить, в окошко будут выведены не только порты и связанные с ним процессы и сервисы, но и пути к исполняемым файлам, их описания, версии, данные о разработчике и много другой полезной информации.
Как узнать, какие TCP/IP-порты используют приложения Windows
IP-адрес указывает на компьютер или другое сетевое устройство. Когда одно устройство отправляет трафик другому, IP-адрес используется для маршрутизации трафика в соответствующее место. Как только трафик достигнет нужного места, устройство должно знать, какое приложение или сервис отправляет трафик.
Если IP-адрес сродни почтовому адресу, порт является чем-то вроде имени человека по этому месту жительства, который получает почту. По большей части вам не нужно беспокоиться о портах. Но время от времени вы можете столкнуться с приложением, которое настроено на прослушивание трафика на том порту, который уже использует другое приложении. В этом случае вам нужно будет определить приложение, которое уже использует этот порт.
Существует несколько способов узнать, какое приложение блокирует порт, но мы собираемся пройти через пару встроенных способов, которые используют командную строку, а затем показать вам отличное бесплатное приложение, которое упростит работу, Все эти методы должны работать независимо от того, какую версию Windows вы используете.
Встроенные инструменты контроля портов
Мы предлагаем две команды, чтобы показать список. В первом списке отображаются активные порты вместе с именем процесса, который их использует. В большинстве случаев эта команда будет работать нормально. Иногда, однако, имя процесса не поможет вам определить, какое приложение или служба фактически использует порт. В таком случае вам нужно будет перечислить активные порты вместе со номерами идентификатора процессов, а затем просмотреть эти процессы в диспетчере задач.
Просмотр портов вместе с именами процессов
Во-первых, вам нужно открыть командную строку в режиме администратора. Нажмите «Поиск», а затем введите «командная» в поле поиска. Когда вы увидите «Командная строка» в результатах, щелкните его правой кнопкой мыши и выберите «Запуск от имени администратора».
В командной строке введите следующий текст и нажмите «Ввод»:
После того, как вы нажмете Enter , результаты могут занять минуту или две для полного отображения, поэтому будьте терпеливы. Прокрутите список, чтобы найти порт (который указан после двоеточия справа от локального IP-адреса), и вы увидите имя процесса, использующего этого порт.
Если вы хотите сделать это немного проще, вы также можете выгрузить результаты команды в текстовый файл. Затем вы можете просто найти номер порта в текстовом файле.
Здесь, например, вы можете видеть, что порт 62020 связан процессом Skype4Life.exe. Skype – это приложение для общения между пользователями, поэтому мы можем предположить, что этот порт фактически связан процессом, который регулярно проверяет наличие обновлений для приложения.
Просмотр портов вместе с идентификаторами процессов
Если имя процесса для номера порта, который вы просматриваете, затрудняет определение того, какому приложению он соответствует, вы можете попробовать версию команды, которая показывает идентификаторы процессов (PID), а не имена. Введите следующий текст в командной строке, а затем нажмите Enter :
В столбце справа справа перечислены PID, поэтому просто найдите тот, который связан с портом, который вы пытаетесь устранить.
Затем откройте диспетчер задач, щелкнув правой кнопкой мыши любое открытое пространство на панели задач и выбрав «Диспетчер задач».
Если вы используете Windows 8 или 10, перейдите на вкладку «Подробности» в диспетчере задач. В более старых версиях Windows вы увидите эту информацию на вкладке «Процессы». Отсортируйте список процессов по столбцу «ИД процесса» и найдите PID, связанный с портом, который вы исследуете. Возможно, вы сможете узнать больше о том, какое приложение или служба использует указанный порт, посмотрев столбец «Описание».
Если нет, щелкните процесс правой кнопкой мыши и выберите «Открыть расположение файла». Расположение файла, скорее всего, даст вам подсказку о том, какое приложение задействовано.
Использование NirSoft CurrPorts
Если вы не любите командную строку или предпочли бы использовать простую утилиту, чтобы сделать всё это за один шаг, мы рекомендуем отличный бесплатный CurrPorts. Загрузите инструмент. Только убедитесь, что вы получили правильную версию (обычная версия для 32-разрядной версии Windows, а версия x64 – для 64-разрядной Windows). Это портативное приложение, поэтому вам не нужно его устанавливать. Просто распакуйте папку загрузки и запустите исполняемый файл.
В окне CurrPorts отсортируйте по столбцу «Локальный порт», найдите порт, который вы исследуете, и вы можете увидеть всё: имя процесса, ID, порт, полный путь к процессу и т.д.
Чтобы сделать это ещё проще, дважды щелкните любой процесс, чтобы увидеть каждую деталь в одном окне.
Когда вы определите, какое приложение или служба связаны с порт, – Вы сможете решить, как его использовать. Если это приложение, то можно указать другой номер порта. Если это сервис или у вас нет возможности указать другой номер порта – вероятно, Вам придётся остановить службу или удалить приложение.
Как узнать, какая программа использует тот или иной порт в Windows 7
Существует много различных приложений, показывающих, какое приложение «слушает» тот или иной порт в настоящее время. Вы можете воспользоваться приложениями SysInternals Process Explorer, Sysinternals TCPView, Nirsoft CurrPorts, все они весьма замечательны, но в нужный момент их может просто не оказаться под рукой. Их отсутствие можно восполнить встроенными средствами операционной системы.
В состав Windows входит консольная утилита netstat. Запустив её с параметром /?, вы увидите, что предназначена она для отображения статистики и активных соединений протокола TCP/IP, а также полный перечень её опций:
Из этого перечня нас интересуют в первую очередь эти:
- -a – отображать все соединения и используемые порты.
- -o – отображать числовой идентификатор процесса, отвечающего за конкретное соединение (Process ID, или попросту PID).
Также хочу обратить ваше внимание на опцию –n, которая указывает утилите netstat отображать реальные айпи адреса и цифровые значения портов вместо из DNS-имен и общепринятых псевдонимов. В ряде случаев это может оказаться полезным.
Порядок действий
- Запустите netstat командой
[code]Netstat –ao[/code]
У меня вывод выглядит так: - Теперь найдем, к какому процессу относится, ну например, вот это соединение:
Proto Local Address Foreign Address State PID
TCP 192.168.1.100:49183 bos-m057a-sdr1:https ESTABLISHED 3104
Оно принадлежит процессу с идентификатором 3104, и выполняется к удаленному узлу с именем bos-m057a-sdr1 на 443 порт. Не покидая командной строки, вы можете быстро выяснить, что такое процесс 3104. Вот так:
[code]tasklist | find «3104»[/code]
Итак, это мессенджер Miranda-IM, а соединение выполнено с сервером ICQ.
Если вам претит tasklist, вы можете воспользоваться системным «Диспетчером задач«. Запустите его, нажав CTRL+SHIFT+ESC, перейдите на вкладку «Процессы». В меню «Вид» выберите пункт «Выбрать столбцы», и отметьте столбец PID:
Нужный процесс можно найти по значению этого столбца:
Я лично предпочитаю tasklist по той причине, что в диспетчере задач нет поиска.










