RFC 792 на русском

Группа разработки сетей                                   J.Postel
Request for Comment                                      ISI
                                                     сентябрь 1981

              Протокол контрольных сообщений Internet             
                     Программа DARPA Internet                     
                      Спецификация протокола     

Введение

Протокол Internet (IP) [1] используется для обработки датаграм-
мы, передаваемой между хост-компьютерами в системе объединенных
сетей, называемой Catenet [2].

Устройства, осуществляющие соедине-
ние различных сетей, называются шлюзами. Для обеспечения управле-
ния шлюзы общаются друг с другом посредством протокола Gateway to
Gateway Protocol (GGP) [3,4].
Порой шлюз или хост-компьютер, полу-
чающий данные, обменивается информацией с хост-компьютером, от-
правляющим эти данные. Именно для таких целей используется данный
протокол - протокол контрольных сообщений Internet (ICMP).

ICMP использует основные свойства протокола Internet (IP), как если бы
ICMP являлся протоколом более высокого уровня.
Однако фактически
ICMP является составной частью протокола Internet и должен являть-
ся составной частью каждого модуля IP.

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

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

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

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

Форматы сообщений

ICMP сообщения посылаются с помощью стандартного IP заголовка.
Первый октет в поле данных датаграммы - это поле типа ICMP сообще-
ния. Значение этого пля определяет формат всех остальных данных в
датаграмме. Любое поле, которое помечено "unused", зарегистрировано
для последующих разработок и должно при отправлении содержать нули.
Однако получатель не должен использовать значения этих полей (за
исключением процедуры вычисления контрольной суммы). Если обратное
особо не оговорено при описании отдельных фрагметов, Internet заго-
ловок должен иметь в своих полях следующие значения (эти значения задаются для IP пакета, в который инкапсулируется ICMP):

  1. Версия = 4
  2. IHL - Длина Internet заголовка; единица измерения - 32-битное слово. (значение варьируется по ситуации)
  3. Тип сервиса (тип обслуживания) = 0
  4. Общая длина = Длина Internet заголовка и поля данных в октетах. (значение варьируется по ситуации)
  5. Идентификация
  6. флаги
  7. смещение фрагмента (Используются в случае фрагментации, см. [1].)
  8. Время жизни = Время жизни в секундах. Поскольку значение этого поля уменьшается на единицу в каждой машине, на которой обрабатывается данная датаграмма, то значение этого поля должно, по крайней мере, превышать количество шлюзов, через которые будет проходить данная датаграмма.
  9. Протокол = номер ICMP =1
  10. Контрольная сумма заголовка =16-битное дополнение до единицы суммы дополнений до единицы всех 16-битных слов в заголовке. При вычислении данной суммы следует первоначально устанавливать значение этого поля в нуль. (то есть - поле самой суммы при вычислении суммы как бы не учитывается - то есть считается равным нулю) В дальнейшем этот алгоритм вычисления контрольной суммы должен быть изменен.
  11. Адрес отправления = Адрес шлюза или хост-компьютера, который составил данное ICMP сообщение. Если не оговорено обратное, в этом поле может находиться любой из адресов шлюза.
  12. Адрес получателя = Адрес шлюза или хост-компьютера, которому следует послать данное сообщение.
   Сообщение о недостижимости порта
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Тип       |      Код      |    Контрольная сумма          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      не используется                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet заголовок + 64 бита данных из исходной датаграммы    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Поля Internet протокола:
Адрес получателя = Локальная сеть и адрес компьютера, отправившего исходную датаграмму
Поля ICMP протокола
Тип = 3
Код

0 - невозможно передать датаграмму на локальную сеть, где 
          находится адресат
      1 - невозможно передать датаграмму на хост-компьютер, 
          являющийся адресатом
      2 - нельзя воспользоваться указанным протоколом
      3 - нельзя передать данные на указанный порт
      4 - для передачи датаграммы по сети требуется фрагментация, 
          однако выставлен флаг DF.
      5 - сбой в маршрутизации при отправлении

