Регулярно, некоторые - только для диагностики. Я принадлежу к последней категории: предпочитаю использовать эту утилиту для выявления причин системных проблем и неполадок.

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

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

Полностью определенное имя домена. Параметр -f позволяет узнать FQDN для внешнего адреса. При использовании netstat с этим параметром имена разрешаются как во внутренней, так и во внешней сети. На рис. A показан вывод команды.

Рисунок A

Какой процесс использует тот или иной порт. Сочетание параметров -a -n -o позволяет выяснить, какому идентификатору процесса (PID) соответствует тот или иной порт. (См. ) Вывод команды показан на рис. B.


Рисунок B

А если добавить к этой комбинации параметр -b, для каждого процесса будут использоваться дружественные имена, как показано на рис. C. Правда, для этого потребуются права администратора.


Рисунок C

Обратите внимание: удаленные адреса, указывающие на 192.168.1.220:3261, принадлежат службе инициатора Windows iSCSI и обозначаются иначе, чем адреса остальных служб.

Вывод таблицы маршрутизации. Когда нужно выяснить, почему на одном компьютере сетевое соединение работает иначе, чем на других в той же сети, можно использовать параметр -r, который выводит маршрут для данной системы, как показано на рис. D. Обратите внимание на раздел «Постоянные маршруты» (Persistent routes): в нем указываются все статические маршруты, настроенные для Windows Server).


Рисунок D

Эти четыре вариации команды netstat существенно облегчают

Лабораторная работа № 03-005

Сетевая утилита netstat. Принципы работы и использование.

Утилита отображает активные и прослушиваемые порты TCP, статистики Ethernet, таблицы маршрутизации IP, статистики IPv4 (для протоколов IP, ICMP, TCP и UDP) и IPv6 (для протоколов IPv6, ICMPv6, TCP через IPv6 и UDP через IPv6). Запущенная без параметров, команда netstat отображает активные подключения TCP.

Синтаксис:

netstat [-a ] [-e ] [-n ] [-o ] [-p протокол ] [-r ] [-s ] [интервал ].

Параметры:

-a вывод всех активных подключений TCP и прослушиваемых компьютером портов TCP и UDP;

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

-e вывод статистики Ethernet, например количества отправленных и принятых байтов и пакетов. Этот параметр может комбинироваться с ключом -s ;

-n вывод активных подключений TCP с отображением адресов и номеров портов в числовом формате без попыток определения имен;

-o вывод активных подключений TCP и включение кода процесса (PID) для каждого подключения. Код процесса позволяет найти приложение на вкладке Процессы диспетчера задач Windows. Этот параметр может комбинироваться с ключами -a , -n и -p ;

-p протокол вывод подключений для протокола, указанного параметром протокол . В этом случае параметр протокол может принимать значения tcp , udp , tcpv6 или udpv6 . Если данный параметр используется с ключом -s для вывода статистики по протоколу, параметр протокол может иметь значение tcp , udp , icmp , ip , tcpv6 , udpv6 , icmpv6 или ipv6 ;

-r вывод содержимого таблицы маршрутизации IP. Эта команда эквивалентна команде route print ;

-s вывод статистики по протоколу. По умолчанию выводится статистика для протоколов TCP, UDP, ICMP и IP. Если установлен протокол IPv6 для Windows XP, отображается статистика для протоколов TCP через IPv6, UDP через IPv6, ICMPv6 и IPv6. Параметр -p может использоваться для указания набора протоколов;

- v используется вместе с параметром b для отображения последовательности программных компонент, участвующих в создании сокета

интервал задаёт обновление выбранных данных с интервалом, определенным параметром интервал (в секундах). Нажатие клавиш CTRL+C останавливает обновление. Если этот параметр пропущен, netstat выводит выбранные данные только один раз.

/? о тображение справки в командной строке.

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

