7. Структура расширения ICMP
В этом документе предлагается опциональная структура расширения (ICMP Extension Structure), которая может добавляться в конец сообщений ICMP, перечисленных в параграфе 4.6 этого документа.
Extension Structure содержит один заголовок расширения (Extension Header), за которым следует один или несколько объектов. Получив сообщение ICMP с расширениями, прикладная программа может обработать часть объектов, игнорируя остальные. Наличие в сообщении нераспознанных объектов не является показателем некорректного формата сообщения ICMP.
Как сказано выше, общий размер сообщения ICMP, включая расширения, не должен превышать минимальный размер буфера сборки. Рисунок 6 показывает формат ICMP Extension Header.
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| (Reserved) | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Рисунок 6: Заголовок расширения ICMP
Заголовок расширения ICMP имеет следующие поля:
- Version — версия (4 бита)
- Номер версии расширения ICMP. Данный документ задает версию 2.
- Reserved — резерв (12 битов)
- Резервное поле, которое должно иметь нулевое значение.
- Checksum — контрольная сумма (16 битов)
- Дополнение до 1 суммы дополнений до 1 октетов структуры данных. При расчете контрольной суммы значение поля предполагается нулевым. Равное нулю поле контрольной суммы говорит об отсутствии последней. Использование поля контрольной суммы в заголовке расширения описано в параграфе 5.2.