Как узнать, какие tcp/ip-порты используют приложения windows

Оглавление

IP адрес 0.0.0.0

Кстати, IP адрес 0.0.0.0 довольно интересный, так как используется в разных случаях.

Например, некоторые службы в качестве адреса привязки (bind) позволяют установить 0.0.0.0. Это означает, что служба будет прослушивать порт на всех сетевых интерфейсах данного компьютера, то есть на всех IP адресах. В некоторых службах (например, веб-сервер Apache), просто не нужно указывать никакой определённый IP адрес (в том числе 0.0.0.0) и по умолчанию они будут прослушивать входящие соединения на всех сетевых интерфейсах.

Важно понимать, что 0.0.0.0 и 127.0.0.1 это совершенно разные вещи. Хотя если в Linux пинговать 0.0.0.0, то пинги будут отправляться именно к 127.0.0.1

В Windows попытка пинга 0.0.0.0 вызовет сообщение о сбое передачи данных, то есть о недоступности адреса. Адрес 0.0.0.0 означает «любой IP данного компьютера» и включает в себя в том числе 127.0.0.1.

Адрес 0.0.0.0 обычно означает, что IP адрес ещё не настроен или не присвоен. Такой адрес указывает хост, который обращается к DHCP для получения IP адреса.

Если 0.0.0.0 указан в качестве адреса получателя, то он должен расцениваться как широковещательный адрес 255.255.255.255.

Адрес 0.0.0.0 с маской 0.0.0.0, то есть 0.0.0.0/0 используется для обозначения маршрута по умолчанию (default route).

Этот адрес не является валидным адресом для назначения сетевому интерфейсу, точно также как и вся подсеть 0.0.0.0/8 (то есть любой адрес, начинающийся с 0.).

Также адрес 0.0.0.0 может использоваться для явного указания, что целевой хост недоступен.

Это было больше просто для справки и для расширения кругозора, а теперь продолжаем с нашими открытыми портами.

Игровые порты: что, куда бросаем?

Какой порт открыть — зависит от конкретного программного обеспечения. Некоторые программы требуют проброса нескольких портов, другим — достаточно одного.

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

Например, чтобы сыграть по сети в «Destiny 2», нужно пробросить UDP-порт 3074 до вашей «плойки», или UDP-порт 1200 на Xbox. А вот до ПК потребуется пробросить уже два UDP-порта: 3074 и 3097.

В следующей таблице приведены некоторые игры и используемые ими порты на ПК:

Открыть порт в Windows брандмауэре не так сложно, но сложно если не знать как его открывать.

Для чего может понадобится необходимость открыть порты?

По умолчанию Windows защитила пользователя, закрыв все порты, кроме тех, что используются непосредственно системой и ее прикладными программами. Поэтому, когда мы устанавливаем какую-либо программу или игру, у нас что-то не работает. Инструкция к программе или форум технической поддержки игры говорит нам открыть необходимый порт для исправной работы. Для WOT это могут быть, например UDP-диапазон 32800 – 32820 и UDP порты 53, 20020, TCP-диапазон 32800 – 32820 и TCP-порты 80, 443 и 20020. Для каких-нибудь онлайн-чатов могут быть другие порты, для torrent – другие, майнкрафт и CS 1.6 – другие. Давайте приступим к делу и откроем порт для входящих и исходящих соединений по 25565 TCP-порту.

Открыть порт на Windows 10.

Для начала переходим в брандмауэр, порты открываются в нем. 1.Нажимаем кнопку Windows – значок “шестеренка” Параметры – Обновление и безопасность. 2. В левом меню ищем Безопасность Windows. 3. Брандмауэр и защита сети. 4. Дополнительные параметры. 5. В открывшемся окне “Монитор брандмауэра Защитника Windows в режиме повышенной безопасности включен Локальный компьютер” слева видим меню, где есть пункты “Правила для входящих подключений” и “Правила для исходящих подключений“.

