Что такое компьютерные порты? По принципу работы компьютерные порты сравнимы с реальными портами, теми самыми, которые есть в большинстве городе с водно-транспортной инфраструктурой. Компьютер с этой точки зрения можно сравнить с городом со множеством портов, а программное обеспечение — с кораблями или грузом (иногда опасным). Разница между водными и компьютерными портами, кроме непосредственно самого назначения, заключается также в том, что корабли, если позволяют их размеры, могут входить в разные порты, а программы — только подключаться к портам, и только к определенным.
Например, браузеры, как правило, всегда используют порт под 80-м номером, тогда как почтовые клиенты могут подключаться к одновременно двум портам, 25-му — для отправки писем, 110-му — для получения.
Вы можете самостоятельно проверить, какой порт занят, и какой программой. Это несложно. В Windows для этого можно использовать специализированное ПО наподобие TCPView или встроенные средства системы — всемогущую командную строку. В последнем случае нужно запустить консоль с администраторскими правами и ввести в окно следующую команду:
Как Проверить Открытые Порты Windows и кто их секретно использует
При этом отобразится общее описание команды и перечень доступных параметров. Так, использование команды netstat, дополненной ключом -a, откроет список с названиями всех подключений, ключ -o предоставит доступ к идентификатору каждого процесса, ключ –b выведет исполняемый файл, задействованный в организации подключения, в чем, собственно, и заключается наша задача. Также для просмотра номеров портов и адресов можно вводить netstat –N. Ключи можно сочетать, если нужно узнать больше подробностей о порте.
Например, чтобы посмотреть список активных подключений, источник, локальный и внешний адреса, идентификатор и состояние, нужно вводить netstat –a –n –o. Чтобы узнать, какому файлу, принадлежит, например ID 2248, нужно просто расширить вводимую команду, добавив ключ –b. Как вариант, можно также использовать другую команду:
tasklist | find «2248»
Вот и все. Теперь вы знаете, как узнать, какое приложение в Windows какой порт использует.
Использует программа (или какая программа использует порты ), обычно возникает в случае подозрения на заражение компьютера троянской программой. Если вы заметили что-то подозрительное, откройте командную строку: «Пуск» – «Все программы» – «Стандартные» – «Командная строка».
Введите в командной строке команду tasklist и нажмите Enter. Вы получите данные обо всех запущенных в системе процессах. Обратите внимание на PID – идентификатор процесса. Он поможет определить, какая программа использует тот или иной порт.
Наберите в командной строке команду netstat –aon и нажмите Enter. Вы увидите список текущих подключений. В графе «Локальный адрес» в конце каждой строки указан номер порта. В графе PID указаны идентификаторы процессов. Посмотрев номер порта и соответствующий ему PID, перейдите к списку процессов и по номеру идентификатора определите, какой процесс использует этот порт.
Как открыть, закрыть порты 🌐, узнать какие порты открыты на Пк с Windows 10, 8, 7 или роутере в 2021
Если вы не можете по названию процесса понять, какой программе он принадлежит, воспользуйтесь одной из подходящих в данном случае программ. Например, программой Everest, она же Aida64. Запустите программу, откройте вкладку «Операционная система», выберите «Процессы». В списке процессов найдите нужный вам и посмотрите строку его запуска. Это поможет определить, какой программе принадлежит процесс.
Используйте для той же цели программу AnVir Task Manager. Она позволяет отслеживать все подозрительные процессы, в том числе процессы программ, соединяющихся с интернетом. Все подозрительные процессы выделяются в списке программы красным цветом.
Если вы видите, что порт используется неизвестной вам программой, то при наличии текущего соединения в графе «Внешний адрес» (команда netstat –aon) вы увидите ip-адрес компьютера, с которым установлено соединение. В графе «Состояние» будет стоять значение ESTABLISHED – если соединение присутствует на текущий момент; CLOSE_WAIT, если соединение закрыто; LISTENING, если программа ждет соединения. Последнее характерно для бэкдоров — одной из разновидностей троянских программ.
Программный порт – это условное число от 1до до 65535, которое показывает, какому приложению адресован пакет данных. Порт, который работает с программой, называется открытым. Надо иметь в виду, что в текущий момент любой порт может работать только с одной программой.
Компьютерные порты по принципу своей работы очень похожи на порты обыкновенные, те самые, которые можно встреть в любом городе с развитой водной транспортной инфраструктурой.
Недаром эти два слова являются омонимами.
С этой точки зрения компьютер представляется ничем иным как городом, а еще лучше страной с множеством портов, а программы, имеющие доступ в Интернет – судами с полезным или опасным грузом (тут уж всякое бывает).
Портом компьютерным и портом как местом на берегу моря помимо явного назначения еще в том заключается, что суда, если их размеры тому позволяют, могут в разные порты входить, а вот программы только к определенным портам подключаться.
Многие браузеры, к примеру, используют порт под номером 80, в то время как могут использовать два порта, а именно номер 25 для отправки почты и номер 110 для приема.
Так вот, иногда у пользователей возникает необходимость узнать, какой порт использует какая программа. А узнать это весьма просто. Для этих целей можно воспользоваться специальными утилитами типа TCPView либо же самой обыкновенной командной строкой. Запустите консоль от имени администратора и выполните вот такую команду:
netstat /?
При этом откроется краткое описание команды и список доступных параметров. Например, использование netstat с ключом –а выведет список всех подключений и портов прослушивания, ключ –o откроет доступ к ID каждого процесса, а ключ –b покажет исполняемый файл, участвующий в создании подключения, что собственно нами и нужно. Для просмотра адресов и номеров портов также можно использовать ключ –N .
Итак, выполняем команду netstat –a –n –o и смотрим, что получилось. Мы получили список активных подключений с указанием протокола, локального и внешнего адресов, состояния и идентификатора. Как узнать, к примеру, какому файлу принадлежит ID 2248? Можно расширить команду добавим в нее ключ –b или тут же выполнить другую команду tasklist | find «2248» . Вот все так просто.
Определить, какое приложение занимает (слушает) тот или иной порт, требуется не часто. Обычно необходимость диктуют ошибки в устанавливаемых приложениях. Чаще всего это Skype, VMWare, и сборки веб-разработчиков, например XAMPP или OpenServer.
Для поиска занимающих порты приложений можно воспользоваться приложениями, например SysInternals Process Explorer, Sysinternals TCPView, Nirsoft CurrPorts. Однако, в нужный момент их может просто не оказаться под рукой и здесь нам на помошь придут интегрированные компоненты Windows.
В состав Windows входит консольная утилита netstat. Запустив её с параметром /?, вы увидите, что предназначена она для отображения статистики и активных соединений протокола TCP/IP, а также полный перечень её опций: Из этого перечня нас интересуют в первую очередь эти:
- -a — отображать все соединения и используемые порты.
- -o — отображать числовой идентификатор процесса, отвечающего за конкретное соединение (Process ID, или попросту PID).
- -n — указывает утилите netstat отображать реальные айпи адреса и цифровые значения портов вместо из DNS-имен и общепринятых псевдонимов. В ряде случаев это может оказаться полезным.
Запустим netstat командой
У меня вывод выглядит так:
В выведенном списке ищем строку, в которой упоминается об использовании на нашем компьютере 127.0.0.1 порта с номером 5037. Это 11 сверху строка. В последней колонке видим, что порт использует приложение с Отлично, найдем, кто же это!
Не покидая командной строки, вы можете быстро выяснить, что такое процесс 8768.
tasklist | find «8768»
Как гласят результаты вывода данных команды, наш виновник это
adb.exe 8768 Console 3 8 336 КБ
Собственно, задача рашена. Приложение надо или завершить или сбить. Для этого нам понадобится диспетчер задач Windows, им пользоваться умеют все.
Кстати, «Диспетчер задач» тоже поможет определить приложение по номеру его процесса. Запустите Менеджер задач, нажав CTRL+SHIFT+ESC, перейдите на вкладку «Процессы». В меню «Вид» выберите пункт «Выбрать столбцы», и отметьте столбец PID: Нужный процесс можно найти по значению этого столбца.
От имени администратора в командной строке набери команду:
Поскольку список может быть довольно большой, то лучше вывести всё это дело в какой-нибудь файл. Например, так:
Netstat -ab > ports.txt
В файле искать будет проще.
Подробное объяснение
Да вообще программ для подобных целей полно, любой брандмауер/фаервол может это отобразить. Ну если необходимо решить задачу именно стандартными средствами ОС Windows, то можно воспользоваться консольной программой netstat.
Удобно использовать с ключом -b (netstatn -b), таким образом будет выведен список не только открытых портов, но и приложений, которые эти порты используют, а так же будут указаны активные подключения, сетевые адреса (внутренние и внешние) с сетевыми портами, идентификаторы процессов использовавших конкретный порт (PID) и их названия.
А вообще советую почитать справку по этой утилите, набрав в консоле (она же cmd) команду netstat /? Там много полезной информации написано, в том числе и по ключам, с помощью которых можно детализировать списки вывода информации не только по сетевым портам.
Отображение статистики протокола и текущих сетевых подключений TCP/IP.
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p протокол] [-r] [-s] [-v] [интервал]
A Отображение всех подключений и ожидающих портов.
-b Отображение исполняемого файла, участвующего в создании каждого подключения, или ожидающего порта. Иногда известные исполняемые файлы содержат множественные независимые компоненты. Тогда отображается последовательность компонентов, участвующих в создании подключения, либо ожидающий порт. В этом случае имя исполняемого файла находится снизу в скобках , сверху — компонент, который им вызывается, и так до тех пор, пока не достигается TCP/IP. Заметьте, что такой подход может занять много времени и требует достаточных разрешений.
-e Отображение статистики Ethernet. Он может применяться вместе
с параметром -s.
-n Отображение адресов и номеров портов в числовом формате.
-o Отображение кода (ID) процесса каждого подключения.
-p протокол Отображение подключений для протокола, задаваемых этим
параметром. Допустимые значения: TCP, UDP, TCPv6 или UDPv6.
Используется вместе с параметром -s для отображения статистики
по протоколам. Допустимые значения: IP, IPv6, ICMP, ICMPv6,
TCP, TCPv6, UDP или UDPv6
-r Отображение содержимого таблицы маршрутов.
-s Отображение статистических данных по протоколам. По умолчанию
данные отображаются для IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP
и UDPv6. Параметр -p позволяет указать подмножество выводящихся
данных.
-v При использовании с параметром -b, отображает последовательность компонентов, участвующих в создании подключения, или ожидающий порт для всех исполняемых файлов.
интервал Повторный вывод статистических данных через указанный
промежуток времени в секундах. Для прекращения вывода данных
нажмите клавиши CTRL+C. Если параметр не задан, сведения о
текущей конфигурации выводятся один раз.
Если есть всё же есть возможность, то лучше воспользоваться сторонними программами ибо так удобнее. Например утилита Tcpview Марка Руссиновича покажет детальную информацию о сетевых портах, при этом в режиме реального времени будет ещё и мониторить всё это.
Источник: phocs.ru
Как узнать, какие TCP/IP-порты используют приложения Windows
IP-адрес указывает на компьютер или другое сетевое устройство. Когда одно устройство отправляет трафик другому, IP-адрес используется для маршрутизации трафика в соответствующее место. Как только трафик достигнет нужного места, устройство должно знать, какое приложение или сервис отправляет трафик.
Если IP-адрес сродни почтовому адресу, порт является чем-то вроде имени человека по этому месту жительства, который получает почту. По большей части вам не нужно беспокоиться о портах. Но время от времени вы можете столкнуться с приложением, которое настроено на прослушивание трафика на том порту, который уже использует другое приложении. В этом случае вам нужно будет определить приложение, которое уже использует этот порт.
Существует несколько способов узнать, какое приложение блокирует порт, но мы собираемся пройти через пару встроенных способов, которые используют командную строку, а затем показать вам отличное бесплатное приложение, которое упростит работу, Все эти методы должны работать независимо от того, какую версию Windows вы используете.
Встроенные инструменты контроля портов
Узнать порт используемый программой
При устранении неполадок сетевого подключения или проблем, связанных с конкретным приложением, в первую очередь следует проверить, какие порты фактически используются в вашей системе, а какое приложение прослушивает определенный порт.
В этой статье объясняется, как узнать, какие услуги прослушивает порты с помощью команд netstat, ss и lsof. Инструкции применимы для всех операционных систем на основе Linux и Unix, таких как macOS.
Что такое порт прослушивания
Сетевой порт идентифицируется его номером, соответствующим IP-адресом и типом протокола связи, таким как TCP или UDP.
Порт прослушивания – это сетевой порт, который прослушивает приложение или процесс, выступая в качестве конечной точки связи.
Каждый порт прослушивания может быть открыт или закрыт (отфильтрован) с помощью брандмауэра. В общих чертах, открытый порт – это сетевой порт, который принимает входящие пакеты из удаленных мест.
Вы не можете иметь две службы, прослушивающие один и тот же порт на одном и том же IP-адресе.
Например, если вы используете веб-сервер Apache, который прослушивает порты 80 и 443 и вы пытаетесь установить Nginx, позднее не удастся запустить, потому что порты HTTP и HTTPS уже используются.
Проверьте порты прослушивания с netstat
netstat это инструмент командной строки, который может предоставить информацию о сетевых подключениях
Чтобы получить список всех прослушиваемых портов TCP или UDP, включая службы, использующие порты и состояние сокета, используйте следующую команду:
sudo netstat -tunlp
Параметры, используемые в этой команде, имеют следующее значение:
- -t – Показать порты TCP.
- -u – Показать порты UDP.
- -n – Показать числовые адреса вместо разрешения хостов.
- -l – Показывать только порты прослушивания.
- -p – Показать PID и имя процесса слушателя. Эта информация отображается, только если вы запускаете команду от имени пользователя root или sudo.
Вывод будет выглядеть примерно так:
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1214/nginx.conf tcp6 0 0 . 21 . * LISTEN 1222/proftpd: (acce tcp6 0 0 . 53 . * LISTEN 1089/named tcp6 0 0 ::1:953 . * LISTEN 1089/named tcp6 0 0 . 28355 . * LISTEN 1142/sshd udp6 0 0 . 53 . * 1089/named udp6 0 0 ::1:123 . * 1766/ntpd udp6 0 0 . 123 . * 1766/ntpd
Важными столбцами в нашем случае являются:
- Proto – Протокол, используемый сокетом.
- Local Address – IP-адрес и номер порта, на котором слушает процесс.
- PID/Program name – PID и название процесса.
Если вы хотите отфильтровать результаты, используйте команду grep . Например, чтобы узнать, какой процесс прослушивает TCP-порт 22, вы должны набрать:
sudo netstat -tnlp | grep :22
Выходные данные показывают, что на этой машине порт 22 используется сервером SSH:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp6 0 0 . 22 . * LISTEN 445/sshd
Если вывод пуст, это означает, что на порте ничего не прослушивается.
Вы также можете отфильтровать список на основе критериев, например, PID, протокола, состояния и т. д.
netstat устарел и заменен на ss и ip, но все же это одна из наиболее часто используемых команд для проверки сетевых подключений.
Проверьте порты прослушивания с ss
ssновый netstat. В нем отсутствуют некоторые netstatфункции, но он предоставляет больше состояний TCP и работает немного быстрее. Параметры команды в основном одинаковы, поэтому переход с netstat на ss не сложен.
Чтобы получить список всех прослушивающих портов с ss, просто наберите:
sudo ss -tunlp
Вывод почти такой же, как тот, о котором сообщили netstat:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:123 *:* users:((«ntpd»,pid=1766,fd=17)) udp UNCONN 0 0 . 53 . * users:((«named»,pid=1089,fd=513),(«named»,pid=1089,fd=512)) udp UNCONN 0 0 ::1:123 . * users:((«ntpd»,pid=1766,fd=21)) udp UNCONN 0 0 . 123 . * users:((«ntpd»,pid=1766,fd=16)) tcp LISTEN 0 128 *:23455 *:* users:((«sshd»,pid=1142,fd=3)) tcp LISTEN 0 32 . 21 . * users:((«proftpd»,pid=1222,fd=0)) tcp LISTEN 0 10 . 53 . * users:((«named»,pid=1089,fd=21)) tcp LISTEN 0 128 ::1:953 . * users:((«named»,pid=1089,fd=25)) tcp LISTEN 0 128 . 23455 . * users:((«sshd»,pid=1142,fd=4))
Проверьте порты прослушивания с lsof
lsof это мощная утилита командной строки, которая предоставляет информацию о файлах, открытых процессами.
В Linux все является файлом. Вы можете думать о сокете как о файле, который пишет в сеть.
Чтобы получить список всех прослушивающих TCP-портов, вызовите lsof:
sudo lsof -nP -iTCP -sTCP:LISTEN
Используются следующие параметры:
- -n – Не конвертируйте номера портов в имена портов.
- -p – Не разрешайте имена хостов, показывайте числовые адреса.
- -iTCP -s TCP:LISTEN – Показывать только сетевые файлы с состоянием TCP LISTEN. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
named 1089 bind 21u IPv6 14401 0t0 TCP :53 (LISTEN)
named 1089 bind 22u IPv4 14405 0t0 TCP 127.0.0.1:53 (LISTEN)
named 1089 bind 23u IPv4 14407 0t0 TCP 213.159.210.167:53 (LISTEN)
named 1089 bind 24u IPv4 14447 0t0 TCP 127.0.0.1:953 (LISTEN)
named 1089 bind 25u IPv6 14448 0t0 TCP [::1]:953 (LISTEN)
named 1089 bind 26u IPv4 14120 0t0 TCP 172.17.0.1:53 (LISTEN)
ihttpd 1187 root 6u IPv4 13799 0t0 TCP 213.159.210.167:2525 (LISTEN)
nginx 1224 www-data 83u IPv4 14549 0t0 TCP :80 (LISTEN)
nginx 1224 www-data 84u IPv4 14550 0t0 TCP 213.159.210.167:443 (LISTEN)
apache2 1242 root 3u IPv4 13929 0t0 TCP 127.0.0.1:8080 (LISTEN)
apache2 6710 www-data 3u IPv4 13929 0t0 TCP 127.0.0.1:8080 (LISTEN)
apache2 6714 www-data 3u IPv4 13929 0t0 TCP 127.0.0.1:8080 (LISTEN)
shellinab 19516 root 4u IPv4 824033 0t0 TCP 127.0.0.1:52073 (LISTEN) .
Большинство имен выходных столбцов говорят сами за себя:
- COMMAND, PID, USER – имя, pid и пользователь , запустив программу, связанную с портом.
- NAME – номер порта.
Чтобы узнать, какой процесс прослушивает определенный порт, например, порт 3306, который вы используете:
sudo lsof -nP -iTCP:3306 -sTCP:LISTEN
Выходные данные показывают, что порт 3306 используется сервером MySQL:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN)
Для получения дополнительной информации посетите страницу руководства lsof и прочитайте обо всех других мощных опциях этого инструмента.
Источник: www.devopsos.ru