Найти в Дзене

Как проверить доступность TCP порта или сервиса

Как в Windows проверить доступен ли порт сервера? Или внешний веб-сервис? В процессе разворачивания и эксплуатации информационных систем часто требуется проверка доступности порта того или иного ресурса с клиентского места. Это может быть какой-нибудь сервер приложения, к которому не удается подключиться конечному пользователю или это может быть внешний ресурс с каким-нибудь хитрым портом, к которому происходит обращение. Для проверки доступности самого сервера обычно используется команда ping. Но, в силу того, что данная утилита работает с ICMP-пакетами, для конкретного порта проверить доступ таким образом невозможно. Кроме того, на удаленном ресурсе по какой-то причине, например, в целях безопасности может быть заблокирован ответ на ICMP-пакеты, соответственно, результат доступности нельзя считать однозначным, если ресурс "не пингуется". Первое, что приходит на ум - старый, добрый telnet. telnet <адрес_узла> <порт> Получили в ответ "кракозябру" - значит доступ есть ) Заг

Как в Windows проверить доступен ли порт сервера? Или внешний веб-сервис?

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

Для проверки доступности самого сервера обычно используется команда ping. Но, в силу того, что данная утилита работает с ICMP-пакетами, для конкретного порта проверить доступ таким образом невозможно. Кроме того, на удаленном ресурсе по какой-то причине, например, в целях безопасности может быть заблокирован ответ на ICMP-пакеты, соответственно, результат доступности нельзя считать однозначным, если ресурс "не пингуется".

Первое, что приходит на ум - старый, добрый telnet.

telnet <адрес_узла> <порт>

Получили в ответ "кракозябру" - значит доступ есть )

Загвоздка в том, что в большинстве современных Windows-систем telnet-клиент теперь не устанавливается по-умолчанию, и требуется "доустанавливать" этот компонент. Что не всегда возможно. По разным причинам, от отсутствия прав, до очень "крепкого" клиента ("... а мама сказала деньги в бидоне...")

Часто в подобном случае слышал вариант предлагающий скачать tcping/pcping и пр. Аргумент - установка не требуется. Но опять же, нужен доступ в интернет, нужно объяснить клиенту куда зайти, что качать, как запускать... Не комильфо...

Есть возможность обойтись без скачивания сторонних утилит. В Windows есть встроенный инструмент, позволяющий выполнить такую проверку доступности tcp-порта.

Это powershell-командлет Test-NetConnection

PS C:\> Test-NetConnection ks-app-02 -Port 2141

В ответе нас интересует последняя строка - TcpTestSucceeded: True.  В данном случае - доступ есть.

Также, в ответе может содержаться еще значение PingSucceeded - это "обычный" ping по ICMP.

У командлета есть очень удобный для запоминания и быстрого ввода альяс tnc, а также ключ позволяющий ограничить вывод только результатом.

-2

Разумеется, запускать командлет необходимо в окне PowerShell, а не "командной строки".

Хотя, из командной строки тоже можно, вызвав PowerShell:

C:\>powershell tnc SERVER -port 5057

Следует заметить, что командлет доступен в версиях PowerShell от 4.0 и выше, т.е. начиная с Windows Server 2012 R2 и Windows 8.1