Програма netstat надає можливість отримувати інформацію про статистику щодо об’єктів у мережі, яку веде ядро операційної системи. Програма netstat подає відомості про активні сокети, зокрема сокети з доменів inet (AF_INET) та UNIX (AF_LOCAL чи AF_UNIX). Сім’ю протоколів можна зазначити за допомогою опції -d. За умовчанням сервери, сокети яких пов’язано з адресою INADDR_ANY, не виводяться, але цей режим можна вимкнути за допомогою опції -а. Наприклад, команда
$ netstat -f inet
викличе TCP/UDP-сокети; команда
$ netstat -af inet
викличе усі сервери.
Внаслідок цього буде виведено такий рядок:
$ netstat -af inet
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (State)
tcp 0 0 *.6000 *.* LISTEN
tcp 0 0 *.Smtp *.* LISTEN
·
·
·
udp 0 0 *.udpecho *.*
·
·
·
“LISTEN” в останній колонці означає, що сервер очікує на запит на з’єднання від клієнта.
За допомогою netstat -i можна одержати інформацію про інтерфейси:
$ netstat -i
Name MTU Network Address Ipkts Jerrs Opkts Ocrrs Coll
cd0 1500 <Link> 00.00.c0.54.5373 40841 0 5793 0 0
cd0 1500 172.30 bsd 40841 0 5793 0 0
tun0* 1500 <Link> 397 0 451 0 0
tun0* 1500 205.184.142 205.184.142.171 397 0 451 0 0
sl0* 552 <Link> 0 0 0 0 0
lo0 16384 <Link> 353 0 353 0 0
lo0 16384 127 local host 353 0 353 0 0
Вочевидь, що в машині bsd сконфігуровано чотири інтерфейси. Перший — ed0 — адаптер мережі Еthernet, який входить до приватної мережі 172.30.0.0. Адреса 00.00.с0.54 73 — перша з МАС-адрес (media access control — контроль доступу до носія) даного мережного адаптера. Через цей інтерфейс пройшов 40841 вхідний пакет та 5793 вихідних. Не було зареєстровано ані помилок, ані колізій. MTU становить 1500 байтів — максимальне значення для мереж Ethernet.
Інтерфейс tun0 — телефонний канал, яким зв’язок здійснюється за протоколом РРР. Він належить до мережі 205.184.142.0. MTU для цього інтерфейсу також становить 1500 байтів.
Інтерфейс sl0 – це телефонний канал, яким зв’язок здійснюється за протоколом SLIP (Serial Line Internet Protocol), котрий використовується надто рідко.
Зворотний інтерфейс — lo0; якщо задати опції -і, -b, -d, то виведеться кількість байтів, які пройшли через інтерфейс в обидва боки, або кількість відкинутих пакетів.
Програма netstat може вивести маршрутну таблицю. Для цього треба призначити опцію -n, щоб отримати ІР-адреси замість символічних імен, наприклад:
$ netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
Default 163.179.44.41 U6Sc 2 0 tun0
127.0.0.1 127.0.0.1 UH 1 34 lo0
163.179.44.41 205.184.142.171 UH 3 0 tun0
172.30 link#1 UC 0 0 ed
172.30.0.1 0:0:c0:54:53:73 UHLW 0 132 lo0
У першій колонці розміщено пункт призначення маршрута; це може бути конкретний хост, мережа чи то маршрут за умовчанням.
У колонці Flags виводяться різні прапорці, більша частка з яких залежить від реалізації:
U – маршрут задіяно (“UP”);
H – маршрут до хосту; якщо цей прапорець відсутній, йдеться про маршрут до мережі (чи підмережі);
G – непрямий маршрут, тобто пункт призначення не позв’язано безпосередньо з даним хостом, до нього треба діставатися через шлюз.
Прапорець Н зазначає, що адреса у першій колонці є повною ІР-адресою хосту; якщо прапорець Н відсутній, то ідентифікатор хосту в цій колонці відсутній, а отже, він – адреса мережі. Прапорець G позначає, чи можна досягти адреси, зазначеної в першій колонці, безпосередньо з даного хосту чи необхідно пройти через проміжний маршрутизатор. Можливо, що в певному випадку водночас буде проставлено обидва прапорці, це означатиме, що один з хостів виступає в ролі шлюзу щодо іншого. Вміст колонки Gateway залежить від того, чи є в ній прапорець G. Якщо маршрут є непрямий (прапорець G є), то в колонці Gateway міститься ІР-адреса наступного шлюзу. Якщо прапорця G немає, то виводиться інформація про те, як досягти безпосередньо під’єднаного пункту призначення. У більшості реалізацій це є завжди ІР-адреса інтерфейсу, до якого під’єднано пункт призначення; це може бути також МАС-адреса: в такому разі встановлюється прапорець L.
Колонка Refs вміщує лічильник надсилань на маршрут, тобто кількість активних користувачів цього маршруту.
Колонка Use зазначає, скільки пакетів було передано цим маршрутом, а колонка Netif вміщує ім’я асоційованого мережного інтерфейсу.
Перший рядок у видаванні програми описує маршрут за умовчанням. Саме ним передаються дейтаграми, коли в маршрутній таблиці немає більш точного маршрута. Шлюз для цього маршрута має адресу 163.179.44.41, куди й надсилається дейтаграма. Рядок 3 зазначає, що є прямий маршрут до хосту 163.179.44.41, а надсилати йому дейтаграми слід через інтерфейс з ІР-адресою 205.184.142.171. Рядок 2 у видаванні — це маршрут для зворотньої адреси (127.0.0.1). Оскільки це адреса хосту, — встановлюється прапорець Н. Оскільки хост під’єднано безпосередньо, то встановлено й прапорець G. У колонці Gateway присутня адреса інтерфейсу lo0. У рядку 4 зазначено маршрут до локальної мережі Ethernet. У колонці Gateway розміщено рядок Link#1, що свідчить про те, що на машині bsd встановлено ОС BSD. У решті систем було б зазначено ІР-адресу інтерфейсу, підімкненого до локальної мережі (172.30.0.1).
За допомогою програми netstat можна отримати статистику протоколів (рис. 2.8). За наявності опції -i netstat видає статистичні дані за протоколами IP, ICMP, IGMP, UDP та ТСР. За допомогою опції -p протокол можна обрати. Наприклад, для отримання статистики за протоколом UDP треба ввести команду:
# netstat -sp udp
udp:
82 дейтаграми отримано
0 з неповним заголовком
0 з помилковим значенням у полі довжини даних
0 з помилковою контрольною сумою
1 відкинуто через відсутність сокета
0 відкинуто широкомовних/групових дейтаграм через відсутність сокетів
0 відкинуто через переповнення буфера сокета
0 не для хешованого блока керування протоколом
81 доставлено
82 відправлено дейтаграм
Нижче наведено результати видавання 45 покажчиків при запусканні netstat -ssp tcp:
tcp:
446 пакетів надіслано
190 пакетів даних (40474 байти)
213 пакетів, що вміщують лише ack (166 відкладених)
18 пакетів з оновленням вікна
32 контрольних пакети
405 пакетів прийнято
195 ack (на 40488 байтів)
12 повторних ack
302 пакети (211353 байти) отримано по порядку
10 пакетів – повних дублікатів (4380 байтів)
22 пакети не за порядком (16114 байтів)
2 пакети з оновленням вікна
20 запитів на з’єднання
2 приймання з’єднання
13 з’єднань встановлено (разом з прийнятими)
22 з’єднання закрито (разом 0 скинутих)
3 з’єднання за вимкнення оновили RTT в кешу
3 з’єднання за вимкнення оновили дисперсію RTT в кешу
2 ембріональних з’єднання скинуто
193 сегменти оновили rtt (з 201 спроб)
31 правильне передбачення заголовка ack
180 правильних передбачень заголовка пакета з даними
Рисунок 2.8 — Інформація про статистику протоколів
Ця статистика отримана після перезавантаження машини bsd і наступного надсилання та отримання кількох повідомлень електронною поштою, а також читання кількох телеконференцій; з 405 отриманих пакетів 10 – дублікати, а 22 надійшли поза чергою.
Контрольні запитання
1 За яким принципом перевіряє утиліта ping наявність зв’язку поміж двома хостами?
2 На рівні якого протоколу працює утиліта ping?
3 Яку інформацію про стан мережі виводить ping?
4 Які дослідження в мережі можна виконувати за допомогою програми traceroute?
5 За яким алгоритмом працює програма traceroute?
6 За допомогою якої функції програма traceroute виявляє ім’я маршрутизатора?
7 Для яких цілей використовується програма ttcp?
8 Які опції програми ttcp можна встановлювати та з якою метою?
9 Як залежить час передавання даних від розміру буфера?
10 З якою метою використовується програма tcpdump?
11 Які права доступу треба мати, щоби запустити програму tcpdump?
12 Яку інформацію виводить tсpdump при трасуванні за протоколами DNS та TCP?
13 Про які логічні об’єкти в мережі надає інформацію програма netstat?
14 Як побудувати схему маршрута за маршрутною таблицею?
15 Як оцінити продуктивність мережі за допомогою програми ttcp?