6. Начнем с настройки входящих подключений. 6.1. В левом меню выбираем «Правила для входящих подключений» (Inbound Rules). В правой колонке – «Создать правило» (New Rule). 6.2. В новом окне выбираем «Для порта» (Port) и Далее (Next). 6.3. Выбираем необходимый протокол: TCP. Вводим в поле «Определённые локальные порты» (Specific local ports) наш порт 25565. Если портов несколько, то добавляем все через запятую или если это диапазон портов, то через тире. Нажимаем Далее (Next). 6.4. Следующим шагом выбираем «Разрешить подключение» (Allow the connection) и Далее (Next). 6.5. Профили подключения можно оставить по умолчанию включенным и Далее (Next). 6.6. Задаем имя созданного правила, обычно пишется название программы для который открывается порт и номер порта и Готово.

Таким образом мы открыли порт 25565 для входящих соединений. «Правила для исходящих подключений» делается аналогично, попробуйте самостоятельно.

Как открыть порт на Windows 7.

Открываем брандмауэр. Переходим по этапам меню Пуск – панель управления – Брандмауэр Защитника Windows – Дополнительные параметры. Далее аналогично инструкции по открытию порта на Windows 10 (выше), начиная с пункта 6. Начнем с настройки входящих подключений.

Как открыть порты на Windows 7, 8, 8.1, знают далеко не все, зато слышали о них, наверное, многие пользователи ПК. Однако для некоторых онлайн-игр или программ, требующих доступа к интернету, открытие дополнительных подключений становится необходимым. Иногда требуется открыть или проверить уже открытые порты.

Открытие порта в Windows

Как в Windows узнать, какая программа прослушивает порт

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

Поэтому при анализе полученных данных также важно знать, какая именно служба прослушивает определённый порт.. Для поиска службы, можно добавить к приведённой команде опцию -b, которая означает показать исполнимый файл, прослушивающий порт:

Для поиска службы, можно добавить к приведённой команде опцию -b, которая означает показать исполнимый файл, прослушивающий порт:

netstat -anb

Также имеется альтернативный способ определения исполнимого файла, привязанного к порту. Для него откройте Командную строку Windows. Для этого нажмите сочетание клавиш Win+x, там выберите Windows PowerShell (Администратор). В открывшемся окне введите:

cmd

чтобы перейти в обычную командную строку.

Там запустите команду вида:

for /f "tokens=1,2,3,4,5*" %i in ('netstat -aon ^| findstr ":80" ^| findstr /i listening') do echo %j %l & @tasklist | findstr %m

Эта команда найдёт службы, которые прослушивают 80 порт. Чтобы найти информацию о другом порте, замените в команде цифру 80 на интересующий вас порт.

Пример вывода в моём случае:

C:\Windows\system32>echo 0.0.0.0:80 LISTENING   &
0.0.0.0:80 LISTENING
httpd.exe                     3576 Services                   0    16 764 КБ

C:\Windows\system32>echo :80 LISTENING   &
:80 LISTENING
httpd.exe                     3576 Services                   0    16 764 КБ

Запись 0.0.0.0:80 означает, порт 80 для любых IPv4 адресов прослушивает служба httpd.exe (веб-сервер Apache). А запись :80 — означает, что порт 80 для любых IPv6 адресов прослушивает та же самая служба httpd.exe (веб-сервер Apache). Мы ещё вернёмся к более подробному анализу данных далее в этой статье.

Менять порт в длинной команде не всегда удобно, поэтому рекомендую создать текстовый файл с именем port.bat, в этот файл скопируйте:

@ECHO OFF
for /f "tokens=1,2,3,4,5*" %%i in ('netstat -aon ^| findstr ":%1" ^| findstr /i listening') do echo %%j %%l & @tasklist | findstr %%m

Сохраните и закройте этот файл.

Теперь в Windows PowerShell или в командной строке Windows с помощью команды cd перейдите в папку, куда вы сохранили файл. Например, я его сохранил в папку C:\Users\Alex\Documents\, тогда для перехода туда я выполняю:

cd C:\Users\Alex\Documents\

Теперь запустите файл командой вида:

.\port.bat 

Где замените на интересующий вас порт, например, меня интересует порт 80, тогда:

.\port.bat 80

Вновь получаю аналогичный результат.

Если у вас множество портов прослушивает процесс svchost.exe, то чтобы разобраться, какие именно это службы, смотрите статью «Почему svchost.exe прослушивает много портов? Как узнать, какие именно программы открыли порты».

Технические ограничения

У этой услуги есть некоторые технические ограничения, которые могут не позволить Вам ее использовать. Работа системы базируется на функциональности «обратный прокси», то фактически, вы будете иметь не прямой доступ из Интернет к своему домашнему устройству и его порту, а к серверу, который выступив прокси сервером, получит поток данных с домашнего устройства и передаст его вам во внешнюю сеть. В этой связи, есть вероятность того, что не все клиентские приложения смогут устойчиво работать при такой организации удаленного доступа.

Дополнительно следует учесть, что введенные вами на странице настройки будут применены не моментально (!), а через некоторое время (около 5 минут), о чем вам будет сообщено на странице настройки «Проброса TCP порта».

Сокеты

В Linux вместо запуска службы на определённом порту можно настроить сокет для прослушивания порта. Схема работы следующая: сетевая служба (например, это можно настроить для SSH) по умолчанию не запущена и, следовательно, не потребляет системные ресурсы. Тем не менее её порт прослушивается системным процессом, который и без того бы работал. Как только на этот порт (допустим на 22) поступает запрос соединения, системный процесс запускает нужную службу, и она начинает работать как будто бы всегда была включена. После прекращения связи, служба вновь отключается, и порт вновь начинает прослушивать системный процесс.

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

Например, для SSH netstat будет показывать примерно следующие данные (1/init вместо sshd):

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::22                   :::*                    LISTEN      1/init 

А ss будет показывать примерно так:

Netid       State        Recv-Q       Send-Q        Local Address:Port        Peer Address:Port
tcp         LISTEN       0            128           *:22                      *:*                    users:(("systemd",pid=1,fd=44))

Заголовок TCP

  • Порядковый номер выполняет две задачи:
    • Если установлен флаг SYN, то это начальное значение номера последовательности — ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер последовательности, равный ISN + 1.
    • В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот номер последовательности.
  • Номер подтверждения — если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения.
  • Длина заголовка — задается словами по 32бита.
  • Размер окна — количество байт, которые готов принять получатель без подтверждения.
  • Контрольная сумма — включает псевдо заголовок, заголовок и данные.
  • Указатель срочности — указывает последний байт срочных данных, на которые надо немедленно реагировать.
  • URG — флаг срочности, включает поле «Указатель срочности», если =0 то поле игнорируется.
  • ACK — флаг подтверждение, включает поле «Номер подтверждения, если =0 то поле игнорируется.
  • PSH — флаг требует выполнения операции push, модуль TCP должен срочно передать пакет программе.
  • RST — флаг прерывания соединения, используется для отказа в соединении
  • SYN — флаг синхронизация порядковых номеров, используется при установлении соединения.
  • FIN — флаг окончание передачи со стороны отправителя

Рассмотрим структуру  заголовка TCP с помощью сетевого анализатора Wireshark:

TCP порты

Так как на одном и том же компьютере могут быть запущены несколько программ, то для доставки TCP-пакета конкретной программе, используется уникальный идентификатор каждой программы или номер порта.

Номер порта — это условное 16-битное число от 1 до 65535, указывающее, какой программе предназначается пакет.

TCP порты используют определенный порт программы для доставки данных, передаваемых с помощью протокола управления передачей (TCP). TCP порты являются более сложными и работают иначе, чем порты UDP. В то время как порт UDP работает как одиночная очередь сообщений и как точка входа для UDP-соединения, окончательной точкой входа для всех соединений TCP является уникальное соединение. Каждое соединение TCP однозначно идентифицируется двумя точками входа.

Каждый отдельный порт сервера TCP может предложить общий доступ к нескольким соединениям, потому что все TCP соединения идентифицируются двумя значениями: IP-адресом и TCP портом (сокет).

Все номера портов TCP, которые меньше чем 1024 — зарезервированы и зарегистрированы в Internet Assigned Numbers Authority (IANA).

Номера портов UDP и TCP не пересекаются.

TCP программы используют зарезервированные или хорошо известные номера портов, как показано на следующем рисунке.

Another method to check UDP Open Port

 Follow below alternate method to test your udp port is open or closed:

  1. Download utilities available on Web. For e.g. Network Utilities Bundles.
  2. Install and launch the tool on your system.
  3. Click on the port check button and select the type of port.
  4. Click on Check Me.

These tools use local application. When the port is not reachable or giving a message displaying “Your port is not open or not reachable”, this means that the port is closed or some firewall is blocking the port.

How does UDP port scanning detection works?

After sending a UDP packet to the remote host, the following occurs:

  1. When UDP port is available (open). Packets are accepted but the response is not sent.
  2. When UDP port is closed, ICMP packet is sent in response with an error code like Destination Unreachable.

Limitations in UDP Port Scanning:

Following are some of the limitations for UDP Port scanning:

  1. Internal packets are used for queuing incoming packets by the TCP/IP stacks of many operating systems. UDP packets that sent are not process due to limited buffer space. This can cause the slow process of port scanning. UDP port scanning is reluctant than TCP port scanning.
  2. The Firewall can affect the result of scanning. It can prevent the ICMP packet from reaching the scanner.

Scanning and to check UDP port can be achieved through various methods. The scanner contains a list of open UDP ports as well as the running UDP services. No response from the port anticipates that the port is open. Where an error message or an ICMP packet in the response indicates the port is closed.

Принцип работы UDP

Когда приложение, базирующееся на UDP, отправляет данные другому хосту в сети, UDP дополняет их восьмибитным заголовком, содержащим номера портов адресата и отправителя, общую длину данных и контрольную сумму. Поверх дейтаграммы UDP свой заголовок добавляет IP, формируя дейтаграмму IP:

На предыдущем рисунке указано, что общая длина заголовка UDP составляет восемь байтов. Теоретически максимальный размер дейтаграммы IP равен 65 535 байтам. С учетом 20 байтов заголовка IP и 8 байтов заголовка UDP длина данных пользователя может достигать 65 507 байтов. Однако большинство программ работают с данными меньшего размера. Так, для большинства приложений по умолчанию установлена длина приблизительно 8192 байта, поскольку именно такой объем данных считывается и записывается сетевой файловой системой (NFS). Можно устанавливать размеры входного и выходного буферов.

Контрольная сумма нужна, чтобы проверить были ли данные доставлены в пункт назначения правильно или были искажены. Она охватывает как заголовок UDP, так и данные. Байт-заполнитель используется, если общее число октетов дейтаграммы нечетно. Если полученная контрольная сумма равна нулю, получатель фиксирует ошибку контрольной суммы и отбрасывает дейтаграмму. Хотя контрольная сумма является необязательным средством, ее всегда рекомендуется включать.

На следующем шаге уровень IP добавляет 20 байтов заголовка, включающего TTL, IP-адреса источника и получателя и другую информацию. Это действие называют IP-инкапсуляцией.

Как упоминалось ранее, максимальный размер пакета равен 65 507 байтам. Если пакет превышает установленный по умолчанию размер MTU, то уровень IP разбивает пакет на сегменты. Эти сегменты называются фрагментами, а процесс разбиения данных на сегменты — фрагментацией. Заголовок IP содержит всю информацию о фрагментах.

Когда приложение-отправитель «выбрасывает» дейтаграмму в сеть, она направляется по IP-адресу назначения, указанному в заголовке IP. При проходе через маршрутизатор значение времени жизни (TTL) в заголовке IP уменьшается на единицу.

Когда дейтаграмма прибывает к заданному назначению и порту, уровень IP по своему заголовку проверяет, фрагментирована ли дейтаграмма. Если это так, дейтаграмма собирается в соответствии с информацией, имеющейся в заголовке. Наконец прикладной уровень извлекает отфильтрованные данные, удаляя заголовок.

Как проверить открытые порты в Windows

