Все типы 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-сообщения также зависит от значений полей типа и кода. Чтобы показать различия в форматах разных типов сообщений, мы рассмотрим в следующих разделах два примера:
|
|
□ сообщения типа эхо-запрос и эхо-ответ;
□ сообщение о недостижимости узла назначения.