Протокол ICMP
1 1 1 1 1 1 1 1 1 1 Рейтинг 4.45 [10 Голоса (ов)]

Как уже сообщалось ранее, протокол IP не содержит достаточных средств для организации надежной доставки сообщения. В частности, пакеты IP теряются в случае если пакет не прошел проверку контрольной суммы, не найден маршрут к заданному узлу назначения (параметр TTL равен нулю) и т.д. Все это сводится к тому, что протокол IP передает сообщения «по возможности» или другими словами, не прилагает никаких мер для гарантированной доставки сообщений.

Компенсируют недостаточную надежность протокола IP – протоколы верхних уровней, в частности протокол TCP (транспортный уровень) и DNS (прикладном уровне).

Помимо этого, существует еще один механизм уменьшения ненадежной передачи сообщений протоколом IP – это протокол ICMP.

Протокол ICMP (Internet Control Message Protocol — протокол межсетевых управляющих сообщений) — является вспомогательным сетевым протоколом, включенным в стек протоколов TCP/IP.

Принцип работы ICMP заключается в том, что данный протокол срабатывает для передачи сообщений об ошибках при передаче или исключительных ситуациях, то есть когда маршрутизатор не работает или требуемая услуга недоступна. По сути протокол ICMP не может запросить послать потерянный пакет повторно, а просто оповещает о несчастных случаях.

В основном ICMP используется для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных, например, запрашиваемая услуга недоступна, или хост, или маршрутизатор не отвечают. Также на ICMP возлагаются некоторые сервисные функции.

Когда протокол IP определяет, что дальнейшая передача пакета невозможно, перед тем как уничтожить пакет, должен отослать узлу-источнику диагностическое ICMP-сообщение. Если при передаче самого ICMP-сообщения возникла ситуация препятствующая его передачу, то протокол ICMP не будет отправлять об этом диагностическое сообщения, для избегания «штормов» в сетях.

При передаче по сети, сообщения ICMP инкапсулируются в поле данных IP-пакетов.

Структура заголовка ICMP сообщения

Протокол ICMP

Заголовок ICMP-сообщения состоит из 8 байт:

  • тип (1 байт) – числовой идентификатор типа сообщения: 0 или 8, где 0 - ICMP reply (ответ), 8 - ICMP request (запрос);
  • код (1 байт) – числовой идентификатор, более точно определяющий тип ошибки
  • контрольная сумма (2 байта) – вычисляется для всего ICMP-сообщения
  • Оставшиеся 4 байта и поле данных зависит от значений полей типа и кода.

Рассмотрим структуру заголовка ICMP запроса (request) на примере перехваченного пакета с помощью сетевого анализатора Wireshark

ICMP request

Рассмотрим структуру заголовка ICMP ответа (reply) на примере перехваченного пакета с помощью сетевого анализатора Wireshark

 ICMP reply