Jump to content

Обозначение управления кодированием

Нотация управления кодированием (ECN) — это стандартизированный формальный язык, входящий в Abstract Syntax Notation One (ASN.1). семейство международных стандартов [1] ECN предназначен для использования вместе с ASN.1, и каждая спецификация ECN (согласованный набор определений кодирования) явно связана с конкретной спецификацией ASN.1 (согласованный набор определений типов).

Стандарт ECN опубликован как ITU-T, так и ISO , и официально называется ITU-T Рекомендации X.692 | ИСО/МЭК 8825-3, Информационные технологии. Правила кодирования ASN.1: Спецификация нотации управления кодированием (ECN) . [2]

ECN поддерживает формальную спецификацию нестандартных правил кодирования для определений типов ASN.1 и предназначен для использования всякий раз, когда необходимо использовать кодировки, которые отличаются от тех, которые предусмотрены стандартизированными правилами кодирования, такими как BER или PER.

Использование ECN

[ редактировать ]

Тип ASN.1 имеет набор абстрактных значений. Правила кодирования определяют представление этих абстрактных значений в виде последовательности битов. Существуют приложения, в которых требуются специальные кодировки, отличные от тех, которые можно получить с помощью любого из стандартных наборов правил кодирования ASN.1.

Вот несколько примеров возможных ситуаций, требующих меньших или больших отклонений от стандартных кодировок:

  • протокол может требовать чрезвычайно компактных кодировок; даже несмотря на то, что правила невыровненного пакетного кодирования (PER) в целом довольно компактны, в некоторых случаях дополнительная компактность может быть достигнута за счет использования статистического распределения значений определенных полей или путем удаления других форм избыточности;
  • протокол может требовать, чтобы определенные части закодированного сообщения были легко доступны без необходимости декодировать все сообщение, скажем, с помощью полного PER-декодера; вообще, переход в середину сообщения, закодированного в PER, и начало декодирования с этой точки не рекомендуется, но в некоторых случаях это может быть необходимо или полезно; в таких случаях доступ к определенным частям кодировки можно облегчить и сделать надежным, указав модифицированную версию PER;
  • существуют некоторые стандартные протоколы, которые кодируют свои данные в формате значения длины тега (TLV), аналогичном BER; можно создать формальную спецификацию ASN.1 для одного из этих протоколов и указать модифицированную версию BER, соответствующую специальному формату TLV;
  • существует множество стандартных протоколов, которые кодируют свои данные в специальном двоичном формате (обычно указанном в таблицах), который может существенно отличаться от PER или любого другого набора правил кодирования ASN.1; можно создать формальную спецификацию ASN.1 для одного из этих протоколов и указать двоичную кодировку, соответствующую специальному формату.

В приведенных выше случаях и во многих других подобных случаях совместное использование ASN.1 и ECN позволяет создать полную формальную спецификацию как абстрактного синтаксиса (схемы), так и кодировок. Затем кодеры и декодеры могут быть автоматически созданы на основе объединенных спецификаций. Это существенный фактор снижения как объема работ, так и возможности ошибок при создании интероперабельных систем. Еще одним существенным преимуществом ECN является возможность предоставления автоматической инструментальной поддержки для тестирования. Эти преимущества доступны только с ASN.1, когда стандартизированных правил кодирования достаточно, но ECN обеспечивает эти преимущества в обстоятельствах, когда стандартизированных правил кодирования недостаточно.

Концепции

[ редактировать ]

Чтобы понять, как работает ECN, полезно сосредоточиться на четырех видах элементов языка ASN.1: встроенных типах (например, INTEGER и UTF8String), встроенные ключевые слова конструктора (например, SEQUENCE, CHOICE, SEQUENCE OF, OPTIONAL), определяемые пользователем простые типы (например, Age ::= INTEGER(0..200), Color ::= ENUMERATED { green, yellow, red }) и определяемые пользователем сложные типы (например, Name ::= SEQUENCE { first UTF8String, middle UTF8String, last UTF8String }). Есть и другие аспекты ASN.1, которые также отражены в ECN, но мы не будем их здесь обсуждать.

Язык ECN также имеет встроенные типы, встроенные ключевые слова конструктора, определяемые пользователем простые типы и определяемые пользователем сложные типы. Эти элементы языка ECN аналогичны элементам ASN.1, но их имена всегда начинаются с # . Официально они называются классами кодирования , но здесь мы будем называть их просто типами ECN и ключевыми словами конструктора ECN . Примеры типов ECN: #INTEGER (встроенный), #UTF8String (встроенный), #Age (простой, определяемый пользователем), #Name (сложный, определяемый пользователем). Примеры ключевых слов конструктора ECN: #SEQUENCE, #CHOICE, #SEQUENCE-OF, и #OPTIONAL (все встроенное).

