Битлента
Словарь терминов3 мин чтения·

ICMP: служебные сообщения сети, ping и коды недоступности

Что такое протокол ICMP, чем он отличается от TCP и UDP, какие типы сообщений бывают, как работают ping и traceroute и зачем нельзя блокировать его целиком.

Служебный канал внутри IP

ICMP, Internet Control Message Protocol, предназначен не для передачи пользовательских данных, а для сообщений о состоянии сети. Он надстроен над IP, и его пакеты идут по тем же маршрутам, но у него нет портов, потому что общаются не приложения, а сами сетевые узлы. Это протокол диагностики и оповещения об ошибках: узел недоступен, пакет слишком большой, время жизни исчерпано.

В IPv6 существует собственная версия, ICMPv6, и роль у неё шире: на нём построено обнаружение соседей и автоматическая настройка адресов, так что блокировать его в IPv6-сетях без разбора нельзя.

Основные типы сообщений

Каждое сообщение содержит тип и код. Самые известные пары: тип 8 эхо-запрос и тип 0 эхо-ответ, на них построен ping. Тип 3 означает «получатель недоступен», а код уточняет причину: сеть, узел, протокол или порт недоступны либо требуется фрагментация при отключённой фрагментации. Тип 11 «время истекло» отправляет маршрутизатор, когда TTL достиг нуля. Тип 5 перенаправление подсказывает узлу лучший шлюз.

Получив такое сообщение, операционная система может сообщить программе о причине сбоя, например «хост недоступен» вместо долгого ожидания тайм-аута.

Как ICMP лежит в основе ping и traceroute

Ping отправляет эхо-запросы и измеряет время до получения ответа. Программа выводит задержку и процент потерь. Traceroute использует другой приём: он шлёт пакеты с TTL, равным 1, потом 2, потом 3 и так далее. Каждый маршрутизатор на пути уменьшает TTL, а тот, у кого значение стало нулевым, отвечает сообщением «время истекло» и тем самым раскрывает свой адрес. Из ответов складывается карта пути.

В Windows tracert по умолчанию отправляет именно эхо-запросы ICMP, а версии для Linux часто используют UDP-пакеты, но принцип с TTL одинаков.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Механизм определения MTU и фильтрация

Сообщение «требуется фрагментация» нужно для определения максимального размера пакета на пути (Path MTU Discovery). Если промежуточный канал не пропускает крупный пакет с флагом запрета фрагментации, маршрутизатор возвращает ICMP с нужным размером, и отправитель уменьшает пакеты. Когда такие сообщения блокируются, возникает знакомая ситуация: мелкие запросы проходят, а крупные зависают.

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

Что видно у вас на практике

Отсутствие ответа на ping не означает, что узел выключен: многие серверы и межсетевые экраны сознательно не отвечают на эхо-запросы. Наоборот, наличие ответа говорит лишь о том, что путь по ICMP работает, но не подтверждает, что нужный сервис на другом порту доступен.

Чтобы проверить связь, начните с пинга адреса шлюза, затем внешнего адреса, затем имени. Обращайте внимание на текст ответа: «Заданный узел недоступен» означает, что ICMP-сообщение об ошибке пришло, а «Превышен интервал ожидания» говорит об отсутствии ответа вовсе.

Безопасность и злоупотребления

Через ICMP проводили атаки: лавинную рассылку эхо-запросов на широковещательные адреса, отправку сверхкрупных пакетов. Современные системы такие приёмы давно нейтрализуют, но ограничение частоты ответов остаётся полезным. Известно также, что ICMP используют для скрытой передачи данных в полезной нагрузке, поэтому системы мониторинга следят за необычными объёмами эхо-трафика.

Для обычного пользователя вывод простой: не нужно отключать ответы на ping ради «безопасности» на домашнем компьютере, но и открывать управление устройствами через ICMP нет причин.

Сообщения типа 3 помогают точно понять, что произошло. Код «сеть недоступна» присылает маршрутизатор, у которого нет маршрута к нужной подсети. «Узел недоступен» возникает, когда последний маршрутизатор не смог найти получателя, например из-за неудачного ARP-запроса. «Порт недоступен» приходит от самого конечного узла, когда на UDP-порту нет слушающей программы. «Административно запрещено» говорит о фильтрации на пути.

Эти формулировки видны в выводе ping и в сообщениях программ. Зная их смысл, можно сразу определить, с какой стороны искать причину: маршрутизация, отсутствие сервиса или правила экрана. Например, ответ «порт недоступен» уже означает, что узел жив и достижим, а искать нужно настройку службы.

Это ещё одна причина, по которой диагностика начинается именно с ping: даже отсутствие ответа несёт информацию.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
сетиicmppingдиагностика

Часто задаваемые вопросы

Читайте также