В Windows есть команда netstat, которая отображает статистику протокола и текущих сетевых подключений TCP/IP.

Использование команды:

NETSTAT           
        

Опции netstat:

  -a            Отображение всех подключений и портов прослушивания.
  -b            Отображение исполняемого файла, участвующего в создании
                каждого подключения или порта прослушивания. Иногда известные
                исполняемые файлы содержат множество независимых
                компонентов. Тогда отображается последовательность компонентов,
                участвующих в создании подключения или порта прослушивания. В
                этом случае имя исполняемого файла находится снизу в скобках
                [], сверху находится вызванный им компонент, и так до тех
                пор, пока не достигнут TCP/IP. Заметьте, что такой подход
                может занять много времени и требует достаточных разрешений.
  -e            Отображение статистики Ethernet. Может применяться вместе
                с параметром -s.
  -f            Отображение полного имени домена (FQDN) для внешних адресов.
  -n            Отображение адресов и номеров портов в числовом формате.
  -o            Отображение ИД процесса каждого подключения.
  -p протокол   Отображение подключений для протокола, задаваемых этим
                параметром. Допустимые значения: TCP, UDP, TCPv6 или UDPv6.
                Если используется вместе с параметром -s для отображения
                статистики по протоколам, допустимы следующие значения:
                IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP или UDPv6.
  -q            Отображение всех подключений, портов прослушивания и ограниченных
                непрослушивающих TCP-портов. Ограниченные непрослушивающие порты могут быть или не быть
                связанными с активными подключениями
  -r            Отображение содержимого таблицы маршрутов.
  -s            Отображение статистики по протоколам.  По умолчанию статистика
                отображается для протоколов IP, IPv6, ICMP, ICMPv6, TCP, TCPv6,
                UDP и UDPv6. Параметр -p позволяет указать подмножество
                выводимых данных.
  -t            Отображение состояния разгрузки для текущего подключения.
  -x            Отображение подключений, прослушивателей и общих конечных точек
                NetworkDirect.
  -y            Отображение шаблона подключений TCP для всех подключений.
                Не может использоваться вместе с другими параметрами.
  interval      Повторное отображение выбранной статистики с паузой
                между отображениями, заданной интервалом
                в секундах.  Чтобы прекратить повторное отображение
                статистики, нажмите клавиши CTRL+C.
                Если этот параметр опущен, netstat напечатает текущую
                информацию о конфигурации один раз.

Используя команду со следующими ключами, можно посмотреть информацию о всех подключениях и прослушиваемых портах в Windows:

netstat -an

Сетевые протоколы UDP, TCP, ICMP

В рамках протокола TCP/IP для передачи данных используются протоколы — TCP и UDP. Многие наверняка слышали, что есть порты как TCP, так и UDP, но не все знают в чем разница и что это вообще. И так..

Передача данных по протоколу TCP (Transmission Control Protocol — Протокол Управления Передачей) предусматривает наличие подтверждений получения информации. «-Ну, мол, — получил? -Получил!» Если же передающая сторона не получит в установленные сроки необходимого подтверждения, то данные будут переданы повторно. Поэтому протокол TCP относят к протоколам, предусматривающим соединение, а UDP (User Datagram Protocol — Протокол Пользовательских Датаграмм) — нет. UDP применяется в тех случаях, когда не требуется подтверждения приема (например, DNS-запросы или IP-телефония (яркий представитель которой, — Skype) ). То есть разница заключается в наличии подтверждения приема. Казалось бы «Всего то!», но на практике это играет важную роль.

Есть еще так же протокол ICMP (Internet Control Message Protocol — межсетевой протокол управляющих сообщений), который используется для передачи данных о параметрах сети. Он включает в себя служебные типы пакетов, таки как ping, distination unreachable, TTL и пр.

В брандмауэре маршрутизатора

