ICMP

ICMP ( англ. Internet Control Message Protocol - Протокол міжмережевих керуючих повідомлень [1]) - мережевий протокол, який входить до стек протоколів TCP / IP. В основному ICMP використовується для передачі повідомлень про помилки та інших виняткових ситуаціях, що виникли при передачі даних, наприклад, запитувана послуга недоступна, або хост, або маршрутизатор не відповідають. Також на ICMP покладаються деякі сервісні функції.


1. Технічні подробиці

Протокол ICMP описаний в RFC 792 (з доповненнями в RFC 950) і є стандартом Інтернету (входить в стандарт STD 5 разом з IP). Хоча формально ICMP використовує IP (ICMP-пакети інкапсулюються в IP пакети), він є невід'ємною частиною IP і обов'язковий при реалізації стека TCP / IP. Поточна версія ICMP для IPv4 називається ICMPv4. В IPv6 існує аналогічний протокол ICMPv6.

ICMP-повідомлення будується з IP -пакетів, згенерованих ICMP-відповідь. IP інкапсулює відповідне ICMP-повідомлення з новим заголовком IP (щоб відправити ICMP-повідомлення назад відправнику) і передає отримані пакети далі.

Наприклад, кожна машина (така, як маршрутизатор), яка перенаправляє IP -пакети, зменшує Time to live (TTL) поля заголовка IP на одиницю, якщо TTL досягає 0, ICMP-повідомлення про перевищення TTL відправляється на джерело пакету.

Кожне ICMP-повідомлення инкапсулируется безпосередньо в межах одного IP -пакета, і, таким чином, як і UDP, ICMP є ненадійним (надійним є TCP).

ICMP заснований на протоколі IP. Його цілі відмінні від цілей транспортних протоколів, таких як TCP і UDP : він, як правило, не використовується для передачі і прийому даних між кінцевими системами. ICMP не використовується безпосередньо в додатках користувачів мережі (виняток становлять інструменти Ping і Traceroute).


2. Використання ICMP-повідомлень

ICMP-повідомлення (тип 12) генеруються при знаходженні помилок у заголовку IP -пакета (за винятком самих ICMP-пакетів, щоб не призвести до нескінченно зростаючого потоку ICMP-повідомлень про ICMP-повідомленнях).

ICMP-повідомлення (тип 3) генеруються маршрутизатором при відсутності маршруту до адресата.

Утиліта Ping, що служить для перевірки можливості доставки IP -пакетів використовує ICMP-повідомлення з типом 8 (луна-запит) і 0 (луна-відповідь).

Утиліта Traceroute, що відображає шлях прямування IP -пакетів, використовує ICMP-повідомлення з типом 11.

ICMP-повідомлення з типом 5 використовуються маршрутизаторами для оновлення записів в таблиці маршрутизації відправника.

ICMP-повідомлення з типом 4 використовуються одержувачем (або маршрутизатором) для управління швидкістю відправки повідомлень відправником.


3. Формат пакета ICMP

