Все типы ICMP-сообщений могут быть разделены на два класса:
□ диагностические сообщения об ошибках;
□ информационные сообщения типа запрос/ответ. ICMP-сообщение инкапсулируется в поле данных IP-пакета (рис. 19.19).
ICMP-сообщение 20 байт 1 байт 1 байт 2 байта 4 байта
|
| Заголовок ICMP (8 байт) Рис. 19.19. Инкапсуляция и формат ICMP-сорбщения |
Заголовок ICMP состоит из 8 байт; поля заголовка перечислены ниже.
□ Тип (размером 1 байт) содержит код, определяющий тип сообщения. Основные типы сообщений перечислены в табл. 19.7.
□ Код (размером 1 байт) более тонко дифференцирует тип ошибки.
□ Контрольная сумма, подсчитанная для всего ICMP-сообщения, занимает 2 байта.
Заголовок также включает поле из 4 байт, содержимое которого зависит от значений полей типа и кода. В сообщениях типа запрос/ответ это поле содержит 2-байтовые подполя идентификатора и порядкового номера (см. далее). Числа и:з этих подполей дублируются из сообщения-запроса в сообщение-ответ. Идентификатор позволяет узлу-получателю сообщения определить, какому приложению направлен этот ответ, а порядковый номер используется приложением, чтобы связать ответ с соответствующим запросом (учитывая, что одно приложение может выдать несколько однотипных запросов). В сообщениях об ошибке это поле не используется и заполняется нулями.
Таблица 19.7. Возможные значения поля типа
|
| продолжение & |
| Глава 19. Базовые протоколы TCP/IP | |
| Таблица 19.7 (продолжение) | |
| Значение | Тип сообщения j |
| Истечение времени дейтаграммы | | |
| Проблема с параметром пакета; | |
| I Запрос отметки времени | |
| Ответ отметки времени | |
| Запрос маски | |
| Ответ маски |
Каждый тип ошибки может быть более точно охарактеризован кодом ошибки. Например, в табл. 19.8 приведены коды для сообщения о недостижимости узла назначения (ошибка типа 3 из предыдущей таблицы). Эти коды, которые могут быть указаны в сообщении этого типа, позволяют выявить множество различных причин данной ситуации. Недостижимость узла назначения может, в частности, быть вызвана временной неработоспособностью аппаратуры, неверным адресом назначения, отсутствием протокола прикладного уровня или открытого порта UDP/TCP в узле назначения.
Таблица 19.8. Коды, детализирующие причину ошибки о недостижимости узла назначения
| Код | Причина |
| Сеть недостижима | |
| Узел недостижим | |
| Протокол недостижим | |
| Порт недостижим | |
| Требуется фрагментация, а бит DF установлен | |
| Ошибка в маршруте, заданном источником | |
| Сеть назначения неизвестна | |
| Узел назначения неизвестен | |
| Узел-источник изолирован | |
| Взаимодействие с сетью назначения административно запрещено | |
| Взаимодействие с узлом назначения административно запрещено | |
| И | Сеть недостижима для заданного класса сервиса |
| Узел недостижим для заданного класса сервиса | |
| Взаимодействие административно запрещено путем фильтрации |
Формат поля данных ICMP-сообщения также зависит от значений полей типа и кода. Чтобы показать различия в форматах разных типов сообщений, мы рассмотрим в следующих разделах два примера:
□ сообщения типа эхо-запрос и эхо-ответ;
□ сообщение о недостижимости узла назначения.