Обслуживание коммуникационных потребностей прикладных процессов осуществляет транспортный уровень стека протоколов, реализуемый программно в ядре операционной системы, в виде отдельного пользовательского процесса или в форме библиотечного модуля, загружаемого сетевым приложением. Пакеты, поступающие на транспортный уровень, организуются операционной системой в виде множества очередей к точкам входа различных прикладных процессов. В терминологии TCP/IP такие системные очереди называются портами . Порт - это программное понятие, которое используется клиентом или сервером для посылки или приема сообщений; порт идентифицируется 16-битовым числом. Таким образом, адресом назначения, который используется транспортным объектом, является идентификатор (номер) порта прикладной службы. Номер порта в совокупности с номером сети и номером конечного узла однозначно определяют прикладной процесс в сети. Этот набор идентифицирующих параметров имеет название сокет (socket) .

Назначение номеров портов прикладным процессам осуществляется либо централизованно , если эти процессы представляют собой популярные общедоступные службы (например, номер 21 закреплен за службой удаленного доступа к файлам FTP, a 23 - за службой удаленного управления telnet), либо локально для тех служб, которые еще не стали столь распространенными, чтобы закреплять за ними стандартные (зарезервированные) номера. Централизованное присвоение службам номеров портов выполняется организацией Internet Assigned Numbers Authority (IANA) . Эти номера затем закрепляются и опубликовываются в стандартах Internet .

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

Инициирующий соединение клиент, прежде чем пытаться установить соединение с удаленным сервером-приложением, запрашивает у своей ОС номер свободного порта. Порты с номерами 0 -1023 принято называть привилегированными, они практически все зарезервированы и не выделяются клиентским процессам. Это не означает, что не существует закрепленных номеров портов с большими номерами, но они используются гораздо реже и будучи свободными на данном хосте, вполне могут предоставляться в распоряжение программы-клиента.

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

TCP (Transmission Control Protocol) предоставляет основанный на соединении надежный сервис потока байтов. Он применяется в тех случаях, когда требуется гарантированная доставка сообщений. Он использует контрольные суммы пакетов для проверки их целостности и освобождает прикладные процессы от необходимости таймаутов и повторных передач для обеспечения надежности.

Термин "основанный на соединении" (connection-oriented) означает, что два приложения, использующие TCP (как правило, это клиент и сервер), должны установить TCP соединение друг с другом, после чего у них появляется возможность обмениваться данными.

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

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

лены в виде модели, имеющей 11 возможных состояний:

Состояние Описание

CLOSED Закрыто. Соединение не является активным и не находится в процессе установки

LISTEN Ожидание. Сервер ожидает входящего запроса

SYN RCVD Прибыл запрос соединения. Ожидание подтверждения

SYN SENT Запрос соединения послан. Приложение начало открывать соединение

ESTABLISHED Установлено. Нормальное состояние передачи данных

FINWAIT 1 Приложение сообщило, что ему больше нечего передавать

FINWAIT 2 Другая сторона согласна разорвать соединение

TIMED WAIT Ожидание, пока в сети не исчезнут все пакеты

CLOSING Обе стороны попытались одновременно закрыть соединение

CLOSE WAIT Другая сторона инициировала разъединение

LAST АСК Ожидание, пока в сети не исчезнут все пакеты

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

Каждое соединение начинается в состоянии CLOSED (закрытое). Оно может выйти из этого состояния, предпринимая либо активную (CONNECT), либо пассивную (LISTEN) попытку открыть соединение. Если противоположная сторона осуществляет противоположные действия, соединение устанавливается и переходит в состояние ESTABLISHED. Инициатором разрыва соединения может выступить любая сторона. По завершении процесса разъединения соединение возвращается в состояние CLOSED.

Вопросы для самопроверки

    Порт как элемент адресации транспортного уровня. Сокет.

    Локально и централизованно назначаемые порты.

    Основные протоколы транспортного уровня стека TCP/IP. Их краткая характеристика.

    Сопоставление сетевых подключений с процессами, функционирующими на компьютере.

    Параметры утилиты netstat.

Необходимое оборудование

IBM PC - совместимая ЭВМ с лицензионной операционной системой Windows, подключение к локальной сети, выход в интернет.

Задания

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

1. Воспользовавшись командой netstat просмотрите статистику работы Ethernet - подключения.

