FREEnet PBL-0006 RU 1.1 1995-09-08
---------------------------------------------------------------------------
Протокол ICMP
Радик Усманов
radik@binep.ac.ru
Январь, 1995 г.
Реферат: Документ
содержит русский перевод спецификации протокола
ICMP (Internet Control Message Protocol) - протокола управляющих
сообщений в стеке протоколов IP, применяемого в международной
компьютерной сети
Internet. Оригинальный документ известен, как
RFC792.
Примечания редактора
Со временем в спецификацию протокола ICMP были введены еще
два
дополнительных типа сообщений: Address
Mask Request (код 17) и Address Mask
Reply (код 18). Данные типы
сообщений описаны в документе RFC950 "Internet
Standard Subnetting
Procedure".
Оригинальная версия документа RFC792 размещается на сервере
ISI
(Information
Sciences Institute):
URL -
http://info.internet.isi.edu/in-notes/rfc/files/rfc792.txt
---------------------------------------------------------------------------
Группа разработки сетей 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
должны отправляться в некоторых затруднительных
ситуациях. Например, когда датаграмма не может достичь своего
адресата, когда шлюз не имеет достаточно места в своем
буфере для
передачи какой-либо датаграммы,
или когда шдюз приказывает хост-
компьютеру отправлять информацию по более короткому
маршруту.
Протокол Internet не создан для того, чтобы обеспечивать абсо-
лютную надежность передачи
информации. Целью же данных контрольных
сообщений является обеспечение обратной связи, оповещение отправи-
теля данных о проблемах, возникающих в комминикационном
оборудова-
нии. Их целью не является придание
надежности протоколу IP. Прото-
кол не дает гарантий, что датаграмма
достигает своего адресата или
что контрольное сообщение будет возвращено компьтеру, отправившему
данные. Некоторые из датаграмм
могут исчезнуть в сети, не вызвав
при этом ни каких
оповещений. Протоколы более высокого уровня,
использующие протокол IP, должны применять свои собственные проце-
дуры для обеспечения надежности
передачи данных, если таковая тре-
буется.
Сообщения ICMP
протокола, как правило, оповещают об ошибках,
возникающих при обработке датаграмм.
Чтобы проблемы с передачей
сообщений не вызывали появление новых сообщений, чтобы это в
свою
очередь не привело к лавинообразному росту количества
сообщений,
циркулирующих в сети,
констатируется, что нельзя посылать сообще-
ния о сообщениях. Также
констатируется, что ICMP сообщения можно
посылать только о проблемах, возникающих при обработке нулевого
фрагмента в сегментированной датаграмме (нулевой фрагмент имеет
нуль в поле смещения фрагмента).
Форматы сообщений
ICMP сообщения
посылаются с помощью стандартного IP заголовка.
Первый октет в поле данных датаграммы
- это поле типа ICMP сообще-
ния. Значение этого пля определяет формат всех остальных данных в
датаграмме. Любое поле, которое
помечено "unused", зарегистрировано
для последующих разработок и должно при отправлении
содержать нули.
Однако получатель не должен использовать
значения этих полей (за
исключением процедуры вычисления контрольной суммы). Если
обратное
особо не оговорено при описании отдельных фрагметов, Internet заго-
ловок должен иметь в своих полях
следующие значения:
Версия
4
IHL
Длина Internet заголовка; единица измерения - 32-битное слово.
Тип сервиса
0
Общая длина
Длина Internet заголовка и поля данных в октетах.
Идентификация, флаги, смещение фрагмента
Используются в
случае фрагментации, см. [1].
Время жизни
Время жизни в
секундах. Поскольку значение этого поля уменьша-
ется
на единицу в каждой машине, на которой обрабатывается дан-
ная
датаграмма, то значение этого поля должно, по крайней
мере,
превышать
количество шлюзов, через которые будет проходить дан-
ная
датаграмма.
Протокол
ICMP=1
Контрольная сумма заголовка
16-битное
дополнение до единицы суммы дополнений до единицы
всех 16-битных слов
в заголовке. При вычислении данной суммы
следует
первоначально устанавливать значение этого поля в нуль.
В дальнейшем этот
алгоритм вычисления контрольной суммы должен
быть изменен.
Адрес отправления
Адрес шлюза или хост-компьютера, который составил данное
ICMP
сообщение. Если не
оговорено обратное, в этом поле может нахо-
диться
любой из адресов шлюза.
Адрес получателя
Адрес шлюза или хост-компьютера, которому следует послать
данное сообщение.
Сообщение о
недостижимости порта
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.
---------------------------------------------------------------------------