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

ICMP

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

История

Протокол ICMP был впервые описан в 1981 году в документе RFC 792 Джоном Постелом (J. Postel) как часть спецификации стека TCP/IP для ARPANET. Первоначальная цель заключалась в предоставлении механизма обратной связи для IP, который сам по себе не имеет встроенных средств обнаружения или оповещения об ошибках. С развитием Интернета ICMP расширялся: появились новые типы сообщений (например, для IPv6 — ICMPv6, описанный в RFC 4443), а также методы защиты от злоупотреблений (например, ограничение скорости отправки ICMP-пакетов для предотвращения DoS-атак).

Принцип работы

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

Типы сообщений ICMP

Основные категории сообщений ICMP:

ICMPv6

В IPv6 ICMP был полностью переработан и получил название ICMPv6. Он выполняет те же базовые функции, но также включает протокол Neighbor Discovery (ND) для определения соседних узлов и разрешения адресов (заменяя ARP в IPv4). Типы сообщений ICMPv6 расширены; сообщения об ошибках имеют типы 1–4, информационные — 128–129 (Echo), 130–133 (многоадресная рассылка). ICMPv6 обязателен для работы IPv6.

Применение

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

Проблемы безопасности

ICMP может использоваться для злонамеренных атак. Наиболее известные:

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

ICMP и протоколы более высокого уровня

ICMP не является транспортным протоколом для приложений; он работает на сетевом уровне. Однако приложения могут использовать ICMP-сообщения (например, ping утилита напрямую создает сокеты raw для отправки ICMP-пакетов). В современных системах НЕ-root пользователям может быть запрещено создавать raw-сокеты, поэтому ping часто реализуется через утилиту с установленным SUID-битом или через системные вызовы с привилегиями.

Критика и ограничения

Основные недостатки ICMP:

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

Источники

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

На главную BFOmetr →