В отличие от ASN.1, ECN позволяет пользователю языка определять синонимы ключевых слов конструктора ECN (например, #InterleavedSequence ::= #SEQUENCE). Таким образом, в ECN существуют определяемые пользователем ключевые слова конструктора ECN, а также встроенные ключевые слова конструктора ECN.

С точки зрения ECN, каждый определяемый пользователем тип ASN.1, встречающийся в спецификации ASN.1, имеет скрытый тип ECN, неявно связанный с ним. Официально этот скрытый тип ECN называется неявно генерируемой структурой кодирования , но здесь мы будем называть его просто скрытым типом ECN типа ASN.1. Скрытые типы ECN — это особый вид определяемых пользователем типов ECN (их определение ECN автоматически генерируется из определяемого пользователем типа ASN.1, а не предоставляется пользователем), но они ведут себя как другие определяемые пользователем типы ECN.

Скрытый тип ECN типа ASN.1 почти идентичен исходному типу ASN.1 (но немного упрощен) и является отправной точкой для процесса кодирования, указанного в ECN, который в конечном итоге генерирует серию битов, представляющих любое заданное значение. исходного типа АСН.1. На тип ASN.1 (или на любую из его частей) нельзя напрямую ссылаться с целью указания кодировки в ECN, но на его скрытый тип ECN можно ссылаться. Типы ECN и ключевые слова конструктора ECN могут явно ссылаться на спецификацию ECN и кодироваться с применением правил, содержащихся в спецификации ECN.

Грубо говоря, спецификация ECN делает две вещи: она говорит, как изменить скрытый тип ECN для создания нового ( цветного ; см. ниже) скрытого типа ECN, и говорит, как тип ECN (а также каждый из его компонентов, если он сложный тип) должен быть закодирован. Последнее может применяться рекурсивно в том смысле, что этап кодирования компонента типа ECN может привести к дальнейшей модификации на месте оставшейся части типа ECN, которая кодируется. Этот процесс может продолжаться любое количество циклов, пока окончательный тип ECN не будет полностью закодирован, то есть все биты, представляющие значение исходного типа ASN.1, не будут сгенерированы.

Наконец, мы представляем концепцию кодирования объекта . Это очень важный элемент языка ECN, который относится к каждому отдельному правилу кодирования, которое является частью спецификации ECN и применяется к типу ECN или ключевому слову конструктора ECN, встроенному или определяемому пользователем, встречающемуся в спецификации. .

Механизмы

[ редактировать ]

Первым шагом процесса кодирования является автоматическое создание скрытых типов ECN из всех типов ASN.1, присутствующих в спецификации ASN.1. Скрытые типы ECN, соответствующие сложным пользовательским типам ASN.1, могут быть модифицированы с помощью механизма, называемого раскраской , который заключается в замене названий типов некоторых их компонентов синонимами. Также можно заменить ключевые слова встроенного конструктора ECN (например, #SEQUENCE, #OPTIONAL), встречающийся в скрытом типе ECN с синонимами. В ECN есть несколько встроенных синонимов как для ключевых слов конструктора, так и для встроенных типов (например, #CONCATENATION является синонимом #SEQUENCE, #INT является синонимом #INTEGER), но пользователь языка может определить как пользовательские типы, так и определяемые пользователем ключевые слова конструктора как синонимы других. Целью этапа раскраски является подготовка скрытого типа ECN для следующего шага - кодирования его компонентов, на случай, если необходимо закодировать по-разному разные вхождения одного и того же типа ECN или разные вхождения одного и того же типа. Ключевое слово конструктора ECN присутствует в скрытом типе ECN. Например, сложный скрытый тип ECN может содержать два списка ( #SEQUENCE-OF), но один список должен быть закодирован путем вставки поля счетчика перед первым элементом списка, а другой должен быть закодирован путем вставки завершающего шаблона после последнего элемента списка. Это можно сделать, например, заменив первый #SEQUENCE-OF ключевое слово в скрытом типе ECN, скажем, #CountBasedRepetition, заменив второй #SEQUENCE-OF ключевое слово, скажем, #TerminatingPatternBasedRepetitionи объявив эти два имени как определяемые пользователем синонимы ключевого слова конструктора ECN #SEQUENCE-OF. Как только эти два разных ключевых слова конструктора будут включены в скрытый тип ECN, каждый из двух списков может быть закодирован с помощью другого объекта кодирования.

Вторым шагом процесса кодирования является применение объекта кодирования к скрытому типу ECN. Кодируемое значение будет одним из возможных значений типа ASN.1, определенного в спецификации ASN.1, а процесс кодирования выберет скрытый тип ECN этого типа ASN.1 и применит соответствующий объект кодирования к это.

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

В ECN существует несколько видов кодирования объектов. Некоторые объекты кодирования полностью определяют фактическое кодирование на уровне битов простых типов ECN и являются наиболее простыми для понимания. Другие применяются к ключевым словам конструктора ECN, а не к типам ECN, и определяют некоторые структурные аспекты кодирования сложного типа ECN (или его части), созданного ключевым словом конструктора ECN (но не указывают всю его кодировку). Другие работают путем замены типа ECN (или его части) другим типом ECN, который затем необходимо закодировать, применив к нему другой объект кодирования.

Ниже перечислены наиболее важные виды кодирования объектов в ECN:

  • некоторые объекты кодирования определяют кодировку на уровне битов типа ECN;
Эти объекты кодирования применяются в основном к простым типам ECN и имеют несколько параметров, определяющих кодировку значения на уровне битов, размер кодировки, любое предшествующее или конечное заполнение, любое выравнивание по границе октета или слова, любые перестановки битов и т. д. .
  • некоторые объекты кодирования указывают, что тип ECN должен быть заменен определяемым пользователем типом ECN, который содержит прежний тип ECN в качестве одного из своих компонентов;
Тип замены должен быть указан в спецификации ECN, а не в спецификации ASN.1. Пользовательский тип ECN должен иметь имя, начинающееся с #, которое не должно совпадать с именем любого скрытого типа ECN.
  • некоторые объекты кодирования указывают, что тип ECN должен быть заменен определяемым пользователем типом ECN, и указывают, как сопоставить каждое значение первого типа со значением второго типа;
Тип замены должен быть указан в спецификации ECN, а не в спецификации ASN.1. Пользовательский тип ECN должен иметь имя, начинающееся с #, которое не должно совпадать с именем любого скрытого типа ECN.
  • некоторые объекты кодирования определяют, как представлять наличие или отсутствие компонента #SEQUENCE тип, который объявлен #OPTIONAL; эти объекты кодирования могут применяться только к типам ECN, которые являются необязательными компонентами #SEQUENCE тип;
Вот несколько типичных способов, которыми эти объекты кодирования могут представлять наличие необязательного компонента:
  1. используя поле (обычно логическое), значение которого указывает на наличие или отсутствие необязательного компонента и которое было вставлено в тип ECN другим объектом кодирования, примененным на более раннем этапе;
  2. опираясь на конкретный битовый шаблон, который встречается в определенных точных битовых позициях в кодировках всех возможных значений необязательного компонента, но никогда не встречается в кодировках любого из типов, которые могут следовать после необязательного компонента в соответствии со спецификацией ECN;
  3. полагаясь на размер охватывающей кодировки, чтобы определить, поместится ли кодировка необязательного компонента в оставшееся пространство.
  • некоторые объекты кодирования определяют, как представлять количество элементов списка ( #SEQUENCE-OF); эти объекты кодирования могут применяться только к типам ECN, которые #SEQUENCE-OF типы;
Вот несколько типичных способов, которыми эти объекты кодирования могут представлять длину списка:
  1. путем использования поля, содержащего длину списка и которое было вставлено в тип ECN другим объектом кодирования, примененным на более раннем этапе;
  2. полагаясь на конкретный битовый шаблон, который встречается в определенных точных битовых позициях в кодировках всех возможных значений повторяющегося компонента списка, но никогда не встречается в кодировках любого из типов, которые могут идти после списка в соответствии с ECN спецификация;
  3. основываясь на размере охватывающей кодировки, чтобы определить, сколько экземпляров кодировки повторяющегося компонента поместится в оставшемся пространстве;
  4. путем выбора битовой строки, которая не соответствует кодировке какого-либо значения повторяющегося компонента списка, и вставки этой битовой строки после последнего элемента списка;
  5. используя поле (обычно логическое) внутри повторяющегося компонента, значение которого указывает, является ли этот элемент последним элементом списка.
  • некоторые объекты кодирования определяют, как указать, какая из альтернатив #CHOICE присутствует и может применяться только к типам ECN, которые #CHOICE типы;
Вот несколько типичных способов, с помощью которых эти объекты кодирования могут указывать, какая из альтернатив #CHOICE присутствует:
  1. путем использования поля, содержащего индекс альтернативы и которое было добавлено к типу ECN другим объектом кодирования, примененным на более раннем этапе;
  2. полагаясь на конкретный битовый шаблон, который встречается в определенных точных местах битов в кодировках всех возможных значений каждой альтернативы и различен для каждой альтернативы.
  • некоторые объекты кодирования указывают, что тип ECN должен быть закодирован путем применения к нему стандартного набора правил кодирования (например, PER).
  1. ^ «Рекомендация МСЭ-Т X.680/ISO/IEC 8824-1» . Проверено 28 августа 2008 г.
  2. ^ «Рекомендация МСЭ-Т X.692/ISO/IEC 8825-3» . Проверено 28 августа 2008 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c4f258273c6131f450ef465d9ebdf42c__1692432840
URL1:https://arc.ask3.ru/arc/aa/c4/2c/c4f258273c6131f450ef465d9ebdf42c.html
Заголовок, (Title) документа по адресу, URL1:
Encoding Control Notation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)