Утилита nc#

Утилита nc (или netcat) используется практически для любых операций, связанных c TCP или UDP. nc может устанавливать TCP-соединения, отправлять UDP-пакеты, прослушивать произвольные порты TCP и UDP, выполнять сканирование портов и работать с IPv4 и IPv6. Утилита может выполнять скрипты, а также разделяет сообщения об ошибках на стандартные устройства вывода ошибок вместо того, чтобы отправлять их на стандартный вывод.

Синтаксис утилиты:

nc <options> <hostname> <port>

Где:

  • <options> - опции;

  • <hostname> - имя хоста;

  • <port> - номер порта.

Часто используемые опции утилиты представлены в таблице ниже.

Опция

Описание

-l

Прослушивание входящего соединения вместо инициирования соединения с удаленным хостом. Любые тайм-ауты, указанные с помощью опции -w, игнорируются

-N

Завершение работы сетевого сокета после EOF на входе

-u

Использование UDP вместо TCP. Не может использоваться вместе с опциями -c или -x

-v

Отображение более подробного результата

-z

Отключение отправки данных. Не может использоваться вместе с опцией -l

Примеры использования#

  • Для настройки соединения базовой модели клиент-сервер выполните следующие команды:

    1. Запустите на одной машине (или консоли) прослушивание определенного порта при помощи команды:

    nc -l <port>
    
    1. На другой машине (или консоли) подключитесь к хосту и порту, прослушивание которого запущено выше, с помощью команды:

    nc -N <hostname> <port>
    

    Соединение настроено. Все, что введено во второй консоли, объединяется с первой, и наоборот. После установки соединения nc не определяет, какая сторона используется в качестве «сервера», а какая - в качестве «клиента». Соединение можно прервать с помощью EOF (^D), так как при вводе использовалась опция -N.

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

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

    1. Запустите nc на одной машине (или консоли) для прослушивания определенного порта с сохранением выходных данных в файл командой:

    nc -l <port> > <filename>.out
    
    1. На другой машине (или консоли) подключитесь к хосту и порту, прослушиваемым выше, подав nc файл, данные из которого необходимо передать:

    nc -N <hostname> <port> < <filename>.in
    
  • Для просмотра информации о запущенных службах и открытых портах воспользуйтесь командой:

    nc -z <hostname> <port-range>
    

    Где <port-range> – это диапазон портов, указанный для ограничения поиска. Утилита nc здесь будет сообщать об открытых портах, а не инициировать соединение.