- •Лабораторна робота № 15 взаємодія процесів в ос unix за допомогою іменованих каналів
- •1 Мета роботи
- •2 Основні положення
- •2.1 Способи забезпечення взаємодії процесів в ос unix
- •2.2 Взаємодія поміж процесами за допомогою іменованих каналів
- •2.3 Функції та системні виклики ос unix,
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список рекомендованої літератури
- •Взаємодія процесів в ос unix за допомогою інтерфейсу сокетів
- •1 Мета роботи
- •2 Основні положення
- •2.1 Загальні вимоги до міжпроцесної взаємодії
- •2.2 Програмний інтерфейс сокетів
- •2.3 Приклад використання сокета
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список рекомендованої літератури
- •Лабораторна робота № 18
- •2.1 Утиліта ping
- •2.2 Програма traceroute
- •2.3 Програма ttcp
- •2.4 Програма tcpdump
- •2.5 Програма netstat
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список рекомендованої літератури
- •Створення системи обліку трафіка
- •1 Мета роботи
- •2 Ключові положення
- •2.1 Принципи обліку трафіка
- •2.2 Мова програмування Shell
- •2.2.1 Структура команд
- •2.2.2. Структура команд
- •2.2.3 Групування команд
- •2.2.4 Переспрямовування команд
- •2.3 Брандмауер firewall
- •2.3.1 Можливості ipfw
- •2.3.2 Формат правил ipfw
- •2.4 Мова програмування awk
- •3 Контрольні запитання
- •4 Домашнє завдання
- •5 Лабораторне завдання
- •6 Зміст протоколу
- •7 Список рекомендованої літератури
- •Тексти програм serverfifo та clientfifo
- •Тексти програм socketserver та socketclient
- •Тексти програм servertcp та clienttcp
- •Тексти програм simpletcpserv та simpletcpclient
- •Лістинг програми обліку трафіку
2.5 Програма netstat
Програма 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 надійшли поза чергою.