2. Воспользовавшись командой netstat просмотрите статистику работы сетевых протоколов.

3. Воспользовавшись командой netstat просмотрите статистику работы протокола ICMP (в выводе должны присутствовать данные только по этому протоколу).

4. Командой netstat просмотрите список всех подключений TCP и прослушиваемых портов UDP.

5. Запустите браузер и установите соединение с любым сайтом. Повторите предыдущее задания и прокомментируйте результат.

6. С помощью команды netstat определите любые 5 процессов, прослушивающих UDP порты. Укажите наименование процессов и номера прослушиваемых портов.

6. С помощью команды netstat определите активные TCP – подключения, номера их портов и имена исполняемых файлов приложений, использующих эти подключения.

Отчет о выполнении работы представьте в печатной или электронной форме с представлением копий экранов работы утилиты.

Всем привет ранее я начал рассказ про сетевые утилиты системного администратора в статье "Утилита pathping или как диагностировать проблему на маршруте до сайта. Сетевые утилиты 3 часть ", движемся дальше и разбираем еще одну утилиту netstat или, как определить какие порты слушает ваш компьютер. Данная программка, будет не заменимым инструментом в багаже софта, любого системного инженера, поможет ему провести быструю диагностику ситуации и обнаружить ряд всевозможных проблем с сервисами и их доступностью.

Команды netstat

Netstat - Отображение активных подключений TCP , портов, прослушиваемых компьютером, статистики Ethernet, таблицы маршрутизации IP, статистики IPv4 (для протоколов IP, ICMP, TCP и UDP) и IPv6 (для протоколов IPv6, ICMPv6, TCP через IPv6 и UDP через IPv6)

Представим ситуацию вы установили например MSM LSI утилиту для просмотра параметров RAID контроллера, запускаете утилиту, но ничего она не находит, потому что закрыт порт а какой вы не в курсе, и не всегда в инете можно быстро найти информацию об этом, для этого вы и может запустить netstat и посмотреть какой порт слушает ваш сервер с MSM процессом.

Открываем командную строку Windows и вводим netstat ?. У вас выскочит справка утилиты.

C:\Users\sem>netstat ?

Отображение статистики протокола и текущих сетевых подключений TCP/IP.

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p протокол] [-r] [-s] [-x] [-t]
[интервал]

  • -a Отображение всех подключений и портов прослушивания.
  • -b Отображение исполняемого файла, участвующего в создании
  • каждого подключения или порта прослушивания. Иногда известные исполняемые файлы содержат множество независимых компонентов. Тогда отображается последовательность компонентов, участвующих в создании подключения или порта прослушивания. В этом случае имя исполняемого файла находится снизу в скобках , сверху находится вызванный им компонент, и так до тех пор, пока не достигнут TCP/IP. Заметьте, что такой подход может занять много времени и требует достаточных разрешений.
  • -e Отображение статистики Ethernet. Может применяться вместе с параметром -s.
  • -f Отображение полного имени домена () для внешних адресов.
  • -n Отображение адресов и номеров портов в числовом формате.
  • -o Отображение ИД процесса каждого подключения.
  • -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 позволяет указать подмножество выводимых данных.
  • -t Отображение состояния разгрузки для текущего подключения.
  • -x Отображение подключений, прослушивателей и общих конечных точек NetworkDirect.
  • -y Отображение шаблона подключений TCP для всех подключений. Не может использоваться вместе с другими параметрами. interval Повторное отображение выбранной статистики с паузой между отображениями, заданной интервалом в секундах. Чтобы прекратить повторное отображение статистики, нажмите клавиши CTRL+C. Если этот параметр опущен, netstat напечатает текущую информацию о конфигурации один раз.

Давайте посмотрим интересные ключи утилиты netstat. Первое что вводим

и у нас на экране появится статистика сетевых пакетов ethernet.

Если добавим ключ -s то получим статистику по протоколам.

Очень полезно посмотреть все что слушает ваш хост для этого пишем

