tcp 0 0 localhost:32776 localhost:58000 TIME_WAIT
tcp 34767 0 localhost:55000 localhost:32773 ESTABLISHED
tcp 0 115680 localhost:32773 localhost:55000 ESTABLISHED
udp 0 0 localhost:61000 localhost:60000 ESTABLISHED
udp 684 0 *:60000 *:*
Для каждого сокета в интернет-домене доступна следующая информация.
• Proto — протокол сокета, например tcp или udp.
• Recv-Q — количество непрочитанных байтов во входящем буфере локального сокета. В случае с UDP в этом поле помимо самих данных учитываются заголовки датаграммы и другая метаинформация.
• Send-Q — количество байтов, ожидающих отправки в исходящем буфере сокета. По аналогии с предыдущим полем здесь учитываются заголовки датаграммы и другая метаинформация, если используется протокол UDP.
• Local Address — адрес в формате IP-адрес: порт, к которому привязан сокет. По умолчанию обе составляющие адреса отображаются в виде имен (если они были найдены для соответствующих IP-адреса и порта). Звездочка (*) в имени сетевого узла обозначает универсальный адрес.
• Foreign Address — адрес удаленного сокета, к которому подключено локальное приложение. Строка *:* указывает на отсутствие удаленного адреса.
• State — текущее состояние сокета. Все допустимые состояния для протокола TCP перечислены в подразделе 57.6.3.
Более подробную информацию см. на странице netstat(8) руководства.
Различные файлы в каталоге /proc/net (доступные только в Linux) позволяют получить большинство из тех данных, которые выводит утилита netstat. По очевидным причинам для этих файлов выбраны следующие имена: tcp, udp, tcp6, udp6 и unix. Дополнительную информацию см. на странице proc(5) руководства.
Программа tcpdump является полезным отладочным инструментом, который позволяет администратору наблюдать за данными, передаваемыми по сети, в режиме реального времени, генерируя текстовые аналоги диаграмм, приведенных на рис. 57.3. Несмотря на свое название, эта программа может использоваться для вывода любых пакетов, применяемых в TCP/IP (например, TCP-сегментов, UDP-датаграмм или ICMP-пакетов). Для каждой сети выводятся такие сведения, как временные отметки, исходный и конечный IP-адреса и дополнительные подробности, относящиеся к тому или иному протоколу. Отслеживаемые пакеты можно фильтровать по типу протокола, исходному и конечному IP-адресам, номеру порта и т. д. Полное описание утилиты tcpdump содержится на одноименной странице руководства.
Программа wireshark (ранее известная как ethereal; www.wireshark.org) по своим функциям похожа на tcpdump, но выводит информацию с помощью графического интерфейса.
Для каждого TCP-сегмента программа tcpdump выводит отдельную строку следующего вида:
Ниже представлены значения этих полей.
• src — исходные IP-адрес и порт.
• dst — конечные IP-адрес и порт.
• flags — поле может быть пустым или содержать следующие буквы, каждая из которых относится к соответствующему управляющему биту (см. подраздел 57.5.1): S (SYN), F (FIN), P (PSH), R (RST), E (ECE) и C (CWR).
• data-seqno — диапазон порядковых номеров, охватываемый байтами в данном пакете.
Диапазон порядковых номеров по умолчанию выводится относительно первого байта, отслеженного в текущем канале потока данных. Параметр — S программы tcpdump позволяет выводить порядковые номера в виде абсолютных значений.
• ack — строка вида ack num, обозначающая порядковый номер следующего байта, который должен прийти с противоположного конца соединения.
• window — строка вида win num, обозначающая количество байтов, доступных во входящем буфере для передачи данных в противоположном направлении текущего соединения.
• urg — строка вида urg num, сигнализирующая о том, что в текущем сегменте находится важная информация с заданным сдвигом.
• options — строка описывает все параметры TCP-соединения, содержащиеся в сегменте.
Поля src, dst и flags выводятся всегда, а остальные — по необходимости.
В сессии командной строки, представленной ниже, показан пример использования утилиты tcpdump для мониторинга данных, которыми обмениваются клиент (запущенный на компьютере pukaki) и сервер (запущенный на компьютере tekapo). Мы задействуем два параметра, делающие вывод более компактным: — t предотвращает отображение временных отметок, а — N позволяет опустить полные доменные имена компьютеров. К тому же, поскольку мы не стали углубляться в параметры TCP-соединения, из вывода утилиты tcpdump было убрано поле options.
Команда tcpdump фильтрует данные по порту 55555, так как на нем работает наш сервер. В вывод попали три сегмента, обмен которыми происходит во время установки соединения:
$ tcpdump — t — N 'port 55555'
IP pukaki.60391 > tekapo.55555: S 3412991013:3412991013(0) win 5840
IP tekapo.55555 > pukaki.60391: S 1149562427:1149562427(0) ack 3412991014 win 5792