русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Утиліта ping


Дата додавання: 2014-11-28; переглядів: 1207.


 

Основні призначення утиліти ping — перевірка наявності зв’язку поміж двома хостами. Утиліта не використовує протоколу TCP або UDP, тому не потребує жодного добре відомого порту. Для перевірення наявності зв’язку ping користується функцією луна-контролю, вбудованою в протокол ICMP, який вважається частиною IP. На рис. 2.1 наведено структуру пакета, який надсилає ping.

 

 

 
 
ІР-заголовок Луна-повідомлення запит/відповідь для протоколу ICMP
20 байт 8 + n байт

 

 


Рисунок 2.1 — Формат пакета ping

 

 

Кількість додаткових байтів n в пакеті ping обирається для OC UNIX дорівнюваним 56, але може бути скоригована за допомогою прапорця -s. За умовчанням у більшості версій додаткові дані — це циклічно переставлювані по колу дані.

На рис. 2.2 наведено пакет луна-повідомлення запит/відповідь протоколу ICMP.


 

 
 

 


Рисунок 2.2 — Пакет луна-повідомлень запит/відповідь протоколу ICMP

 

 

Поля Ідентифікатор та Порядковий номер не використовуються ані в луна-запиті, ані в луна-відповіді, тому їх можна задіяти для ідентифікування отриманих ICMP-відповідей. Для IP-дейтаграм немає спеціального порту, вони можуть доставлятися кожному процесові, який відкрив простий (raw) сокет із зазначенням протоколу ICMP. Утиліта ping розміщує свій ідентифікатор процесу у полі Ідентифікатор, завдяки чому кожен запущений екземпляр здатен відрізнювати відповіді на свої запити. У полі Порядковий номер ping розміщує значення лічильника, щоби зв’язати відповідь із запитом. Саме це значення ping показує як icmp-seg. Проілюструємо на прикладі роботу ping.

Припустімо, що треба зв’язатися з хостом А за допомогою програми telnet, але з’єднання не встановлюється через тайм-аут. Причин тому може бути кілька: проблема на ділянці мережі поміж двома хостами, не працює сам хост А, не запущено сервер telnet, не підтримується стек TCP/IP на хості. Перш за все перевірюється, чи можна дістатися хоста А. Якщо робота йде нормально, то мережа є в порядку, а проблема скоріш за все в самому хості А. Якщо неможливо отримати відповідь від хоста А, то треба “пропінгувати” найближчий маршрутизатор, аби зрозуміти, чи можна дістатися межі власної мережі. Якщо все проходить успішно, то далі слід скористатися програмою traceroute, щоб виявити маршрутизатор, який “зазбоїв”, або зробити припущення щодо цього. Оскільки утиліта ping працює на рівні протоколу IP, вона не залежить від правильності конфігурації TCP чи UDP, тому іноді є корисним пропінгувати власний хост з метою перевірки власного мережного програмного забезпечення. Для цього ping треба вказати спочатку зворотну адресу — localhost(127.0.0.1), а потім адреси одного чи кількох мережних інтерфейсів, аби переконатись у тому, що їх правильно сконфігуровано. На рис.2.3 подано результат короткого прогону ping.


 

%ping 195.5.27.1

PING 195.5.27.1 (195.5.27.1): 56 data bytes

64 bytes from 195.5.27.1: icmp_seq=0 ttl=63 time=5.397 ms

64 bytes from 195.5.27.1: icmp_seq=1 ttl=63 time=5.486 ms

64 bytes from 195.5.27.1: icmp_seq=2 ttl=63 time=5.208 ms

64 bytes from 195.5.27.1: icmp_seq=3 ttl=63 time=5.162 ms

64 bytes from 195.5.27.1: icmp_seq=4 ttl=63 time=5.274 ms

64 bytes from 195.5.27.1: icmp_seq=5 ttl=63 time=5.166 ms

64 bytes from 195.5.27.1: icmp_seq=6 ttl=63 time=5.221 ms

64 bytes from 195.5.27.1: icmp_seq=7 ttl=63 time=5.225 ms

64 bytes from 195.5.27.1: icmp_seq=8 ttl=63 time=5.211 ms

64 bytes from 195.5.27.1: icmp_seq=9 ttl=63 time=13.853 ms

64 bytes from 195.5.27.1: icmp_seq=10 ttl=63 time=5.134 ms

^C

--- 195.5.27.1 ping statistics ---

11 packets transmitted, 11 packets received, 0% packet loss

round-trip min/avg/max/stddev = 5.134/6.031/13.853/2.476 ms

 

Рисунок 2.3 — Короткий прогін ping

 

Період колового обернення, RTT, для різних пакетів мало змінюється й залишається у межах 500 мс. RTT змодифіковується в діапазоні від 480,137 мс до 598,534 мс зі стандартним відхиленням 40 мс.

При більш тривалому прогоні (близько двох хвилин) результат істотно не зміниться й можна припустити, що навантаження на мережу є незмінне. Значний розкид RTT — це зазвичай ознака того, що навантаження змінюється. При підвищенні навантаження збільшується довжина черги в маршрутизаторі, а разом з нею й RTT. При зменшенні навантаження черга зменшується, що призводить до зменшення RTT. Спостерігаючи за значеннями та дисперсією RTT, а також кількістю загублених відповідей, можна зробити висновки щодо трафіка в мережі.

 


<== попередня лекція | наступна лекція ==>
Зміст протоколу | Програма traceroute


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн