|
|
| Рядок 1: |
Рядок 1: |
| − | Міжмережевий протокол керуючих повідомлень '''''ICMP''''' (Internet Control Message Protocol), специфікований у RFC 792, відіграє роль транспортного протоколу для керуючої і діагностичної інформації, який обмінюються між собою IP-, TCP- або UDP-модулі потай від додатків. Протокол ICMP підтримується в обов'язковому порядку кожним IP-модулем. Його транспортна адреса в IP-заголовку дорівнює 1.
| |
| − |
| |
| − |
| |
| − | <center>'''Заголовок ICMP-пакета'''</center>
| |
| − | Оскільки протокол ICMP використовується для транспортування досить різної інформації, то фіксується лише загальна структура заголовка ICMP-пакета, що має формат, показаний на малюнку нижче:
| |
| − | 0 7 15 31
| |
| − | +-----------+-----------+-----------------------+
| |
| − | | Тип | Код | Контрольна сума |
| |
| − | +-----------+-----------+-----------------------+
| |
| − | | Різне |
| |
| − | +-------------------------------------------------+
| |
| − | : Тіло пакета: :
| |
| − | : IP-заголовок і наступні за ним 8 байт даних :
| |
| − | : або :
| |
| − | : тестові дані :
| |
| − | +--------------------------------------------------+
| |
| − |
| |
| − | ''Тип'' однобайтове поле, що містить ідентифікатор типу ICMP-пакета. Можливі значення цього поля приведені в таблиці.
| |
| − | ---------------+---------------------------
| |
| − | Поле "Тип" | Призначення
| |
| − | ---------------+----------------------------
| |
| − | 0 Відповідь на запит луни (эхо)
| |
| − | 3 Адресат недоступний
| |
| − | 4 Придушення джерела
| |
| − | 5 Перенаправлення
| |
| − | 8 Запит луни
| |
| − | 11 Вичерпаний час життя
| |
| − | 12 Помилка в параметрі
| |
| − | 13 Запит тимчасової мітки
| |
| − | 14 Відповідь на запит тимчасової мітки
| |
| − | --------------+------------------------------
| |
| − |
| |
| − | ''Код'': однобайтовое поле, значення якого конкретизує призначення ICMP-пакета визначеного типу.
| |
| − |
| |
| − | ''Контрольна сума'': 16-бітове поле, що містить Internet-контрольну суму, підраховану для всього ICMP-пакета цілком.
| |
| − |
| |
| − | ''Різне'': чотирибайтовое поле, призначене для збереження різноманітної інформації, специфічної для ICMP-пакетів визначеного типу (наприклад, номера в TCP-послідовності, IP-адреси і т.п.).
| |
| − |
| |
| − | ''Тіло пакета'': тут утримується заголовок IP-сегмента, який є породженням даного ICMP-пакета, і перші 8 байт дані тіла цього IP-сегмента. Якщо ICMP-пакет є результат прояву аномалії в TCP- або UDP-взаємодії, то ці 8 байт будуть являти собою перші вісім байтів, відповідно, TCP- або UDP-заголовка, що дає можливість визначити, зокрема, номери портів (а, отже, і їхні прикладні програми, що використовують,).
| |
| − | Для ICMP-пакетів деяких типів це може містити не початок IP-сегмента, а тестові дані.
| |
| − |
| |
| − | ''Джерелами й оброблювачами'' ICMP-пакетів могуть бути як IP-модулі, так і TCP- і UDP-модулі (але ніколи прикладні програми).
| |
| − |
| |
| − | Проблеми в доставці й обробці ICMP-пакетів ніколи не приводять до породження нових ICMP-пакетів, що повідомляють про ці проблеми. Зроблено це з метою уникнути можливих нескінченних циклів генерації ICMP-пакетів у мережі.
| |
| − |
| |
| − | <center>'''''Типи ICMP-пакетів'''''</center>
| |
| − | Тут розглядаються 6 типів ICMP-пакетів, реалізованих у всіх клонах і версіях ОС UNIX.
| |
| − |
| |
| − | '''''Адресат недоступний'''''
| |
| − | ICMP-пакет цього типу генерується в наступних випадках:
| |
| − | - мережа, вузол мережі, протокол або порт є недоступними;
| |
| − | - у ході просування по мережі IP-сегмента потрібна була його фрагментація, однак у заголовку сегмента встановлений прапор DF, що забороняє робити це;
| |
| − | - маршрут, що пропонується, зазначений у поле додаткових даних IP-сегмента, виявився недійсним (неіснуючим або неактивним).
| |
| − |
| |
| − | '''''Придушення джерела'''''
| |
| − | У ситуаціях, коли деякий вузол (як правило, шлюз) не має досить місця у своїх буферах для розміщення даних, що інтенсивно надходять до нього, він може послати вузлам-джерелам ICMP-пакет даного типу (source quench). Вузол-джерело у відповідь на таке повідомлення зобов'язаний зменшити темп передачі даних.
| |
| − |
| |
| − | У ранніх UNIX-реалізаціях протоколів TCP/IP ICMP-пакети цього типу ігнорувалися. У TCP-реалізаціях, що підтримують алгоритм повільного старту, у відповідь на це повідомлення зменшується розмір "вікна перевантаженості". UDP-модулі ігнорують це повідомлення, інформуючи при цьому прикладну програму, що обслуговується, про вимогу приймача зменшити інтенсивність і/або розмір дэйтаграмм.
| |
| − |
| |
| − | '''''Перенапрямок'''''
| |
| − | ICMP-пакет цього типу посилається джерелу даних, коли вузол-шлюз виявляє, що джерело може направляти свої дані безпосередньо до наступного шлюзу маршруту. Такий ICMP-пакет містить у собі IP-адреса цього шлюзу. Ця IP-адреса повинна бути включена в таблицю маршрутизації на вузлі-джерелі даних.
| |
| − |
| |
| − | '''''Луна (Эхо)'''''
| |
| − | Для реалізації луни IP-модуль на вузлі A відправляє вузлові B ICMP-пакет типу "запит луни", що містить у своєму тілі замість IP-заголовка тестові дані довільної довжини. Вузол B, одержавши такий запит, повертає вузлу A ICMP-пакет типу "відповідь на запит луни", що містить ті ж дані, що й у запиті. Луни-посилки використовуються для перевірки досяжності вилучених вузлів мережі і виміри часу проходження даних.
| |
| − |
| |
| − | '''''Вичерпано час життя'''''
| |
| − | ICMP-пакет даного типу посилається джерелу IP-сегмента, що повинний бути скинутий по одній із двох причин:
| |
| − | 1) вичерпаний час життя IP-сегмента;
| |
| − | 2) вичерпаний припустимий час на зборку фрагментированного IP-сегмента.
| |
| − |
| |
| − | '''''Невірний параметр'''''
| |
| − | За допомогою ICMP-пакета даного типу джерело IP-сегмента інформується про те, що даний сегмент скинутий унаслідок наявності помилки в якому-небудь з полів його заголовка
| |
| | | | |
| | | | |
| | [[category:Комп'ютерні мережі]] | | [[category:Комп'ютерні мережі]] |