Контрольная сумма
Контрольная сумма является 16-битным дополнением до единицы
суммы дополнений октетов в полях ICMP сообщения, начиная с
поля типа ICMP. Для вычисления контрольной суммы первона-
чально значение этого поля обнуляется. В будущем процедура
вычисления контрольной суммы может быть изменена.
Internet заголовок + 64 бита данных из исходной датаграммы
Данное поле содержит Internet заголовок и первые 64 бита дан-
ных из исходной датаграммы для выработки сообщения для соот-
ветствующего процесса. Если протокол более высокого уровня
использует номера портов, то предполагается, что эти номера
находятся в первых 64 битах поля данных.
Описание
Если, согласно информации в таблицах маршрутизации шлюза,
локальная сеть, указанная в Internet заголовке датаграммы в поле
адресата, является недостижимой, например, из-за ее чрезмерной
удаленности, то шлюз может послать хост-компьютеру, отправившему
датаграмму по Internet сети, сообщение о недостижимости адреса-
та.
Кроме этого, в некоторых сетях шлюз может иметь возможность
определять доступность отдельного хост-компьютера. Шлюз в такой
сети может послать данное сообщение, если хост-компьютер, являю-
щийся адресатом, недоступен.
Иная ситуация возникает, когда для достижения адресата дата-
грамма должна быть разбита шлюзом на отдельные фрагменты, но
установлен флаг запрета фрагментации. О этом случае шлюз обязан
ликвидировать датаграмму и можен при этом послать сообщение о
недостижимости адресата.
Шлюз может послать сообщения с кодами 0, 1, 4 и 5. Хост-
компьютер может послать сообщения с кодами 2 и 3.

