Открыть сервис

Протокол ICMP

Протокол ICMP (англ. Internet Control Message Protocol — протокол межсетевых управляющих сообщений) — это сетевой протокол стека TCP/IP, используемый для передачи служебных сообщений об ошибках и диагностики сетевого соединения. Относится к сетевому уровню модели OSI (уровень 3) и является неотъемлемой частью протокола IP, работая поверх него, но не как транспортный протокол, а как вспомогательный механизм. ICMP не предназначен для передачи пользовательских данных; его основная функция — информировать отправителя о проблемах доставки пакетов, проверять доступность узлов и измерять задержки в сети.

История и стандартизация

Протокол ICMP был впервые определён в 1981 году в документе RFC 792 (Jon Postel) как часть спецификации протокола IPv4. С развитием интернета протокол неоднократно дополнялся: появились новые типы сообщений, расширения для безопасности (например, ICMPv6 для IPv6 в RFC 4443) и механизмы фильтрации. В настоящее время ICMP остаётся обязательным компонентом всех реализаций стека TCP/IP, хотя его использование в некоторых случаях ограничено из-за уязвимостей (например, атаки типа «Smurf» или ICMP-туннелирование).

Архитектура и принцип работы

ICMP работает непосредственно поверх IP, то есть его сообщения инкапсулируются в IP-дейтаграммы с полем протокола, равным 1 (для IPv4). Каждое сообщение ICMP состоит из заголовка (8 байт) и поля данных переменной длины. Заголовок содержит три основных поля:

Поле данных обычно содержит часть исходного IP-пакета, вызвавшего ошибку (первые 8 байт его заголовка и первые 8 байт полезной нагрузки), что позволяет отправителю идентифицировать проблемный пакет.

Классификация сообщений ICMP

Сообщения ICMP делятся на две основные категории: сообщения об ошибках и информационные (запросы/ответы).

Сообщения об ошибках

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

Информационные сообщения

Эти сообщения используются для диагностики и мониторинга сети.

ICMPv6

С появлением IPv6 протокол ICMP был существенно переработан и описан в RFC 4443. ICMPv6 (протокол 58) выполняет функции, аналогичные ICMPv4, но также включает дополнительные механизмы, необходимые для работы IPv6:

Применение

ICMP широко используется в сетевой диагностике и администрировании:

Ограничения и безопасность

ICMP не гарантирует доставку сообщений — он работает поверх IP, который сам по себе является протоколом без установления соединения. Сообщение об ошибке может быть потеряно, а отправитель не узнает об этом. Кроме того, ICMP уязвим для некоторых атак:

В современных сетях администраторы часто ограничивают ICMP-трафик на межсетевых экранах: блокируют входящие Echo Request (чтобы скрыть хост от внешнего сканирования), но разрешают исходящие сообщения об ошибках (для корректной работы Path MTU Discovery). Полное отключение ICMP может привести к неработоспособности некоторых механизмов TCP/IP, таких как автоматическое определение MTU или обнаружение недоступности узла.

Интересные факты

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →