|
|
Рядок 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:Комп'ютерні мережі]] |