Вывод команды содержит Тип протокола либо TCP либо UDP, локальный адрес с портом который слушается и внешний адрес с портом и состояние действия.

Для полного понимания информации, предоставляемой этой командой, необходимо понять принципы установки соединения в протоколе TCP/IP. Вот основные этапы процесса установки соединения TCP/IP:

1. При попытке установить соединение клиент отправляет сообщение SYN серверу.

2. Сервер отвечает собственным сообщением SYN и подтверждением (ACK).

3. После этого клиент отправляет сообщение ACK обратно на сервер, завершая процесс установки соединения.

Процесс разрыва соединения состоит из следующих этапов:

1. Клиент сообщает "Я закончил", отправляя сообщение FIN серверу. На этом этапе клиент только принимает данные от сервера, но сам ничего не отправляет.

2. После этого сервер отправляет сообщение ACK и отправляет собственное сообщение FIN клиенту.

3. После этого клиент отправляет сообщение ACK серверу, подтверждая запрос сервера FIN.

4. При получении сообщения ACK от клиента сервер закрывает соединение.

Понимание этапов процесса установки и разрыва соединения позволяет более прозрачно интерпретировать состояния соединений в выводе команды netstat. Соединения в списке могут находиться в следующих состояниях.

  • CLOSE_WAIT - указывает на пассивную фазу закрытия соединения, которая начинается после получения сервером сообщения FIN от клиента.
  • CLOSED - соединение прервано и закрыто сервером.
  • ESTABLISHED - клиент установил соединение с сервером, получив от сервера сообщение SYN.
  • FIN_WAIT_1 - клиент инициировал закрытие соединения (отправил сообщение FIN).
  • FIN_WAIT_2 - клиент получил сообщения ACK и FIN от сервера.
  • LAST_ACK - сервер отправил сообщение FIN клиенту.
  • LISTEN - сервер готов принимать входящие соединения.
  • SYN_RECEIVED - сервер получил сообщение SYN от клиента и отправил ему ответ.
  • TIMED_WAIT - клиент отправил сообщение FIN серверу и ожидает ответа на это сообщение.
  • YN_SEND - указанное соединение активно и открыто.

Если добавить ключ -f то будут разрешаться имена удаленных внешних ресурсов

К оманда Netstat отображает различные сетевые данные, такие как сетевые подключения, таблица маршрутизации, статистики интерфейсов, маскированные соединения, многоадресное пространство и т.д.,

В этой статье, давайте рассмотрим 10 практических примеров команды NetStat в Unix.

1. Список всех портов (как прослушиваемые, так и не прослушиваемые порты)

Список всех портов с помощью команды Netstat -a

# netstat -a | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:30037 *:* LISTEN udp 0 0 *:bootpc *:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 6135 /tmp/.X11-unix/X0 unix 2 [ ACC ] STREAM LISTENING 5140 /var/run/acpid.socket

Список всех портов TCP с помощью netstat -at

# netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:http 0.0.0.0:* LISTEN tcp 0 0 localhost:webcache 0.0.0..0.0.0:* LISTEN tcp 0 0 localhost:domain 0.0.0.0:* LISTEN

Перечисление всех UDP-портов с помощью netstat -au

# netstat -au Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 andreyex..ru:50053 google-public-dn:domain ESTABLISHED

2. Список сокетов, которые находятся в состояние прослушмвания

Список только прослушивающих портов с помощью netstat -l

# netstat -l Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:http 0.0.0.0:* LISTEN tcp 0 0 localhost:webcache 0.0.0..0.0.0:* LISTEN tcp 0 0 localhost:domain 0.0.0.0:* LISTEN

Список только прослушивающихся TCP портов с помощью netstat -lt

# netstat -lt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:http 0.0.0.0:* LISTEN tcp 0 0 localhost:webcache 0.0.0..0.0.0:* LISTEN tcp 0 0 localhost:domain 0.0.0.0:* LISTEN

Список только прослушивающихся UDP портов с помощью netstat -lu

# netstat -lu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 сайт:domain 0.0.0.0:* udp 0 0 localhost:domain 0.0.0..0.0.0:*