Необходимо сначала выяснить IP-адрес роутера:

  1. Нажать кнопку «Пуск» и выбрать в контекстном меню параметр «Настройка».
  2. В открывшемся окне перейти в «Сеть и интернет» – «Просмотр свойств сети».
  3. Затем посмотреть IP-адрес рядом с пунктом «Шлюз по умолчанию».
  1. Открыть предпочтительный браузер и ввести IP-адрес в адресную строку.
  2. Вписать имя пользователя и пароль на странице входа. Данные указаны на коробке или самом устройстве.
  3. На экране отобразится список разделов.
  4. Найти среди параметров и перейти в «Переадресацию портов».
  5. Включить опцию.
  6. Здесь ввести следующую информацию: имя, тип/служба (TCP, UDP или оба), входящий/начало (номер порта; если более 1, вписать наименьшее число в диапазоне), частный/конечный (номер порта; если более 1, вписать наибольшее число в диапазоне).
  7. Ввести IP-адрес компьютера.
  8. Сохранить настройки.

Важно! Если ни один из методов не помог решить проблему, рекомендуется использовать утилиту Restoro Repair Tool, которая может сканировать репозитории, чтобы заменить поврежденные и отсутствующие файлы. Это работает в большинстве случаев, когда проблема возникает из-за повреждения системы

Restoro также оптимизирует систему для достижения максимальной производительности.

Сколько всего портов TCP?

Для протокола TCP порт с номером 0 зарезервирован и не может использоваться. Для протокола UDP указание порта процесса-отправителя («обратного» порта) не является обязательным, и порт с номером 0 означает отсутствие порта. Таким образом, номер порта — число в диапазоне от 1 до 216-1=65 535.

Соединение TCP

Чтобы установить соединение между двумя процессами на разных компьютерах сети, необходимо знать не только интернет-адреса компьютеров, но и номера тех ТСР-портов (sockets), которые процессы используют на этих компьютерах. Любое TCP-соединение в сети Интернет однозначно идентифицируется двумя IP-адресами и двумя номерами ТСР-портов.

Протокол TCP умеет работать с поврежденными, потерянными, дублированными или поступившими с нарушением порядка следования пакетами. Это достигается благодаря механизму присвоения каждому передаваемому пакету порядкового номера и механизму проверки получения пакетов.

Когда протокол TCP передает сегмент данных, копия этих данных помещается в очередь повтора передачи и запускается таймер ожидания подтверждения.

Сокеты TCP

Активные TCP соединения с интернетом (w/o servers)

# netstat -nt
Proto Recv-Q Send-Q Local Address Foreign Address State      
tcp        0      0 192.26.95.251:56981     10.161.85.55:22        ESTABLISHED
tcp        0      0 10.26.95.251:44596      10.26.95.226:2193       ESTABLISHED

Для сокетов TCP допустимы следующие значения состояния:

CLOSED 	        Закрыт. Сокет не используется.
LISTEN 	        Сокет ожидает входящих соединений.
SYN_SENT 	Активно пытается установить соединение. Cокет в процессе установки соединения.
SYN_RECEIVED (SYN_RCVD)	Идет начальная синхронизация соединения. Был принят запрос установки соединения из сети.
ESTABLISHED 	Соединение установлено.
CLOSE_WAIT 	Удаленная сторона отключилась; ожидание закрытия сокета.
FIN_WAIT_1 	Сокет закрыт; соединение закрывается.
CLOSING 	Сокет закрыт, затем удаленная сторона отключилась; ожидание подтверждения.
LAST_ACK 	Удаленная сторона отключилась, затем сокет закрыт; ожидание подтверждения.
FIN_WAIT_2 	Сокет закрыт; ожидание отключения удаленной стороны.
TIME_WAIT 	Сокет закрыт, но ожидает пакеты, ещё находящиеся в сети для обработки
UNKNOWN         Статус сокета неизвестен.

Что такое TCP RST?

TCP RST – это сегмент TCP (обратите внимание, что TCP посылает сообщения сегментами, а НЕ пакетами, что часто неправильно употребляется в среде сетевых администраторов), который показывает, что с соединением что-то не так. RST посылается в следующих случаях:

  • Посылается SYN для несуществующего сервера.
  • TCP хочет прервать соединение.
  • Получен сегмент, для которого не существует соединения.