Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Лабораторна робота № 7
Протокол міжмережевих керуючих повідомлень ICMP.
Утиліти ping і traceroute
з дисципліни
”Комп’ютерні мережі”
Дослідження ймовірнісно-часових характеристик мережі з використанням утиліти ping, визначення послідовності маршрутизаторів, через які проходив IP-пакет на шляху до пункту призначення з використанням утиліти traceroute.
Теоретичні відомості
Для побудови утиліт ping і traceroute використані повідомлення протоколу ICMP.
Протокол ICMP
Протокол міжмережевих керуючих повідомлень ICMP (Internet Control Message Protocol) є невід’ємною складовою стеку протоколів TCP/IP. Специфікація протоколу міститься в документі RFC 792.
Найбільш типовим застосуванням протоколу ICMP є передача маршрутизатором кінцевому вузлу повідомлень про помилки та нештатні ситуації, що мали місце при передачі IP-пакету.
З точки зору мережевої архітектури протокол ICMP працює над IP-протоколом. Кожне повідомлення ICMP передається в полі даних IP-пакету. Рисунок 1 ілюструє структуру IP-пакету, що використовується для передачі ICMP-повідомлення. При цьому в полі Protocol заголовку IP-пакету вказується код протоколу ICMP.
Існують різні типи повідомлень ICMP. Кожен тип має свій формат, але заголовки кожного з них починаються з спільних 3-х полів:
TYPE - однобайтне поле, що визначає тип повідомлення;
CODE - однобайтне поле коду, яке більш тонко диференціює тип повідомлення;
CHECKSUM - двобайтне поле контрольної суми.
Крім того заголовок ICMP-повідомлення містить перші 8 байт IP-дейтаграми, що була причиною генерації ICMP-повідомлення.
В таблиці 1 наведені приклади типів ICMP-повідомлень.
Тип Kод Опис
0 0 Ехо-відповідь на команду ping (Echo Reply)
3 0 Мережа-адресат недосяжна (Destination network unreachable)
3 1 Хост-адресат недосяжний (Destination host unreachable)
3 2 Протокол адресата недоступний (Destination protocol unreachable)
3 3 Порт адресата недоступний (Destination port unreachable)
3 6 Мережа призначення невідома (Destination network unknown)
3 7 Хост-адресат невідомий (Destination host unknown)
3 9 Взаємодія з мережею-адресатом заборонена адміністративно
3 10 Взаємодія з хостом-адресатом заборонена адміністративно
3 11 Мережа-адресат недоступна для заданого класу сервісу
3 12 Хост-адресат недоступний для заданого класу сервісу
4 0 Подавлення джерела (Source Quench)
8 0 Запит еха (Echo Request)
11 0 Час життя дейтаграми закінчився (Time Exceeded for Datagramm)
12 0 Некоректний IP-заголовок (Parametr Problem on a Datagramm)
В утиліті ping використовуються ICMP-повідомлення Запит еха (Echo Request) – тип = 8, код = 0 і Ехо-відповідь на команду ping (Echo Reply) - тип = 0, код = 0.
Утиліта ping
Утиліта ping (Packet Internet Groper) є одним з основних засобів, що використовуються для відлагодження мереж, і служить для примусового виклику відповіді конкретної машини.
При виконанні процедури ping ехо-запит (ICMP-повідомлення тип = 8, код = 0) з часовою міткою в полі дані посилається адресатові. Якщо адресат активний, він приймає IP-пакет, міняє місцями адресу відправника й одержувача і посилає його назад (ICMP-повідомлення тип = 0, код = 0). Вузол-відправник, отримавши цю відповідь, може порівняти часову мітку, записану ним у пакет, з поточним показанням внутрішнього годинника і визначити час обороту пакету RTT (round trip time).
Час передачі ICMP-запиту в загальному випадку не дорівнює часу передачі відповіді. Це пов'язано з можливими змінами в каналі, а також тим, що шляхи їх передачі можуть бути різними.
Успішний результат означає, що мережа знаходиться в робочому стані, живлення зондованої машини включене і машина не відмовила ("не висить").
Утиліта ping є в операційній системі UNIX, в більшості реалізацій стеку TCP/IP для інших операційних систем. У Windows утиліта ping є в комплекті постачання, але є програмою, що виконується в сеансі DOS з командного рядка.
Запити утиліти ping передаються протоколом ICMP (Internet Control Message Protocol). Отримавши такий запит, програмне забезпечення, що реалізує протокол IP у адресата, негайно посилає ехо-відповідь. Ехо-запити посилаються задану кількість разів (ключ -n) або за замовчанням до тих пір, поки користувач не введе команду переривання (Ctrl+C або Del). В результаті користувачу виводяться статистичні дані про втрачені ехо-відповіді і середній час реакції мережі на запити.
Зверніть увагу
Оскільки з утиліти ping починається атака хакера, деякі сервери в цілях безпеки можуть не посилати ехо-відповіді (наприклад, www.microsoft.com). Не чекайте марно, введіть команду переривання.
Формат команди:
ping [-t][-a][-n число][-l розмір][-f][-i TTL][-v TOS] [-r число][-s число] [[-j список вузлів] ¦ [-k список вузлів]][-w таймаут] ім'я вузла.
Параметри утиліти ping
Ключі
Функції
-t
Відправка пакетів на вказаний вузол до команди переривання. Для виводу статистики і продовження натисніть <Сtrl>+<Break>, для припинення - <Сtrl>+<C>.
-a
Визначення адрес по іменах вузлів
-n
Число запитів, що відправляються
-l
Розмір буфера відправки
-f
Установка прапора, що забороняє фрагментацію пакету
-i TTL
Встановлення часу життя пакету (поле "Time To Live")
-v TOS
Встановлення типу служби (поле "Type Of Service")
-r
Запис маршруту для вказаного числа переходів
-s
Штамп часу для вказаного числа переходів
-j список вузлів
Вільний вибір маршруту за списком вузлів
-k список вузлів
Жорсткий вибір маршруту за списком вузлів
-w інтервал
Інтервал очікування кожної відповіді в мілісекундах
На практиці більшість опцій у форматі команди можна опустити, без опцій запис в командному рядку має вигляд: ping ім'я вузла.
Приклад:
C:\>ping ukr.net
Pinging ukr.net [212.42.64.8] with 32 bytes of data:
Reply from 212.42.64.8: bytes=32 time=721ms TTL=53
Reply from 212.42.64.8: bytes=32 time=1131ms TTL=53
Request timed out.
Request timed out.
Ping statistics for 212.42.64.8:
Packets: Sent = 4, Received = 2, Lost = 2 (50% loss),
Approximate round trip times in milli-seconds:
Minimum = 721ms, Maximum = 1131ms, Average = 463ms
Ключ t
Ключ t примушує утиліту ping посилати запити в нескінченному циклі до її переривання натисненням комбінації клавіш <CTRL-C>. Комбінація <Ctrl-break> не перериває процес, а виводить біжучу статистику. Цей ключ дуже зручний для очікування моменту пробудження завислого сервера.
Ключ w
Ключ –w використовується для задання інтервалу очікування ехо-відповіді в мілісекундах (за замовчанням 20 секунд). Якщо ехо-відповідь не буде отримана протягом вказаного часу, утиліта ping повідомить: «Перевищений інтервал очікування для запиту». Причиною цього можуть бути непрацездатність сервера або пошкодження мережі.
Утиліта traceroute (tracert)
Програма traceroute дозволяє виявляти послідовність шлюзів, через які проходить IP-пакет на шляху до пункту свого призначення. У цієї команди є багато опцій, більшість з яких застосовуються системними адміністраторами украй рідко.
Прикладом застосування ICMP-повідомлень є програма Traceroute, що дозволяє прослідкувати маршрут від одного хоста до іншого. Щоб визначити імена і адреси маршрутизаторів на шляху від джерела до отримувача, програма Traceroute на хості-джерелі посилає серію звичайних IP-дейтаграм. В першій дейтаграмі значення поля часу життя TTL = 1, в другій TTL = 2, в третій TTL = 3 і т.д. Коли n-а дейтаграма прибуває на n-й маршрутизатор, він бачить, що час життя дейтаграми закінчився. У відповідності з правилами протоколу IP маршрутизатор відкине цю дейтаграму і відсилає джерелу ICMP-повідомлення (тип 11, код 0). Це повідомлення містить ім’я маршрутизатора і його адресу. Оскільки для кожної посланої дейтаграми на хості-джерелі був запущений таймер, програма Traceroute дає можливість визначити час обороту пакету.
Формат команди:
tracert [-d] [-h макс число] [-j список вузлів] [-w інтервал] ім'я_машини
Параметри утиліти tracerout (tracert)
Ключі
Функції
-d
Без дозволу в імена вузлів.
-h
Максимальне число стрибків при пошуку вузла
-j
Вільний вибір маршруту за списком вузлів
-w
Інтервал очікування кожної відповіді в мілісекундах
Ім’я_машини може бути задане в символьній або числовій формі. Вихідна інформація є списком машин, починаючи з першого шлюзу і кінчаючи пунктом призначення. Крім того, показаний повний час проходження кожного шлюзу.
Приклад:
:\>tracert vdu.edu.ua
Tracing route to vdu.edu.ua [62.149.13.121]
over a maximum of 30 hops:
1 <10 ms <10 ms <10 ms 192.168.9.15
2 <10 ms <10 ms <10 ms 192.168.9.1
3 * * * Request timed out.
4 * * * Request timed out.
5 * * 2844 ms router.polynet.lviv.ua [217.9.2.2]
6 2995 ms * * if-e0-0-bone.rns.lviv.ua [217.9.0.65]
7 * 2153 ms 1913 ms fe2-v16.cs1.lv.wnet.ua [217.20.168.18]
8 2964 ms * * fe0-0-1.cr1.lv.wnet.ua [217.20.161.10]
9 * * * Request timed out.
10 * * * Request timed out.
11 * 2934 ms 1733 ms ge0-v6.br3.kv.wnet.ua [217.20.160.111]
12 * * * Request timed out.
13 * * * Request timed out.
14 3365 ms 1372 ms 220 ms pleso.net [62.149.13.121]
Trace complete.
Супутникові канали вносять біля 500 мс затримки через час розповсюдження сигналу до супутника і в зворотньому напрямку.
Команда traceroute працює шляхом установки поля часу життя TTL (числа переходів) вихідного пакету так, щоб цей час закінчувався до досягнення пакетом пункту призначення. Коли час життя закінчиться, поточний шлюз відправить повідомлення про помилку на машину-джерело. Кожен приріст поля часу життя дозволяє пакету пройти на один шлюз далі.
Зверніть увагу
Максимальне значення TTL за умовчанням приймається рівним 255.
Команда traceroute посилає для кожного значення TTL три пакети. Якщо проміжний шлюз розподіляє трафік по декількох маршрутах, то ці пакети можуть повертатися різними машинами. У цьому випадку на друк виводяться вони всі. Деякі системи не посилають повідомлень про пакети, час життя яких закінчився, а деякі посилають повідомлення, які поступають назад на машину-джерела тільки після того, як закінчився час їх очікування командою traceroute. Ці шлюзи позначаються зірочками. Навіть якщо конкретний шлюз визначити не можна, traceroute найчастіше зможе побачити наступні за ним вузли маршруту.
Завдання на лабораторну роботу
За допомогою команди ping перевірити стан зв'язку з вузлами:
www.iknit.lp.edu.ua (каф. АСУ);
www.ukr.net;
www.ntu-kpi.kiev.ua(КПІ);
vdu.edu.ua (ВДУ);
www.mail.ru (Москва);
www.novol.pl (Польща);
www.newslink.org (США).
За бажанням 5 останніх вузлів можна замінити іншими.
Число запитів, що відправляються, рекомендується взяти рівним 20.
Результати досліджень представити в таблиці:
Ім’я Домену
IP-адреса
Країна
Число втрачених запитів %
Середній час проходження запиту, мс
255 - TTL
Представити графіки статистичної інформації.
Провести трасування вузлів www.ukr.net, vdu.edu.ua, www.novol.pl, www.newslink.org або будь-яких інших за бажанням, але не менше 7-и вузлів. Результати протоколювати у файл st.log.
Описати маршрут проходження до двох вибраних вузлів (країна, місто, мережа).
Представити графіки часу проходження маршрутизаторів (шлюзів) для кожного віддаленого вузла (для 3-х пакетів), вказати найбільш вузькі місця в мережі.
Скорочений приклад звіту
Результати тестування.
Таблиця з результатами досліджень згідно п. 2.
3. Графіки статистичної інформації згідно п. 3.
C:\>ping ukr.net
Pinging ukr.net [212.42.64.8] with 32 bytes of data:
Reply from 212.42.64.8: bytes=32 time=721ms TTL=53
Reply from 212.42.64.8: bytes=32 time=566ms TTL=53
Reply from 212.42.64.8: bytes=32 time=656ms TTL=53
Request timed out.
Request timed out.
Reply from 212.42.64.8: bytes=32 time=345ms TTL=53
Reply from 212.42.64.8: bytes=32 time=655ms TTL=53
Reply from 212.42.64.8: bytes=32 time=1131ms TTL=53
Request timed out.
Request timed out.
Ping statistics for 212.42.64.8:
Packets: Sent = 10, Received = 6, Lost = 4 (40% loss),
Approximate round trip times in milli-seconds:
Minimum = 345ms, Maximum = 1131ms, Average = 463ms
Лістинг проведеного трасування вузлів.
St.log
C:\>tracert ukr.net
Tracing route to ukr.net [212.42.64.8]
over a maximum of 30 hops:
1 <10 ms <10 ms <10 ms 192.168.9.15
2 <10 ms <10 ms 10 ms 192.168.9.1
3 30 ms 20 ms 30 ms netsurfer-ppp1.lp.lviv.ua [192.168.22.1]
4 20 ms 20 ms 20 ms vega.lp.lviv.ua [192.168.0.1]
5 30 ms 20 ms 20 ms router.polynet.lviv.ua [217.9.2.2]
6 30 ms 10 ms 20 ms if-e0-0-bone.rns.lviv.ua [217.9.0.65]
7 20 ms 20 ms 20 ms fe2-v16.cs1.lv.wnet.ua [217.20.168.18]
8 20 ms 30 ms 120 ms fe0-0-1.cr1.lv.wnet.ua [217.20.161.10]
9 390 ms 191 ms 30 ms pos0-2-0.cr1.kv.wnet.ua [217.20.161.62]
10 40 ms 30 ms 30 ms ge0.dr3.kv.wnet.ua [217.20.160.143]
11 50 ms 40 ms 30 ms ge0-v6.br3.kv.wnet.ua [217.20.160.111]
12 40 ms 30 ms 40 ms ukrnet-gw.ix.net.ua [195.35.65.8]
13 40 ms 60 ms 60 ms www.ukr.net [212.42.64.8]
Trace complete.
C:\>tracert iknit.lp.edu.ua
Tracing route to iknit.lp.edu.ua [217.9.2.4]
over a maximum of 30 hops:
1 <10 ms 10 ms <10 ms 192.168.9.15
2 <10 ms <10 ms 10 ms 192.168.9.1
3 611 ms 1031 ms 681 ms netsurfer-ppp1.lp.lviv.ua [192.168.22.1]
4 150 ms 30 ms 40 ms vega.lp.lviv.ua [192.168.0.1]
5 401 ms 430 ms 541 ms eaux.polynet.lviv.ua [217.9.2.4]
Trace complete.
Опис маршруту проходження трасування.
Графіки часу проходження шлюзів (по кількості вузлів) з аналізом вузьких місць мережі
:\>tracert www.ntu-kpi.kiev.ua
Tracing route to www.ntu-kpi.kiev.ua [195.245.194.35]
over a maximum of 30 hops:
1 <10 ms <10 ms <10 ms 192.168.9.15
2 <10 ms <10 ms <10 ms 192.168.9.1
3 300 ms 261 ms 20 ms netsurfer-ppp1.lp.lviv.ua [192.168.22.1]
4 10 ms 20 ms 10 ms vega.lp.lviv.ua [192.168.0.1]
5 20 ms 30 ms 30 ms router.polynet.lviv.ua [217.9.2.2]
6 40 ms 40 ms 50 ms if-e0-0-bone.rns.lviv.ua [217.9.0.65]
7 110 ms 30 ms 30 ms fe2-v16.cs1.lv.wnet.ua [217.20.168.18]
8 30 ms 31 ms 30 ms fe0-0-1.cr1.lv.wnet.ua [217.20.161.10]
9 50 ms 50 ms 60 ms pos0-2-0.cr1.kv.wnet.ua [217.20.161.62]
10 50 ms 60 ms 30 ms ge0.dr3.kv.wnet.ua [217.20.160.143]
11 30 ms 30 ms 70 ms ge0-v6.br3.kv.wnet.ua [217.20.160.111]
12 80 ms 80 ms 40 ms uran-gw.ix.net.ua [195.35.65.49]
13 60 ms 50 ms 70 ms kpi-gw.ntu-kpi.kiev.ua [195.245.194.13]
14 60 ms 60 ms 60 ms www.ntu-kpi.kiev.ua [195.245.194.35]
Trace complete.
Як видно з графіку, найбільш вузьким місцем проходження пакетів є вузол netsurfer-ppp1.lp.lviv.ua так як там пакети проводять найбільше часу
Зміст звіту
Результати тестування.
Таблиця з результатами досліджень згідно п. 2.
Графіки статистичної інформації згідно п. 3.
Лістинг проведеного трасування вузлів.
Опис маршруту проходження трасування.
Графіки часу проходження шлюзів (по кількості вузлів) з аналізом вузьких місць мережі.
Література
Буров Є.В. Комп’ютерні мережі: Підручник. - Львів: “Магнолія плюс” 2006 - 264 c.
Олифер В.Г., Олифер Н.А. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов. 3-е изд. - СПб: Питер, 2006. - 958 с.
Карлинг М., Деглер С., Деннис Дж. Системное администрирование Linux.: Пер. с англ.: Уч. пос. – М.: Издательский дом "Вильямс", 2000.
Немет Э., Снайдер Г., Сибасс С., Хейн Т. Р. UNIX: руководство системного администратора: Пер. с англ. – К.: BHV, 1997.
Кирх О. Linux для профессионалов. Руководство администратора сети. – СПб: Издательство "Питер", 2000.