Сообщение о превышении контрольного времени
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Тип       |      Код      |    Контрольная сумма          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      не используется                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet заголовок + 64 бита данных из исходной датаграммы    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Поля IP заголовка
Заимствованы сеть и адрес отправителя из мсходной датаграммы с
данными.
Поля ICMP сообщения
Тип
11
Код
0 - при передаче превышено время жизни
1 - превышено контрольное время при сборке фрагментов дата-
граммы
Контрольная сумма
Контрольная сумма является 16-битным дополнением до единицы
суммы дополнений в ICMP сообщении, начиная с поля типа ICMP.
При вычислениии суммы следует сперва обнулить поле
контрольной суммы. В будущем алгоритм контрольной суммы может
быть изменен.
Internet заголовок + 64 бита данных из исходной датаграммы
Internet заголовок плюс первые 64 бита данных из исходной
датаграммы. Эти биты данных используются хост-компьютером для
привязки сообщения к соответствующему процессу. Если протокол
более высокого уровня использует номера портов, то предпола-
гается, что эти номера входят в первые 64 бита данных в ис-
ходной датаграмме.
Описание
Если фрагмент нулевого размера превысил контрольное время, то
сообщение в этом не посылается вовсе.
Шлюз может послать сообщение с кодом 0б а хост - с кодом 1.

 Сообщение о проблемах с параметром
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Тип       |      Код      |    Контрольная сумма          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   указатель   |      не используется                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet заголовок + 64 бита данных из исходной датаграммы    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Поля IP заголовка
Заимствованы сеть и адрес отправителя из мсходной датаграммы с
данными.
Поля ICMP сообщения
Тип
12
Код
0 - указатель показывает ошибку
Контрольная сумма
Контрольная сумма является 16-битным дополнением до единицы
суммы дополнений в ICMP сообщении, начиная с поля типа ICMP.
При вычислении суммы следует сперва обнулить поле контрольной
суммы. В будущем алгоритм вычисления контрольной суммы может
быть изменен.
Указатель
Если код = 0, то он указывает на октет, где была обнаружена
ошибка.
Internet заголовок + 64 бита данных из исходной датаграммы
Эти биты данных используются хост-компьютером для привязки
сообщения к соответствующему процессу. Если протокол более
высокого уровня использует номера портов, то предполагается,
что эти номера входят в вервые 64 бита данных в исходной да-
таграмме.
Описание
Если шлюз или хост-компьютер, обрабатывающий датаграмму,
обнаруживает проблему с обработкой параметров заголовка, и это
не позволяет завершить ее обработку, то он должен ликвидировать
рассматриваемую датаграмму. Одной из потенциальных причин такой
неприятности могут бить неправильные аргументы в опции. Шлюз или
хост-компьютер в сообщении о проблеме с параметрами может также
упомянуть хост-компьютер, породивший датаграмму с ошибкой. Сооб-
щения такого типа посылаются лишь в том случае, если ошибка при-
водит к ликвидации этой датаграммы.
Указатель определяет октет в заголовке исходной датаграммы,
где была обнаружена ошибка (этот ошибочный октет может находить-
ся даже посередине опции). Например, 1 указывает на то, что име-
ется какая-то ошибка в поле типа сервиса, а (если имеются опции)
20 определяет, что имеется ошибка в коде типа для первой опции.
Код 0 сообщения может приходить как от шлюза, так и от хост-
компьютера.

   Сообщение для приостановки отправителя
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Тип       |      Код      |    Контрольная сумма          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      не используется                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet заголовок + 64 бита данных из исходной датаграммы    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Поля IP заголовка
Заимствованы сеть и адрес отправителя из исходной датаграммы с
данными.
Поля ICMP сообщения
Тип
4
Код
0
Контрольная сумма
Контрольная сумма является 16-битным допонением до единицы
суммы дополнений в ICMP сообщении, начиная с поля типа ICMP.
При вычислении контрольной суммы следует сперва обнулить поле
контрольной суммы. В будущем алгоритм вычисления контрольной
суммы может быть изменен.
Internet заголовок + 64 бита данных из исходной датаграммы
Internet заголовок плюс первые 64 бита данных из исходной
датаграммы. Эти данные используются хост-компьютером для
привязки сообщения к соответствующему процессу. Если протокол
более высокого уровня использует номера портов, то предпола-
гается, что эти номера входят в первые 64 бита данных ис-
ходной датаграммы.
Описание
Шлюз может ликвидировать Internet датаграммы, если у него нет
места в буфере для постановки этих датаграмм в очередь на от-
правление в очередную сеть по маршруту следования к адресату.
Если шлюз ликвидирует датаграмму, то он должен послать сообщение
для приостановки хост-компьютеру в Internet системе, отправивше-
му данную датаграмму. Сообщение о приостановке может послать
также сам адресат, если датаграммы приходят слишком быстро, что-
бы успеть их обработать. Сообщение о приостановке является за-
просом для хост-компьютера уменьшить скорость посылки данных на
этот конкретный адрес. Шлюз может посылать сообщение для при-
остановки отправителя в каждом случае ликвидации. При получении
такого сообщения хост-компьютер, отправивший данные, должен
уменьшить скорость посылки данных по этому адресу до тех пор,
пока не перестанут приходить запросы на приостановку с данного
шлюза. После этого хост-компьютер, отправляющий данные, может
постепенно увеличивать скорость посылки данных по этому адресу,
пока вновь не станут приходить сообщения о приостановке.
Шлюз или хост-компьютер может посылать сообщение о приоста-
новке еще до достижения предельной пропускной способности, и не
ждать, пока этот предел будет пройден. Это означает, что дата-
грамма с данными, вызвавшая появление сообщения о приостановке,
все же может достичь своего адресата.
И шлюз и хост-компьютер могут отправить сообщение с кодом 0.

   Сообщение о переадресации
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Тип       |      Код      |    Контрольная сумма          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               Internet адрес шлюза                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet заголовок + 64 бита данных из исходной датаграммы    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Поля IP заголовка
Заимствованы сеть и адрес отправителя из исходной датаграммы с
данными.
Поля ICMP сообщения
Тип
5
Код
0 - переадресация датаграмм для сети
1 - переадресация датаграмм для хост-компьютера
2 - переадресация датаграмм для типа услуг и сети
3 - переадресация датаграмм для типа услуг и хост-компьютера
Контрольная сумма
Контрольная сумма - это 16-битное допонение до единицы суммы
дополнений в ICMP сообщении, начиная с поля типа ICMP. При
вычислении контрольной суммы следует сперва обнулить поле
контрольной суммы. В будущем алгоритм вычисления контрольной
суммы может быть изменен.
Internet адрес шлюза
Адрес шлюза, на который должен быть проложен маршрут к сети,
указанной в поле адреса в исходной датаграмме с данными.
Internet заголовок + 64 бита данных из исходной датаграммы
Internet заголовок плюс первые 64 бита данных из исходной
датаграммы. Эти данные используются хост-компьютером для при-
вязки сообщения к соответствующему процессу. Если протокол
более высокого уровня использует номера портов, то предпола-
гается, что эти номера входят в первые 64 бита данных исход-
ной датаграммы.
Описание
Шлюз посылает сообщение на хост-компьютер о переадресации в
следующей ситуации: Шлюз G1 получает Internet датаграмму от
хост-компьютера в сети, где он расположен. Шлюз G1 проверяет
таблицу маршрутизации и находит адрес слеудющего шлюза G2 в ка-
честве маршрута для датаграммы по пути в сеть X, где расположен
ее адресат. Если G2 и исходный хост-компьютер идентифицируются
Internet адресом как находящиеся в одной и той же сети, то на
хост-компьютер следует послать сообщение о переадресации. Сооб-
щение о переадресации заставляет хост-компьютер посылать дата-
граммы для сети X прямо на шлюз G2, поскольку это более короткий
путь, нежели привлекать еще шлюз G1. Шлюз передает данные исход-
ной датаграммы их адресату в системе Internet.
Для датаграмм с опциями IP маршрутизации отправления и адре-
сом шлюза в поле получателя сообщение не посылается, даже если и
существует более оптимальный маршрут к конечному адресату, чем
следующий адрес, указанный в такой опции маршрута.
Шлюзом могут быть переданы сообщения с кодами 0, 1, 2 и 3.

   Эхо-сообщение и сообщение в ответ на эхо
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Тип       |      Код      |    Контрольная сумма          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Идентификатор       |     Номер очереди             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Данные .....
+-+-+-+-+-+-+-

