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

Destination Unreachable

Destination Unreachable — это служебное сообщение (ICMP-пакет) в сетях, работающих по протоколу IPv4, которое отправляется отправителю пакета, когда маршрутизатор или хост назначения не может доставить пакет по указанному адресу. Сообщение относится к типу 3 протокола ICMP (Internet Control Message Protocol) и используется для информирования источника о недоступности конечного узла, сети, порта или о необходимости фрагментации. В протоколе IPv6 аналогичная функция выполняется сообщением типа 1 ICMPv6.

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

Протокол ICMP был впервые определён в RFC 792 (1981 год) как неотъемлемая часть стека протоколов TCP/IP. Сообщение Destination Unreachable (тип 3) было включено в первоначальную спецификацию. В последующих RFC, таких как RFC 1122 (1989 год) и RFC 1812 (1995 год), были уточнены коды ошибок и правила обработки этих сообщений. В RFC 4443 (2006 год) была определена аналогичная функциональность для IPv6 — сообщение ICMPv6 типа 1, также называемое Destination Unreachable.

Структура сообщения

Сообщение Destination Unreachable имеет фиксированную структуру, общую для всех ICMP-пакетов:

  • Тип (Type) — 8 бит, для IPv4 всегда равен 3.
  • Код (Code) — 8 бит, указывает конкретную причину недоступности.
  • Контрольная сумма (Checksum) — 16 бит, для проверки целостности.
  • Неиспользуемое поле (Unused) — 32 бита, заполняется нулями (в некоторых кодах может содержать дополнительную информацию).
  • Тело сообщения — содержит заголовок и первые 8 байт полезной нагрузки исходного пакета, который не удалось доставить. Это позволяет отправителю идентифицировать проблемный пакет.

Коды ошибок (IPv4)

Поле Code (код) в сообщении Destination Unreachable может принимать следующие значения:

КодЗначениеОписание
0Network unreachableСеть назначения недоступна (обычно из-за отсутствия маршрута в таблице маршрутизации).
1Host unreachableХост назначения недоступен (например, из-за отказа ARP-запроса или отключения узла).
2Protocol unreachableПротокол, указанный в заголовке IP-пакета, не поддерживается на узле назначения.
3Port unreachableПорт назначения (UDP/TCP) закрыт или не прослушивается на узле.
4Fragmentation needed and DF setПакет требует фрагментации, но флаг Don't Fragment (DF) установлен в заголовке IP.
5Source route failedИсточник указал маршрут (опция Source Route), который не может быть выполнен.
6Destination network unknownСеть назначения неизвестна (в отличие от кода 0, маршрутизатор не имеет информации о сети).
7Destination host unknownХост назначения неизвестен (например, не может быть разрешён по MAC-адресу).
8Source host isolatedИсходный хост изолирован (устаревший код, редко используется).
9Communication with destination network administratively prohibitedСеть назначения заблокирована административными правилами (например, ACL).
10Communication with destination host administratively prohibitedХост назначения заблокирован административно.
11Destination network unreachable for type of serviceСеть недоступна для запрошенного типа обслуживания (TOS).
12Destination host unreachable for type of serviceХост недоступен для запрошенного TOS.
13Communication administratively prohibited (RFC 1812)Административный запрет на связь (обобщённый код).
14Host precedence violationНарушение приоритета хоста (используется в военных сетях).
15Precedence cutoff in effectДействует ограничение приоритета (пакет отброшен из-за низкого приоритета).

Применение и значение

Диагностика сетевых проблем

Сообщения Destination Unreachable являются ключевым инструментом для выявления неисправностей в сети. Утилиты, такие как ping и traceroute, интерпретируют эти сообщения для определения точки отказа. Например, если ping получает ответ с кодом 1 (Host unreachable), это указывает, что маршрутизатор, ближайший к цели, не может установить связь с хостом.

Обнаружение закрытых портов

Код 3 (Port unreachable) используется в сканировании портов (например, с помощью Nmap) для определения, какие порты на целевом узле закрыты. Если на UDP-порт отправляется пакет, а в ответ приходит ICMP-сообщение с кодом 3, это означает, что порт не прослушивается.

Контроль фрагментации

Код 4 (Fragmentation needed and DF set) играет важную роль в механизме Path MTU Discovery (PMTUD). Когда маршрутизатор не может передать пакет без фрагментации, а флаг DF установлен, он отправляет это сообщение отправителю, указывая максимальный размер MTU (Maximum Transmission Unit) на данном участке пути. Отправитель уменьшает размер пакета, чтобы избежать фрагментации.

Ограничения и критика

  • Отсутствие гарантии доставки: Сообщения ICMP, включая Destination Unreachable, не гарантируют доставку. Если сеть перегружена или маршрутизатор перегружен, сообщение может быть потеряно.
  • Возможность злоупотребления: Злоумышленники могут подделывать (спуфить) сообщения Destination Unreachable, чтобы нарушить связь между узлами (например, атака типа ICMP flood или отправка ложных сообщений о недоступности порта).
  • Ограниченная информация: Сообщение содержит только первые 8 байт полезной нагрузки исходного пакета, что может быть недостаточно для точной идентификации приложения-отправителя в случае сложных протоколов.
  • Игнорирование на некоторых узлах: Из соображений безопасности некоторые операционные системы (например, Windows, Linux с настройками брандмауэра) могут игнорировать или блокировать входящие ICMP-сообщения, включая Destination Unreachable, что снижает эффективность диагностики.

Примеры использования

Пример 1: Недоступность порта

Пользователь пытается подключиться к веб-серверу на порту 80, но служба не запущена. Хост назначения отправляет ICMP-пакет с типом 3 и кодом 3 (Port unreachable). Клиент получает это сообщение и может выдать ошибку «Connection refused».

Пример 2: Проблема с маршрутизацией

Маршрутизатор получает пакет для сети 192.168.5.0/24, но в его таблице маршрутизации нет соответствующей записи. Он отправляет отправителю ICMP-пакет с типом 3 и кодом 0 (Network unreachable). Отправитель может использовать эту информацию для обновления своей таблицы маршрутизации или уведомления пользователя.

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

  • Сообщение Destination Unreachable с кодом 4 (Fragmentation needed and DF set) часто используется в протоколе PMTUD, который является обязательным для IPv6 (в IPv6 маршрутизаторы не фрагментируют пакеты, а только отправляют ICMPv6-сообщение об ошибке).
  • В некоторых реализациях (например, Cisco IOS) при отправке сообщения Destination Unreachable маршрутизатор может ограничивать скорость их генерации (rate-limiting), чтобы предотвратить перегрузку сети.
  • Сообщения с кодами 0 и 1 исторически считаются наиболее распространёнными в Интернете, так как они часто возникают при сбоях маршрутизации или отключении узлов.

Источники

  • RFC 792 — Internet Control Message Protocol (1981)
  • RFC 1122 — Requirements for Internet Hosts — Communication Layers (1989)
  • RFC 1812 — Requirements for IP Version 4 Routers (1995)
  • RFC 4443 — Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification (2006)
  • Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols. Addison-Wesley, 1994.
  • Comer, Douglas E. Internetworking with TCP/IP, Volume 1: Principles, Protocols, and Architecture. Prentice Hall, 2006.

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

На главную BFOmetr →