ICMP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

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

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

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

Типи ICMP пакетів

[ред. | ред. код]
Тип Код Назва Запит Помилка
0 0 Ехо-відповідь х
1 та 2 Зарезервовано
3 0 Мережа недоступна х
3 1 Хост недоступний х
3 2 Протокол недоступний х
3 3 Порт недоступний х
3 4 Потрібна фрагментація, але DF (прапорець «не фрагментувати») встановлено х
3 5 Маршрутизація джерелом не вдалося х
3 6 Мережа призначення невідома х
3 7 Хост призначення невідомий х
3 8 Хост призначення ізольовано (застарів) х
3 9 Мережа призначення адміністративно заборонена х
3 10 Хост призначення адміністративно заборонено х
3 11 Мережа недоступна для TOS х
3 12 Хост недоступний для TOS х
3 13 Зв'язок адміністративно заборонено (фільтрування запобігає маршрутизації) х
3 14 Порушення передування хосту (бажане передування не дозволено для комбінації хоста або мережі та порту) х
3 15 Порушення передування в дії (передування датаграми нижче рівня встановленого адміністраторами) х
4 0 Вгамовування джерела (управління заторами)
5 0 Переадресація для мережі
5 1 Переадресація для хосту
5 2 Переадресація для TOS та мережі
5 3 Переадресація для TOS та хосту
6 Змінна адреса хосту
7 Зарезервовано
8 0 Ехо-запит х
9 0 Оголошення маршрутизатора
10 0 Клопотання маршрутизації
11 0 Час життя пакету став рівний 0 під час транзиту х
11 1 Час збірки фрагментів пакету закінчився х
12 0 Помилка заголовку IP-пакету х
12 1 Відсутня необхідна опція заголовку х
12 2 Погана довжина заголовку х
13 0 Запит мітки часу х
14 0 Мітка часу х
15 0 Запит інформації х
16 0 Відповідь інформацією х
17 0 Запит маски адреси х
18 0 Маска адреси х


Швидкість джерела

[ред. | ред. код]

Швидкість джерела може просити відправника зменшити швидкість повідомлення, яке було відправлено до маршрутизатора або хосту. Це повідомлення може бути створене, якщо маршрутизатор або хост не має достатнього буферного простору для обробки запиту, або може виникнути ситуація, що маршрутизатор або хост-буфер майже заповнений. Дані передаються на дуже високій швидкості від хоста або з декількох хостів до конкретного маршрутизатора в мережі. Можливості маршрутизації буферизації обмежені в межах вказаного діапазону. Маршрутизатор не може стояти в черзі більше ніж обсяг обмеженого простору буферизації. Таким чином, якщо в черзі з'являються нові вхідні дані, то вони відкидаються, поки черга не заповнилась. Але так як немає, в механізмі, підтвердження присутності на мережевому рівні, клієнт не знає, чи дані досягли мети успішно. Тому деякі заходи щодо виправлення становища повинні бути прийняті на мережевому рівні, щоб уникнути такого роду ситуацій. Ці заходи розглядаються як джерело гарантії. У механізмі швидкості джерела, маршрутизатор бачить, що вхідна швидкість передачі даних значно вища, ніж вихідна швидкість передачі даних, і відправляє ICMP-повідомлення клієнтам, повідомивши їх, що вони повинні зменшити швидкість передачі даних або зачекати певний час, перш ніж відправити більше даних. Коли клієнт отримує це повідомлення, воно автоматично виконує вищезазначені дії, що дозволяють маршрутизатору очистити чергу. Таким чином, джерело швидкості ICMP з допомогою повідомлень можуть управляти потоком даних на мережевому рівні.

Переадресація

[ред. | ред. код]

При переадресації запитів пакети даних спрямовуються на альтернативний маршрут. ICMP переадресація є механізмом маршрутизаторів для передачі інформації про маршрутизацію до хосту. Повідомлення інформує господаря про потребу оновити свою маршрутну інформацію (для посилання пакетів на альтернативний маршрут). Якщо хост намагається надіслати дані через маршрутизатор (R1) і R1 відправляє дані на інший маршрутизатор (R2) і прямий шлях від хоста до R2 доступний (тобто, хост і R2 знаходяться на тому ж сегменті Ethernet), то R1 буде посилати повідомлення про перенаправлення інформуючи хост, що найкращий шлях для призначення через R2. Хост повинен посилати пакети для призначення безпосередньо до R2. Маршрутизатор буде як і раніше відправити вихідні дейтаграми до місця призначення. Однак, якщо дейтаграма містить інформацію про маршрутизації, це повідомлення не буде відправлено, навіть якщо найкращий маршрут доступний. RFC1122 стверджує, що переадресація повинна бути послана тільки на шлюз і не повинна бути відправлені хосту через інтернет. Код вказує причину для переадресації, може бути одна з наступних:


Код Опис
0 Переадресація мережі
1 Переадресація хост
2 Переадресація для типу обслуговування та мережі
3 Переадресація для типу обслуговування та хосту

IP-адреса 32-розрядний адрес шлюзу, до якого переадресація повинна бути надіслана.


Напрямок недоступності

[ред. | ред. код]

Напрямок недоступності існує, щоб повідомляти клієнта про те, що пункт призначення недоступний з яких-небудь причин. Повідомлення Destination Unreachable (пункт призначення недоступний) може бути отримане в результаті TCP або ICMP іншої передачі. Шлюз може відправити повідомлення про недоступність пункту призначення на хост інтернету джерела дейтаграми. Помилка не буде створена, якщо вихідна дейтаграма має групову адресу призначення. Причини цього повідомлення: фізичне підключення до хосту не існує, вказаний протокол або порт не активний, дані не фрагментовані.

Повідомлення про недоступність пункту призначення
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Тип = 3 Код Контрольна сума заголовка
Невикористаний Next-hop MTU (ПАКЕТ)
IP заголовок і перші 8 байт даних вихідної дейтаграми

де:

  • Тип поля (біти 0-7) повинні бути встановлені до 3
  • Код поля (біти 8-15) використовується для визначення типу помилки

Максимальний блок передачі обмеження посилання на максимальну кількість байт даних в одній передачі (тобто кадр, клітка, пакет). Найменший MTU будь-якої ланки на поточному шляху знаходиться між двома хостами. Це може змінюватися з плином часу, так як маршрут між двома хостами, особливо в Інтернеті, може змінюватися з плином часу.

Посилання

[ред. | ред. код]