Октет 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0-3 Тип Код Контрольна сума
... Дані (формат залежить від значень полів "Код" і "Тип")
Типи пакетів ICMP
Тип Код Повідомлення Дані (довжина, біт)
0 0 Ехо-відповідь
Ідентифікатор (16) Номер послідовності (16)
Дані (змінна)
1, 2 Зарезервовано
3 Адресат недоступний
Не використовується (32)
Заголовок IP, Початок вихідної дейтаграми (64)
0 Мережа недосяжна
1 Вузол недосяжний
2 Протокол недосяжний
3 Порт недосяжний
4 Необхідна фрагментація, але встановлений прапор її заборони (DF)
5 Невірний маршрут від джерела
6 Мережа призначення невідома
7 Вузол призначення невідомий
8 Вузол джерело ізольований
9 Мережа адміністративно заборонена
10 Вузол адміністративно заборонений
11 Мережа недоступна для ToS
12 Вузол недоступний для ToS
13 Комунікації адміністративно заборонені
14 Порушення порядку переваги вузлів
15 Активно відсікання порядку переваги
4 0 Стримування джерела (відключення джерела при переповненні черги)
5 Перенаправлення
Адреса маршрутизатора (32)
Заголовок IP, Початок вихідної дейтаграми (64)
0 Перенаправлення пакетів в мережу
1 Перенаправлення пакетів до вузла
2 Перенаправлення для кожного типу обслуговування (ToS)
3 Перенаправлення пакета до вузла для кожного типу обслуговування
6 0 Альтернативний адресу вузла
7 Зарезервовано
8 0 Ехо-запит
Ідентифікатор (16) Номер послідовності (16)
Дані (змінна)
9 0 Оголошення маршрутизатора
Кількість адрес (8) Розмір елемента (8) Термін дії (16)
Адреса [1] (32)
Перевагу [1] (32)
...
Адреса [N] (32)
Перевагу [N] (32)
10 0 Запит маршрутизатора
Не використовується (32)
11 Час життя дейтаграми минув
Не використовується (32)
Заголовок IP, Початок вихідної дейтаграми (64)
0 Час життя пакету (TTL) вичерпано при транспортуванні
1 Час життя пакета минув при зборці фрагментів
12 Невірний параметр (проблема з параметрами дейтаграми: помилка в IP-заголовку або відсутня необхідна опція)
0 Покажчик говорить про помилку
Покажчик (8) Не використовується (24)
Заголовок IP, Початок вихідної дейтаграми (64)
1 Відсутній необхідна опція
Не використовується (32)
Заголовок IP, Початок вихідної дейтаграми (64)
2 Некоректна довжина
13 0 Запит мітки часу
Ідентифікатор (16) Номер послідовності (16)
Початковий час (32)
Час прийому (32)
Час відправки (32)
14 0 Відповідь з міткою часу
15 0 Інформаційний запит
Ідентифікатор (16) Номер послідовності (16)
16 0 Інформаційний відповідь
17 0 Запит адресної маски
Ідентифікатор (16) Номер послідовності (16)
Маска (32)
18 0 Відгук на запит адресної маски
19 Зарезервовано (для забезпечення безпеки)
20-29 Зарезервовано (для експериментів на стійкість до помилок)
30 Трасування маршруту
Ідентифікатор (16) Не використовується (16)
Кількість хопов вихідного пакета (16) Кількість хопов повертається пакета (16)
Швидкість лінії зв'язку (32)
MTU лінії зв'язку (32)
0 Вихідний пакет успішно відправлений
1 Шлях для вихідного пакету не знайдений, пакет знищений
31 Помилка перетворення датаграми
Покажчик (32)
Заголовок IP і транспортного протоколу вихідної дейтаграми
0 Невідома або незазначені помилка
1 Неможливо конвертувати опцію
2 Невідома обов'язкова опція
3 Непідтримувана обов'язкова опція
4 Неподдежіваемий транспортний протокол
5 Перевищено повна довжина
6 Перевищено довжина заголовка IP
7 Номер транспортного протоколу більше 255
8 Номер порту поза допустимого діапазону
9 Перевищено довжина заголовка транспортного протоколу
10 Перехід через кордон 32 біт і встановлений біт ACK
11 Невідома обов'язкова опція транспортного протоколу
32 Перенаправлення для мобільного вузла
33 IPv6 Where-Are-You (де ви знаходитеся)
34 IPv6 I-Am-Here (я тут)
35 Запит перенаправлення для мобільного вузла
36 Відгук на запит перенаправлення для мобільного вузла
37 Запит доменного імені
38 Відповідь на запит доменного імені
39 SKIP
40 Photuris
0 Зарезервовано
1 Невідомий індекс параметрів безпеки
2 Параметри безпеки вірні, але сталася помилка аутентифікації
3 Параметри безпеки вірні, але стався збій при розшифровці
4 Необхідна перевірка справжності
5 Потрібна авторизація
41-255 Зарезервовано

4. Правила генерації ICMP-пакетів

  1. При втраті ICMP-пакета ніколи не генерується новий.
  2. ICMP-пакети ніколи не генеруються у відповідь на IP-пакети з широкомовною або груповою адресою, щоб не викликати перевантаження в мережі (так званий "широкомовний шторм").
  3. При пошкодженні фрагментованого IP-пакета ICMP-повідомлення відправляється тільки після отримання першого пошкодженого фрагмента, оскільки відправник все одно повторить передачу всього IP-пакета цілком.

Примітки

  1. Протокол ICMP - technet.microsoft.com/ru-ru/library/cc758065 (WS.10). aspx