Приложение I. Формат пакетов ICMP
Пакеты Address Format Request и Address Format Reply включают показанные на рисунке поля:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Поля IP:
- Адреса
- Адрес отправителя в сообщении Address Format Request будет адресом получателя Address Format Reply. При создании отклика адрес отправителя из запроса становится адресом получателя, а в качестве отправителя отклика указывается адрес отвечающего хоста, код типа меняется на A2, значение размера поля номера подсети помещается в поле Code и запово рассчитывается контрольная сумма. Однако если в качестве адреса отправителя запроса указан 0, в качестве адреса получателя отклика указывается широковещательный адрес.
Поля ICMP:
- Type — тип
- A1 для запросов;
A2 для откликов. - Code — код
0 для сообщений Address Format Request.
Размер поля номера подсети в сообщениях Address Format Reply.
- Checksum — контрольная сумма
Контрольная сумма представляет собой 16-битовое поразрядное дополнение до 1 суммы дополнений до 1, рассчитанной для сообщения ICMP, начиная с поля ICMP Type. При расчете контрольной суммы значение поля принимается нулевым. Механизм расчета контрольной суммы в будущем может измениться.
- Identifier — идентификатор
Идентификатор служит для сопоставления запросов и откликов. Может иметь нулевое значение.
- Sequence Number — порядковый номер
Номер служит для сопоставления запросов и откликов. Может иметь нулевое значение.
- Описание
Шлюзу, получившему сообщение Address Format Request следует возвратить отклик на него, указав в поле Code число битов поля номера подсети в адресах IP для сети, в которую дейтаграмма была адресована. Если запрос был широковещательным, получателем будет «данная сеть». Размер поля Subnet может принимать значения от 0 до (31 — N), где N задает число битов в поле номера сети IP (т. е., 8, 16 или 24).
Если запрашивающий хост не знает своего адреса IP, он может указать значение 0 в поле адреса отправителя; отклик следует передавать по широковещательному адресу. Поскольку для сети существует один возможный формат адреса, нет необходимости устанавливать соответствие между запросами и откликами. Однако такого подхода следует, по возможности, избегать, поскольку он ведет к росту широковещательной нагрузки на сеть.
- Тип A1 может приходить от шлюза или хоста.
- Тип A2 может приходить от шлюза или хоста, действующего в качестве шлюза.