Механизм переадресации протокола IСМР

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

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

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

ICMP-сообщения обычно автоматически отправляются в следующих случаях:

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

ICMP-сообщения инкапсулируются и передаются в IP-дейтаграммах в формате, представленном на рис. 6.

Формат непосредственно ICMP-сообщения представлен на рис. 7.

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

В табл. 2 перечислены и описаны наиболее часто встречающиеся ICMP-сообщения.

Типы пакетов ICMP (полный список):

  • 0 — Эхо-ответ;
  • 1 — Зарезервировано;
  • 2 — Зарезервировано;
  • 3 — Адресат недоступен:
  • код 0 — Сеть недостижима;
  • код 1 — Узел недостижим;
  • код 2 — Протокол недостижим;
  • код 3 — Порт недостижим;
  • код 4 — Необходима фрагментация, но установлен флаг ее запрета (DF);
  • код 5 — Неверный маршрут от источника;
  • код 6 — Сеть назначения неизвестна;
  • 7 — Узел назначения неизвестен;
  • код 8 — Узел источник изолирован;
  • код 9 — Сеть административно запрещена;
  • код 10 — Узел административно запрещен код 11 — Сеть недоступна для ToS;
  • 12 — Узел недоступен для ToS;
  • код 13 — Коммуникации административно запрещены;
  • код 14 — Нарушение порядка предпочтения узлов;
  • код 15 — Активно отсечение порядка предпочтения;
  • 4 — Сдерживание источника (отключение источника при переполнении очереди);
  • 5 — Перенаправление:
  • код 0 — Перенаправление пакетов в сеть;
  • код 1 — Перенаправление пакетов к узлу;
  • код 2 — Перенаправление для каждого типа обслуживания (TOS);
  • код 3 — Перенаправление пакета к узлу для каждого типа обслуживания;
  • 6 — Альтернативный адрес узла;
  • 7 — Зарезервировано;
  • 8 — Эхо-запрос;
  • 9 — Объявление маршрутизатора (RFC-1256):
  • код 0 — Нормальное объявление маршрутизатора;
  • код 16 — Не маршрутизировать обычный трафик;
  • 10 — Запрос маршрутизатора (RFC-1256);
  • 11 — Превышение временного интервала (для дейтаграммы время жизни истекло):
  • код 0 — Время жизни пакета (TTL) истекло при транспортировке;
  • код 1 — Время жизни пакета (время сборки фрагментов) истекло при дефрагментации;
  • 12 — Неверный параметр (проблема с параметрами дейтаграммы: ошибка в IP-заголовке или отсутствует необходимая опция):
  • код 0 — Указатель говорит об ошибке;
  • код 1 — Отсутствует требуемая опция; к
  • код 2 — Некорректная длина;
  • 13 — Запрос метки времени;
  • 14 — Ответ с меткой времени;
  • 15 — Информационный запрос;
  • 16 — Информационный ответ;
  • 17 — Запрос адресной маски (RFC-950);
  • 18 — Отклик на запрос адресной маски (RFC-950);
  • 19 — Зарезервировано (для обеспечения безопасности);
  • 20-29 — Зарезервировано (для экспериментов на устойчивость к ошибкам);
  • 30 — Трассировка маршрута (RFC-1393);
  • 31 — Ошибка преобразования дейтаграммы (RFC-1475);
  • 32 — Перенаправление для мобильного узла;
  • 33 — IPv6 Where-Are-You (где вы находитесь);
  • 34 — IPv6 I-Am-Here (я здесь);
  • 35 — Запрос перенаправления для мобильного узла;
  • 36 — Отклик на запрос перенаправления для мобильного узла;
  • 37 — Запрос доменного имени (Domain Name Request);
  • 38 — Ответ на запрос доменного имени (Domain Name Reply);
  • 39 — SKIP;
  • 40 — Photuris: код 0 — Зарезервировано;
  • код 1 — Неизвестный индекс параметров безопасности (Unkown Security Parameters Index);
  • 2 — Параметры безопасности верны, но произошла ошибка аутентификации (Valid Security Parameters, but Authentication Failed);
  • код 3 — Параметры безопасности верны, но произошел сбой при расшифровке (Valid Security Parameters, but Decryption Failed);
  • код 4 — Требуется проверка подлинности (Need Authentication);
  • код 5 — Требуется авторизация (Need Authorization)
  • 41-255 — Зарезервировано.

Рассмотрим подробнее механизм переадресации пакетов.

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

В этой ситуации маршрутизатор может уведомить отправителя о данной проблеме с помощью переадресующего ICMP-пакета.

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

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

Современные системы избавлены от подобной проблемы.

Стандартный ICMP-сценарий не подразумевает этапа аутентификации. Маршрутизатор получает от другого, известного ему маршрутизатора команду перенаправить трафик в другое место. Нужно ли подчиниться этой команде? В действительности такой сценарии создает определенные проблемы с точки зрения безопасности. Поэтому переадресуюшие пакеты запрещены в ядрах Linux и FreeBSD, а также в маршрутизаторах Cisco. Считается, что не стоит позволять непроверенным узлам модифицировать таблицы маршрутизации.

Узнай цену консультации

"Да забей ты на эти дипломы и экзамены!” (дворник Кузьмич)