Поля IP заголовка
Адреса
Адрес отправителя в эхо-сообщении будет адресом получателя в
ответном сообщении. Чтобы сформировать сообщение ответа, сле-
дует просто переставить местами адреса отправителя и получа-
теля, код типа изменить на 0 и пересчитать контрольную сумму.
Поля ICMP сообщения
Тип
8 - эхо-сообщение
0 - сообщение в ответ на эхо
Код
0
Контрольная сумма
Контрольная сумма - это 16-битное допонение до единицы суммы
дополнений для ICMP сообщения, начиная с поля типа ICMP. При
вычислении контрольной суммы это поле должно быть сперва об-
нулено. Если общая длина сообщения нечетная, то для вычисле-
ния контрольной суммы поле данных дополняется еще одним нуле-
вым октетом. В будущем алгоритм вычисления контрольной суммы
может быть изменен.
Идентификатор
Если код = 0, то идентификатор для соотнесения эхо-сообщений
и ответов на них, должен быть обнулен.
Номер очереди
Если код = 0, то номер очереди, служащий для соотнесения
эхо-сообщений и ответов на них, должен быть обнулен.
Описание
Данные из эхо-сообщения должны быть переданы в ответе на это
сообщение.
Идентификатор и номер очереди может использоваться отправите-
лем эхо-сообщения с целью идентификации приходящих пакетов. На-
пример, идентификатор может использоваться в качестве порта по-
добно протоколам TCP и UDP для идентификации сеанса. Номер оче-
реди может увеличиваться на единицу припосылке каждого эхо-
сообщения (запроса). Компьютер, отозвавшийся на это сообщение,
возвращает в своем ответе те же значения для идентификатора и
номера очереди, что были в исходном эхо-сообщении.
Как шлюз, так и хост-компьютер могут возвращать сообщение с
кодом 0.

   Сообщение со штампом времени и сообщение с ответом на штамп 
   времени
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Тип       |      Код      |    Контрольная сумма          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Идентификатор       |     Номер очереди             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Штамп времени отправления                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Штамп времени получения                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Штамп времени передачи                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Поля IP заголовка
Адреса
Адрес отправителя в сообщении со штампом времени будет адре-
сом получателя в сообщении с ответом. Чтобы сформировать от-
вет на сообщение, следует просто поменять местами адреса от-
правителя и получателя, выбрать код типа 14, а также пересчи-
тать контрольную сумму.
Поля ICMP сообщения
Тип
13 для сообщения со штампом времени
14 для ответа на сообщение со штампом времени
Код
0
Контрольная сумма
Контрольная сумма - это 16-битное допонение до единицы суммы
дополнений для ICMP сообщения, начиная с поля типа ICMP. При
вычислении контрольной суммы это поле должно быть сперва об-
нулено. В будущем алгоритм вычисления контрольной суммы
может быть изменен.
Идентификатор
Если код = 0, то идентификатор, служащий для соотнесения
сообщений со штампом времени и ответов на них, должен быть
обнулен.
Номер очереди
Если код = 0, то номер очереди, служащий для соотнесения
сообщений со штампом времени и ответов на них, должен быть
обнулен.
Описание
Данные из сообщения (штамп времени) возвращаются вместе с
ответом, при этом в них добавляется еще один штамп времени.
Штамп времени - это 32 бита, где записано время в миллисекундах,
прошедшее после полуночи по единому времени (UT). Один из приме-
ров использования таких временных штампов приведен в документе
[5].
Штамп времени отправления - это время, которое отправитель
фиксировал последний раз перед посылкой сообщения. Штамп времени
получения - это время, когда исходное сообщение впервые увидел
получатель первоначального сообщения. Штамп времени передачи -
это время, которое фиксировал в последний раз компьютер, отправ-
ляющий ответное сообщение.
Если нет возможности измерять время в миллисекундах или нель-
зя определить единое время (UT), то в штамп все же можно занести
имющееся время, снабдив его единицей в старшем бите. Последнее
также указывает на запись нестандартного значения в этом поле.
Идентификатор и номер очереди могут использоваться отправите-
лем для соотнесения сообщений (запросов) и ответов на них. На-
пример, идентификатор может использоваться в качестве порта,
аналогично протоколам TCP и UDP, для идентификации сессии. Номер
очереди может увеличиваться на единицу при каждой посылке сооб-
щения (запроса). Адресат возвращает для этих параметров те зна-
чения, которые были обнаружены в запросе.
И шлюз и хост-компьютер могут возвращать сообщения с кодом 0.

   Запрос информации и ответное сообщение с информацией
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Тип       |      Код      |    Контрольная сумма          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Идентификатор       |     Номер очереди             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Поля IP заголовка
Адреса
Адрес отправителя в сообщении с запросом информации окажется
адресом получателя в ответном сообщении с информацией. Чтобы
сформировать ответное сообщение, следует просто поменять мес-
тами адреса отправителя и получателя, код типа сменить на 16,
пересчитать контрольную сумму.
Поля ICMP сообщения
Тип
15 - сообщение с запросом информации
16 - ответное сообщение с информацией
Код
0
Контрольная сумма
Контрольная сумма - это 16-битное допонение до единицы суммы
дополнений для ICMP сообщения, начиная с поля типа ICMP. При
вычислении контрольной суммы следует предварительно обнулить
поле самой контрольной суммы. В будущем алгоритм вычисления
контрольной суммы может быть изменен.
Идентификатор
Если код = 0, то идентификатор, служащий для соотнесения за-
просов и ответов, может быть обнулен.
Номер очереди
Если код = 0, то номер очереди, служащий для соотнесения за-
просов и ответов, может быть обнулен.
Описание
Данное сообщение может быть послано, когда в IP заголовке в
полях отправителя и получателя записаны нули (это означает
"именно эту" локальную сеть). В ответ должен быть послан IP мо-
дуль с полностью заданными адресами. Данное сообщение является
способом, с помощью которого хост-компьютер сможет определить
номер сети, куда он подключен.
Отправитель сообщений может использовать идентификатор и но-
мер очереди для соотнесения запросов и пришедших ответов. Напри-
мер, идентификатор может использоваться как порт в протоколах
TCP и UDP для идентификации сеанса. Номер очереди может увеличи-
ваться на единицу всякий раз, когда посылается запрос. Адресат
возвращает в ответе те же значения этих параметров, которые были
обнаружены в запросе.
И хост-компьютер и шлюз могут возвращать сообщения с кодом 0.

Список типов сообщений
0 ответ на запрос эхо
3 адресат недостижим
4 приостановка отправителя
5 переадресация
8 эхо-запрос
11 превышение контрольного времени
12 проблемы с параметрами
13 штамп времени
14 ответ на запрос штампа времени
15 запрос информации
16 ответ на запрос информации

Ссылки
[1] Postel, J. (ed.), "Internet Protocol - DARPA Internet Program
Protocol Specification," RFC 791, USC/Information Sciences
Institute, September 1981.
[2] Cerf, V., "The Catenet Model for Internetworking," IEN 48,
Information Processing Techniques Office, Defense Advanced
Research Project Agency, July 1978.
[3] Strazisar, V., "Gateway Routing: An Implementation
Specification", IEN 30, Bolt Beranek and Newman, April 1979.
[4] Strazisar, V., "How to Build a Gateway", IEN 109, Bolt Beranek
and Newman, August 1979.
[5] Mills, D., "DCNET Internet Clock Service," RFC 778, COMSAT
Laboratories, April 1981.