5.2. Несовместимое приложение получает сообщение ICMP без расширений
Когда несовместимое приложение ICMPv4 получает сообщение без расширений, оно проверяет общий размер сообщения ICMPv4. Если этот размер меньше размера заголовка IP в сообщении + + 144 октета, приложение корректно определяет отсутствие расширений.
Значение 144 включает 8 октетов двух первых слов сообщения ICMPv4 Time Exceeded, 128 октетов поля «исходной дейтаграммы», 4 октета заголовка расширения ICMP и 4 октета одного заголовка объекта ICMP. Все перечисленные октеты требуются при использовании расширений.
Если данные ICMPv4 включают не менее 144 октетов, приложение должно проверить октет 137 для определения наличия корректного заголовка ICMPv4 Extension. Корректный заголовок расширения должен содержать корректный номер версии и контрольную суииу. Если это не выполняется, приложение корректно считает, что в сообщении не содержится расширений.
Несовместимые приложения предполагают, что структура расширения ICMPv4 начинается с октета 137 сообщения Time Exceeded после поля «исходной дейтаграммы» размером 128 октетов.
В перечисленных ниже случаях возможен некорректный анализ несовместимым приложением сообщения ICMPv4:
- сообщение не содержит расширения;
- поле «исходной дейтаграммы» содержит не менее 144 октетов;
- выбранные октеты поля «исходной дейтаграммы» представляют корректные значения номера версии и контрольной суммы заголовка расширения.
Такие случаи возможны, но маловероятны.
Аналогичный анализ можно провести для ICMPv6 с соответствующим изменением числовых констант.