Телекоммуникационные технологии.Сети TCP-IP

       

Протокол ICMP


Протокол ICMP (Internet Control Message Protocol, Протокол Управляющих Сообщений Интернет) является неотъемлемой частью IP-модуля. Он обеспечивает обратную связь в виде диагностических сообщений, посылаемых отправителю при невозможности доставки его дейтаграммы и в других случаях. ICMP стандартизован в RFC-792, дополнения — в RCF-950,1256.

ICMP-сообщения не порождаются при невозможности доставки:

  • дейтаграмм, содержащих ICMP-сообщения;
  • не первых фрагментов дейтаграмм;
  • дейтаграмм, направленных по групповому адресу (широковещание, мультикастинг);
  • дейтаграмм, адрес отправителя которых нулевой или групповой.
  • Все ICMP-сообщения имеют IP-заголовок, значение поля “Protocol” равно 1. Данные дейтаграммы с ICMP-сообщением не передаются вверх по стеку протоколов для обработки, а обрабатываются IP-модулем.

    После IP-заголовка следует 32-битное слово с полями “Тип”, “Код” и “Контрольная сумма”. Поля типа и кода определяют содержание ICMP-сообщения. Формат остальной части дейтаграммы зависит от вида сообщения. Контрольная сумма считается так же, как и в IP-заголовке, но в этом случае суммируется содержимое ICMP-сообщения, включая поля “Тип” и “Код”.

    Таблица 2.5.1

    Виды ICMP-сообщений

    Тип

    Код

    Сообщение

    0

    0



    Echo Reply (эхо-ответ)

    3

    Destination Unreachable (адресат недостижим по различным причинам):

      0

    Net Unreachable (сеть недоступна)

      1

    Host Unreachable (хост недоступен)

      2

    Protocol Unreachable (протокол недоступен)

      3

    Port Unreachable (порт недоступен)

      4

    DF=1 (необходима фрагментация, но она запрещена)

      5

    Source Route failed (невозможно выполнить опцию Source Route)

    4

    0

    Source Quench (замедление источника)

    5

      Redirect (выбрать другой маршрутизатор для посылки дейтаграмм)

      0

    в данную сеть

      1

    на данный хост

      2

    в данную сеть с данным TOS

      3

    на данный хост с данным TOS

    8

    0

    Echo Request (эхо-запрос)

    9

    0

    Router Advertisement (объявление маршрутизатора)


    10 0 Router Solicitation (запрос объявления маршрутизатора) 11   Time Exceeded (время жизни дейтаграммы истекло)   0 при передаче   1 при сборке 12   Parameter problem (ошибка в параметрах)   0 Ошибка в IP-заголовке   1 Отсутствует необходимая опция 13 0 Timestamp (запрос временной метки) 14 0 Timestamp Reply (ответ на запрос временной метки) 17 0 Address Mask Request (запрос сетевой маски) 18 0 Address Mask Reply (ответ на запрос сетевой маски) Ниже рассмотрены форматы ICMP-cообщений и даны комментарии к некоторым сообщениям. Типы 3, 4, 11, 12
    В сообщении типа 12 в поле “хххххххххх” ( 1 октет) заносится номер октета заголовка, в котором обнаружена ошибка; в сообщениях типов 3, 4, 11 не используется. Все неиспользуемые поля заполняются нулями. Сообщения типа 4 (“Замедление источника”) генерируются в случае переполнения (или опасности переполнения) буферов обработки дейтаграмм адресата или промежуточного узла на маршруте. При получении такого сообщения отправитель должен уменьшить скорость или приостановить отправку дейтаграмм до тех пор, пока он не перестанет получать сообщения этого типа. IP-заголовок и начальные слова оригинальной дейтаграммы приводятся для опознания ее отправителем и, возможно, анализа причины сбоя. Тип 5
    Сообщения типа 5 направляются маршрутизатором отправителю дейтаграммы в случае, когда маршрутизатор считает, что дейтаграммы в данное место назначения следует направлять через другой маршрутизатор. Адрес нового маршрутизатора приведен во втором слове сообщения. Понятие “место назначения” конкретизируется значением поля “Код” (см. табл. 2.5.1). Информация о том, куда была направлена дейтаграмма, породившая ICMP-сообщения, извлекается из ее заголовка, присоединенного к сообщению. Отсутствие передачи сетевой маски ограничивает область применения сообщений типа 5. Типы 0,8
    Сообщения типов 0 и 8 используются для тестирования связи по протоколу IP между двумя узлами сети. Тестирующий узел генерирует сообщения типа 8 (“Эхо-запрос”), при этом “Идентификатор” определяет данный сеанс тестирования (номер последовательности отправляемых сообщений), поле “Номер по порядку” содержит номер данного сообщения внутри последовательности. В поле данных содержатся произвольные данные, размер этого поля определяется общей длиной дейтаграммы, указанной в поле “Total length” IP-заголовка. IP-модуль, получивший эхо-запрос, отправляет эхо-ответ. Для этого он меняет местами адреса отправителя и получателя, изменяет тип ICMP-сообщения на 0 и пересчитывает контрольную сумму. Тестирующий узел по самому факту получения эхо-ответов, времени оборота дейтаграмм, проценту потерь и последовательности прибытия ответов может сделать выводы о наличии и качестве связи с тестируемым узлом. На основе посылки и приема эхо-сообщений работает программа ping.

    Тип 9



    Сообщения типа 9 ( объявление маршрутизатора) периодически рассылаются маршрутизаторами хостам сети для того, чтобы хосты могли автоматически сконфигурировать свои маршрутные таблицы. Обычно такие сообщения рассылаются по мультикастинговому адресу 224.0.0.1 (“всем хостам”) или по широковещательному адресу.

    Сообщение содержит адреса одного или нескольких маршрутизаторов, снабженных значениями приоритета для каждого маршрутизатора. Приоритет является числом со знаком, записанным в дополнительном коде; чем больше число, тем выше приоритет.

    Поле “NumAddr” содержит количество адресов маршрутизаторов в данном сообщении; значение поля “AddrEntrySize” равно двум (размер поля, отведенного на информацию об одном маршрутизаторе, в 32-битных словах). “Время жизни” определяет срок годности информации, содержащейся в данном сообщении, в секундах.

    Тип 10

    Сообщения типа 10 (запрос объявления маршрутизатора) состоит из двух 32-битных слов, первое из которых содержит поля “Тип”, “Код” и “Контрольная сумма”, а второе зарезервировано (заполняется нулями).

    Типы 17 и 18



    Сообщения типов 17 и 18 (запрос и ответ на запрос значения маски сети) используются в случае, когда хост желает узнать маску сети, в которой он находится. Для этого в адрес маршрутизатора (или широковещательно, если адрес маршрутизатора неизвестен) отправляется запрос. Маршрутизатор отправляет в ответ сообщение с записанным в нем значением маски той сети, из которой пришел запрос. В том случае, когда отправитель запроса еще не знает своего IP-адреса, ответ отправляется широковещательно.

    Поля “Идентификатор” и “Номер по порядку” могут использоваться для контроля соответствий запросов и ответов, но в большинстве случаев игнорируются.


    Содержание раздела