Список только прослушивающихся портов UNIX с помощью netstat -lx

# netstat -lx Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 19693 tmp/core.adm.internal unix 2 [ ACC ] SEQPACKET LISTENING 8723 /run/udev/control unix 2 [ ACC ] STREAM LISTENING 12566 /var/run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 16948 /var/run/fail2ban/fail2ban.sock unix 2 [ ACC ] STREAM LISTENING 19702 tmp/core.sock

3. Показать статистику для каждого протокола

Показать статистику для всех портов с использованием netstat -s

# netstat -s Ip: 190566 total packets received 0 forwarded 0 incoming packets discarded 189618 incoming packets delivered 170462 requests sent out 16 dropped because of missing route Icmp: 74 ICMP messages received 0 input ICMP message failed. ICMP input histogram: destination unreachable: 22 echo requests: 52 .....

Показать статистику для TCP (или) UDP портов с использованием netstat -st (или) -su

# netstat -st # netstat -su

4. PID и названий программ в выводе netstat с помощью команды netstat -p

Опция netstat -p может быть объединена с любым другим вариантом netstat . Это добавит «PID/Название программы» на выходе netstat . Это очень полезно при отладке, чтобы определить, какая программа работает на определенном порту.

# netstat -pt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 localhost:56642 localhost:46846 TIME_WAIT - tcp 0 0 localhost:56642 localhost:46748 TIME_WAIT -

5. Не разрешать хост, порт и имя пользователя в выводе netstat

Если вы не хотите отображать имя хоста, порт или пользователя, используйте netstat с опцией -n. Это будет отображаться в цифрах, и не разрешать имя хоста, имя порта, имя пользователя.

Это также ускоряет выход, так как netstat не выполняет какие-либо просмотров.

# netstat -an

Если вы не хотите один из этих трех пунктов (порт или хост, или пользователя), используйте следующие команды.

# netsat -a --numeric-ports # netsat -a --numeric-hosts # netsat -a --numeric-users

6. Непрерывная печать информации netstat

netstat будет печатать информацию непрерывно каждые несколько секунд.

132.93.178:24080 ESTABLISHED tcp 0 0 localhost:56642 localhost:47258 TIME_WAIT tcp 0 0 localhost:56642 localhost:47150 TIME_WAIT ^C

Выход из печати: Ctrl+C.

7. Найти номера поддерживающей адрес семей в вашей системе

netstat --verbose

В конце концов, вы будете иметь что-то вроде этого.

Netstat: no support for `AF IPX" on this system. netstat: no support for `AF AX25" on this system. netstat: no support for `AF X25" on this system. netstat: no support for `AF NETROM" on this system.

8. Отображение информации о маршрутизации ядра с помощью netstat -r

# netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default gw.msk.ispsyste 0.0.0.0 UG 0 0 0 eth0 213.159.208.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0

Примечание:

Используйте netstat -rn для отображения маршрутов в цифровом формате без разрешения хост-имени.

9. Узнайте, на каком порту работает программа

# netstat -ap | grep ssh (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:28456 0.0.0..132.93..132.93.178:13106 ESTABLISHED 2393/sshd: andreyex tcp6 0 0 [::]:28456 [::]:* LISTEN 779/sshd

Узнайте, какой процесс использует определенный порт:

# netstat -an | grep ":80"

10. Показать список сетевых интерфейсов

# netstat -i Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1555 2765202 0 0 0 86602 0 0 0 BMRU lo 65536 93149 0 0 0 93149 0 0 0 LRU

Отображение расширенной информации об интерфейсах (по аналогии с ifconfig) с использованием netstat -ie:

# netstat -ie Kernel Interface table eth0: flags=4163 mtu 1550 inet 213.159.209.228 netmask 255.255.254.0 broadcast 213.159.209.255 inet6 fe80::5054:ff:fe80:19a4 prefixlen 64 scopeid 0x20 ether 52:54:00:80:19:a4 txqueuelen 1000 (Ethernet) RX packets 2772322 bytes 189451708 (180.6 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 86767 bytes 137897931 (131.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0