Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 8825-3-2016 Информационная технология (ИТ). Правила кодирования АСН.1. Часть 3. Спецификация нотации контроля кодирования (ECN)

     9.27 Управление кодированием для открытого типа

9.27.1 Открытые типы часто предоставляют средства расширяемости за счет добавления новых значений для идентификационных полей и новых типов для открытого типа в последующих версиях (и часто доступных для специализированных расширений).

9.27.2 Эти две возможности означают, что декодер может быть использован для декодирования открытого типа при том, что конкретная имплементация не знает ничего про тип, который был закодирован в нем.

9.27.3 Поддержка кодирования, предоставляемая для открытого типа, является в точности той же, что и для большинства других классов в bitfield категории, но с дополнительной возможностью указания, что другой набор объектов кодирования применяется к типу, который кодируется в открытый тип.

Примечание - Это является признанием того, что многие протоколы выбирают для использования другой стиль кодирования (часто на основе type-length-value подхода) для типа, содержащегося в открытом типе, сохраняя при этом более компактный стиль кодирование для полей сообщения, содержащих открытый тип.

9.27.4 Модель, используемая для декодирования открытого типа, определяет, что декодер не будет знать, какой тип заполняет открытый тип (таблицы и реляционные ограничения не видны ни для PER, ни для ECN), но приложение может быть в состоянии определить это из какого-либо другого поля в протоколе, или в предыдущем сообщении, или (для специализированных дополнений) на основе адреса вызывающей стороны.

9.27.5 Модель является такой потому, что, разобравшись с любым заданным предварительным заполнением и определив пространство кодирования и любое предварительное и последующее заполнение значения, декодер запросит у приложения тип, который был закодирован (в случае инструментов приложение почти наверняка будет иметь предварительно настроенный инструмент со списком известных типов, которые могут присутствовать, и просто вернет указатель на один из них). Затем декодирование может продолжиться в обычном режиме.

9.27.6 Однако приложение может сказать "unknown" (см. 9.27.4), тогда декодеру нужно узнать, как определить конец такого неизвестного кодирования. Этого можно добиться за счет разрешения спецификатору ECN предоставить структуру кодирования и (опционально) объект кодирования, установленный для использования с ней, что должно использоваться декодерами для декодирования неизвестных типов. Необходимый синтаксис приведен в разделе 23.

Примечание - Примером такой структуры кодирования может быть структура, определяющая широко известное "Type, Length, Value" кодирование, конец которого может быть определен без знания закодированного типа.