Jump to content

ASN.1

(Перенаправлено из ASN.1 )
ASN.1
Абстрактный синтаксический нотация один
Статус Действующий; Supersedes X.208 и X.209 (1988)
Год начался 1984
Последняя версия (02/21)
Февраль 2021 г.
Организация Это-т
Комитет Учебная группа 17
Базовые стандарты ASN.1
Связанные стандарты X.208 , X.209 , X.409 , X.509 , X.680 , X.681 , X.682 , X.683
Домен Криптография , телекоммуникации
Веб -сайт https://www.itu.int/rec/T-REC-X.680/

Абстрактная синтаксическая нотация One ( ASN.1 ) является стандартным языком описания интерфейса (IDL) для определения структур данных , которые могут быть сериализованы и десериализованы кроссплатформенным способом. Он широко используется в телекоммуникациях и компьютерных сетях , и особенно в криптографии . [ 1 ]

Разработчики протокола определяют структуры данных в модулях ASN.1, которые, как правило, являются разделом более широкого документа стандартов, написанного на языке ASN.1. Преимущество заключается в том, что описание кодирования данных ASN.1 не зависит от конкретного компьютера или языка программирования. Поскольку ASN.1 является как читаемым человеком , так и читаемой на человеке , компилятор ASN.1 может компилировать модули в библиотеки кода, кодеков , которые декодируют или кодируют структуры данных. Некоторые компиляторы ASN.1 могут создавать код для кодирования или декодирования нескольких кодировки, например, упаковка, BER или XML .

ASN.1 является совместным стандартом Международного сектора стандартизации по телекоммуникационным союзу телекоммуникаций (ITU-T) в исследовательской группе 17 ITU-T и Международной организации по стандартизации / Международной электротехнической комиссии (ISO / IEC), первоначально определенной в 1984 году как часть CCITT X.409 : 1984. [ 2 ] В 1988 году ASN.1 перешла к своему собственному стандарту X.208 из -за широкой применимости. Значительно пересмотренная версия 1995 года покрывается серией X.680 . [ 3 ] Последним пересмотром рекомендаций серии X.680 является издание 6.0, опубликованное в 2021 году. [ 4 ]

Языковая поддержка

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

ASN.1 - это обозначение объявления типа данных. Это не определяет, как манипулировать переменной такого типа. Манипуляция с переменными определяется на других языках, таких как SDL (спецификация и описание языка) для исполняемого моделирования или TTCN-3 (тестирование и нотация контроля тестирования) для тестирования соответствия. Оба эти языка изначально подтверждают объявления ASN.1. Можно импортировать модуль ASN.1 и объявить переменную любого из типов ASN.1, объявленных в модуле.

Приложения

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

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

Протоколы, которые используют ASN.1
Протокол Спецификация Указанные или обычные правила кодирования Использование
Протокол вмешательства Спецификация ILPV4 Правила кодирования октета
NTCIP 1103 - Протоколы управления транспортом NTCIP 1103 Правила кодирования октета Трафик, транспорт и управление инфраструктурой
X.500 Службы каталогов Серия рекомендаций ITU X.500 Основные правила кодирования, выдающиеся правила кодирования Сертификаты LDAP, TLS ( X.509 ), аутентификация
Протокол доступа к легким каталогам (LDAP) RFC   4511 Основные правила кодирования
Криптография PKCS PKCS Криптография Основные правила кодирования и выдающиеся правила кодирования Асимметричные ключи, пакеты сертификатов
X.400 Обработка сообщений Серия рекомендаций ITU X.400 Ранний конкурент по электронной почте
Эмв EMVCO Publications Платежные карты
T.120 Мультимедийные конференции Серия рекомендаций ITU T.120 Основные правила кодирования, упакованные правила кодирования Microsoft Протокол удаленного рабочего стола (RDP)
Простой протокол управления сетью (SNMP) RFC   1157 Основные правила кодирования Управление и мониторинг сетей и компьютеров, особенно характеристики, относящиеся к производительности и надежности
Информационный протокол общего управления (CMIP) Рекомендация ITU X.711 Конкурент SNMP, но более способный и не такой популярный
Система сигнализации № 7 (SS7) Серия рекомендаций ITU Q.700 Управление телефонными соединениями через общедоступную телефонную сеть (PSTN)
Это мультимедийные протоколы серии H Серия рекомендаций ITU H.200, H.300 и H.400 Голос над интернет -протоколом (VoIP)
биоапи (BIP) Протокол взаимодействия ISO/IEC 24708: 2008
Общие биометрические форматы обмена (CBEFF) NISTN IR 6529-A Основные правила кодирования
Контексты аутентификации для биометрии (Acbio) ISO/IEC 24761: 2019
Компьютерные телекоммуникационные приложения (CSTA) [1] Основные правила кодирования
Выделенная коммуникация с краткосрочной перспективой (DSRC) SAE J2735 Упакованные правила кодирования Общение транспортного средства
IEEE 802.11p (IEEE WAVE) IEEE 1609.2 Общение транспортного средства
Интеллектуальные транспортные системы (ETSI ITS) Найдите EN 302 637 2 (CAM)
Найдите EN 302 637 3 (DENM)
Неоплачиваемые правила упакованного кодирования Общение транспортного средства
Глобальная система мобильной связи (GSM) [2] 2G сообщества мобильных телефонов
Общий пакетный радио служба (GPRS) / повышенные скорости передачи данных для GSM Evolution (Edge) [3] 2,5 г связи с мобильными телефонами
Универсальная мобильная телекоммуникационная система (UMTS) [4] 3G -мобильные связи
Долгосрочная эволюция (LTE) [5] 4G сообщества мобильных телефонов
5G [6] 5G Communications Mobile Phone
Протокол общего оповещения (CAP) [7] Правила кодирования XML Обмен информацией о предупреждении, такую ​​как янтарные оповещения
Связь передачи данных контроллера - пилот (CPDLC) Авиационная коммуникация
Услуги расширения космической ссылки (SLE) Космические системы коммуникации
Спецификация производственных сообщений (MMS) ISO 9506-1: 2003 Производство
Передача файлов, доступ и управление (FTAM) Ранний и более способный конкурент для протокола передачи файлов, но его редко используется.
Протокол элемента удаленного операционного сервиса (роза) Рекомендации ITU X.880, X.881 и X.882 Ранняя форма удаленной процедуры вызов
Элемент службы управления ассоциацией (ACSE) Рекомендация ITU X.227
Протокол сетей автоматизации и управления зданиями (BACNET) Ашра 135-2020 Правила кодирования Bacnet Автоматизация и управление зданиями, например, с пожарной сигнализацией, лифтами, систем HVAC и т. Д.
Kerberos RFC   4120 Основные правила кодирования Безопасная аутентификация
Wimax 2 Широкие сети
Интеллектуальная сеть Серия рекомендаций ITU Q.1200 Телекоммуникации и компьютерные сети
X2ap Базовые выровненные правила упакованного кодирования
Законное перехват (LI) интерфейс передачи передач Etsi TS 102 232-1 Законное перехват

Кодировки

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

ASN.1 тесно связан с набором правил кодирования, в которых указывается, как представлять структуру данных как серию байтов. Стандартные правила кодирования ASN.1 включают в себя:

ASN.1 Правила кодирования
Правила кодирования
Идентификатор объекта Значение дескриптора объекта
Спецификация
Единица сериализации
Кодированные элементы
различимый без
предвидение
спецификация
Октет выровнен
Кодирование управления
Определены правила обозначения
Описание
Усеянный Является
2.1.1 /ASN.1/Basic-Encoding Основное кодирование одного типа ASN.1 Это X.690 Октет Да Да Нет Первые указанные правила кодирования. Кодирует элементы в виде последовательностей значения длина тега (TLV). Обычно предоставляет несколько вариантов относительно того, как должны быть закодированы значения данных. Это одно из самых гибких правил кодирования.
2.1.2.1 /ASN.1/BER‑Derived/ Выдающееся Выдающееся кодирование одного типа ASN.1 Это X.690 Октет Да Да Нет Ограниченное подмножество основных правил кодирования (BER). Обычно используется для вещей, которые связаны с цифровой подписью, потому что, поскольку DER разрешает меньше вариантов кодирования, и потому что кодируемые DER значения с большей вероятностью будут повторно кодированы на одних и тех же байтах, цифровые подписи, создаваемые данным абстрактным значением, будут Будьте одинаковы в разных реализациях, и цифровые подписи, произведенные по кодируемым DER данных, будут менее подвержены атакам, основанным на столкновении.
2.1.2.0 /ASN.1/ BEREDED/ Каноническое кодирование Каноническое кодирование одного типа ASN.1 Это X.690 Октет Да Да Нет Ограниченное подмножество основных правил кодирования (BER). Использует почти все те же ограничения, что и выдающиеся правила кодирования (DER), но примечательное отличие состоит в том, что CER указывает, что многие большие значения (особенно строки) должны быть «разбиты» в отдельные элементы подстроения в 1000-байтовых или 1000-характер (в зависимости от типа данных).
Базовый упакован
Правила кодирования
(Per) выровнен [ 8 ]
2.1.3.0.0 /ASN.1/ Упакованное/ кодирование/ Базовый/выровнен Упакованное кодирование одного типа ASN.1 (базовый выровнен) Что X.691 Кусочек Нет Да Нет Кодирует значения на битах, но если кодируемые биты не имеют равномерного делителя на восьми, добавляются биты задорки до тех пор, пока не кодирует интегральное количество октетов. Способный производить очень компактные кодирования, но за счет сложности, и PER сильно зависит от ограничений, наложенных на типы данных.
Базовый упакован
Правила кодирования
(За) не выдвинут [ 8 ]
2.1.3.0.1 /ASN.1/ Упакованное/ кодирование/ Базовый/невыполнен Упакованное кодирование одного типа ASN.1 (базовый невыполненный) Что X.691 Кусочек Нет Нет Нет Вариант выравниваемых базовых правил упакованного кодирования (PER), но он не закладывает значения данных с битами для создания целого числа октетов.
Каноническая упакованная
Правила кодирования
(CPER) Выровнен [ 8 ]
2.1.3.1.0 /ASN.1/ Упакованное/ кодирование/ Канонический/выровнен Упакованное кодирование одного типа ASN.1 (Canonical выровнен) Что X.691 Кусочек Нет Да Нет Вариант упакованных правил кодирования (PER), который указывает один способ кодирования значений. Правила канонического упакованного кодирования имеют аналогичное отношение к правилам упакованного кодирования, которые имеют выдающиеся правила кодирования (DER) и правила канонического кодирования (CER) для основных правил кодирования (BER).
Каноническая упакованная
Правила кодирования
(CPER) Неоплачивано [ 8 ]
2.1.3.1.1 /ASN.1/ Упакованное/ кодирование/ Канонические/невыполненные Упакованное кодирование одного типа ASN.1 (каноническая невыполненная) Что X.691 Кусочек Нет Нет Нет Вариант выровненных канонических правил упакованного кодирования (CPER), но он не закладывает значения данных с битами для создания неотъемлемого числа октетов.
Базовый XML
Правила кодирования
(Ученик) [ 9 ]
2.1.5.0 /ASN.1/XML‑Encoding/ Базовый Основное XML -кодирование одного типа ASN.1 Что X.693 Характер Да Да Да Кодирует данные ASN.1 как XML.
Канонический XML
Правила кодирования
(CXER) [ 9 ]
2.1.5.1 /ASN.1/XML‑Encoding/ Канонический Каноническое XML -кодирование одного типа ASN.1 Что X.693 Характер Да Да Да
Расширенный XML
Правила кодирования
(Exer) [ 9 ]
2.1.5.2 /ASN.1/XML‑Encoding/ Расширенный Расширенное кодирование XML одного типа ASN.1 Что X.693 Характер Да Да Да
Октет
Правила кодирования
(Левый) [ 10 ]
2.1.6.0 Основное кодирование OER одного типа ASN.1 Что X.696 Октет Нет Да Набор правил кодирования, которые кодируют значения на окте, но не кодируют теги или детерминанты длины, такие как основные правила кодирования (BER). Значения данных, кодируемые с использованием правил кодирования октета, часто выглядят как те, которые встречаются в протоколах «на основе записей». Правила кодирования октета (OER) были разработаны для того, чтобы быть простым в реализации и для создания кодировки более компактных, чем те, которые создаются основными правилами кодирования (BER). В дополнение к сокращению усилий по разработке кодеров/декодеров, использование OER может уменьшить использование полосы пропускания (хотя и не так много, как правила упакованного кодирования), сохранить циклы ЦП и более низкую задержку кодирования/декодирования.
Канонический
Правила кодирования
(Левый) [ 10 ]
2.1.6.1 Каноническое кодирование OER одного типа ASN.1 Что X.696 Октет Нет Да
Json
Правила кодирования
(ПОТОМУ ЧТО) [ 11 ]
Что X.697 Характер Да Да Да Кодирует данные ASN.1 как JSON.
Общая строка
Правила кодирования
(GSER) [ 12 ]
1.2.36. 79672281. 0.0 Общие правила кодирования строки (GSER) RFC   3641 Характер Да Нет Неполная спецификация для правил кодирования, которые производят читаемые на человеку значения. Цель GSER - представлять кодированные данные пользователю или входные данные от пользователя в очень простом формате. GSER был первоначально разработан для легкого протокола доступа к каталогам (LDAP) и редко используется вне его. Использование GSER в фактических протоколах не рекомендуется, поскольку не все кодировки строк символов, поддерживаемые ASN.1, могут быть воспроизведены в нем.
Бакет
Правила кодирования
Ашра 135 Октет Да Да Да Кодирует элементы в виде последовательностей значения до длина тега (TLV), таких как основные правила кодирования (BER).
Сигнализация специфичная
Правила кодирования
(БЫТЬ)
Внутренний документ France Telecom R & D Октет Да Да Используется в основном в протоколах, связанных с телекоммуникациями, такими как GSM и SS7. Разработан для получения идентичного кодирования от ASN.1, который ранее существующие протоколы, не указанные в ASN.1, будут производить.
Легкий вес
Правила кодирования
(Lwer)
Внутренний документ INRIA. Слово памяти Да Происходит из внутреннего документа, создаваемого Inria , детализирующей «синтаксис легкого веса плоского дерева» (FTLWS). Заброшены в 1997 году из -за превосходной производительности переполненных правил кодирования (PER). Необязательно большие или маленькие трансмиссии, а также 8-битные, 16-битные и 32-битные слова памяти. (Следовательно, есть шесть вариантов, поскольку существует шесть комбинаций этих вариантов.)
Минимальный бит
Правила кодирования
(Mber)
Кусочек Предложено в 1980 -х годах. Предназначен для того, чтобы быть максимально компактным, например, правила упакованного кодирования (PER).
Нема упакована
Правила кодирования
Кусочек Неполная спецификация правила кодирования, создаваемая NEMA. Это неполно, потому что он не может кодировать и декодировать все типы данных ASN.1. Компактный, как правила упакованного кодирования (PER).
Высокоскоростной
Правила кодирования
«Правила кодирования для высокоскоростных сетей» Определение этих правил кодирования было побочным продуктом работы INRIA над синтаксисом легкого веса плоского дерева (FTLWS).

Кодирование управления нотацией

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

Рекомендации ASN.1 предоставляют ряд предопределенных правил кодирования. Если ни одно из существующих правил кодирования не подходит, нотация управления кодированием (ECN) предоставляет пользователю возможность определить свои собственные правила кодирования.

Отношение к кодированию почты (PEM)

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

Кодирование почтовой (PEM) с усиленной конфиденциальностью (PEM) полностью не связано с ASN.1, и его кодеки, но кодируемые данные ASN.1, которые часто являются бинарными, часто кодируют PEM, чтобы их можно было передавать в виде текстовых данных, например, на реле SMTP. , или через буферы копирования/вставки.

Это пример модуля ASN.1, определяющий сообщения (структуры данных) фиктивного протокола Foo :

FooProtocol DEFINITIONS ::= BEGIN

    FooQuestion ::= SEQUENCE {
        trackingNumber INTEGER,
        question       IA5String
    }

    FooAnswer ::= SEQUENCE {
        questionNumber INTEGER,
        answer         BOOLEAN
    }

END

Это может быть спецификация, опубликованная создателями Foo Protocol. Разговорные потоки, обмену транзакции и состояния не определены в ASN.1, а оставлены на другие обозначения и текстовое описание протокола.

Предполагая сообщение, которое соответствует протоколу FOO и будет отправлено принимающей стороне, это конкретное сообщение ( блок данных протокола (PDU)):

myQuestion FooQuestion ::= {
    trackingNumber     5,
    question           "Anybody there?"
}

ASN.1 поддерживает ограничения на значения и размеры, а также расширяемость. Вышеуказанная спецификация может быть изменена на

FooProtocol DEFINITIONS ::= BEGIN

    FooQuestion ::= SEQUENCE {
        trackingNumber INTEGER(0..199),
        question       IA5String
    }

    FooAnswer ::= SEQUENCE {
        questionNumber INTEGER(10..20),
        answer         BOOLEAN
    }

    FooHistory ::= SEQUENCE {
        questions SEQUENCE(SIZE(0..10)) OF FooQuestion,
        answers   SEQUENCE(SIZE(1..10)) OF FooAnswer,
        anArray   SEQUENCE(SIZE(100))  OF INTEGER(0..1000),
        ...
    }

END

Это изменение ограничивает отслеживание, чтобы иметь значение от 0 до 199, а инклюзивные и вопросники имеют значение от 10 до 20 инклюзивных. Размер массива вопросов может составлять от 0 до 10 элементов, причем ответы массивы от 1 до 10 элементов. Поле Anarray представляет собой массив целых чисел с фиксированной длиной 100 целых числа, которые должны быть в диапазоне от 0 до 1000. Маркер расширяемости «...» означает, что спецификация сообщения Foohistory может иметь дополнительные поля в будущих версиях спецификации; Системы, соответствующие одной версии, должны иметь возможность принимать и передавать транзакции из более поздней версии, хотя они могут обрабатывать только поля, указанные в предыдущей версии. Хорошие компиляторы ASN.1 будут генерировать исходный код (в C, C ++, Java и т. Д.), который автоматически проверяет, что транзакции попадают в эти ограничения. Транзакции, которые нарушают ограничения, не должны быть приняты или представлены или представлены заявлению. Управление ограничениями в этом уровне значительно упрощает спецификацию протокола, поскольку приложения будут защищены от нарушений ограничений, снижения риска и затрат.

Чтобы отправить сообщение MyQuestion через сеть, сообщение сериализуется (кодируется) в качестве ряда байтов, использующих одно из правил кодирования . Спецификация протокола Foo должна явно называть один набор правил кодирования, чтобы пользователи протокола Foo знали, какой из них они должны использовать и ожидать.

Пример, закодированный в der

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

Ниже приведена структура данных, показанная выше, как Myquestion, кодируемое в формате Der (все числа находятся в шестнадцатеричной):

30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f


DER - это кодирование типа - длиной - поэтому приведенная выше последовательность может быть интерпретирована со ссылкой на стандартную последовательность, целое число и IA5String, следующим образом:

30 — type tag indicating SEQUENCE
13 — length in octets of value that follows
  02 — type tag indicating INTEGER
  01 — length in octets of value that follows
    05 — value (5)
  16 — type tag indicating IA5String 
     (IA5 means the full 7-bit ISO 646 set, including variants, 
      but is generally US-ASCII)
  0e — length in octets of value that follows
    41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f — value ("Anybody there?")

Пример, закодированный в Xer

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

В качестве альтернативы можно кодировать ту же структуру данных ASN.1 с правилами кодирования XML (XER) для достижения большей читаемости человека «по проволоке». Затем он появится в следующих 108 октетах (количество пространств включает в себя пространства, используемые для вдавления):

<FooQuestion>
    <trackingNumber>5</trackingNumber>
    <question>Anybody there?</question>
</FooQuestion>

Пример, закодированный в первом

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

В качестве альтернативы, если используются правила упакованного кодирования , следующие 122 бита (16 октетов составляют 128 бит, но здесь будут произведены только 122 бита, а последние 6 бит просто прописываются):

01 05 0e 83 bb ce 2d f9 3c a0 e9 a3 2f 2c af c0

В этом формате теги типа для требуемых элементов не кодируются, поэтому их нельзя проанализировать, не зная ожидаемых схем, используемых для кодирования. Кроме того, байты для значения IA5String упакованы с использованием 7-битных единиц вместо 8-битных единиц, поскольку кодер знает, что кодирование значения байта IA5String требует всего 7 бит. Однако байты длины все еще кодируются здесь, даже для первого целочисленного тега 01 (но для каждого упаковка может также опустить его, если он знает, что допустимый диапазон значений подходит на 8 бит, и он может даже уплотнять байт единого значения 05 с меньшим количеством чем 8 бит, если он знает, что разрешенные значения могут соответствовать только в меньшем диапазоне).

Последние 6 бит в кодированных за один из них наполнены нулевыми битами в 6 наименее значимых битах последнего байта C0: эти дополнительные биты не могут быть переданы или использованы для кодирования чего -то еще, если эта последовательность вставлена ​​как часть более длительного неровности На последовательность.

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

Если потребуется выравнивание на границах октета, выравнивается на энкодер:

01 05 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f

(В этом случае каждый октет прокладывается индивидуально с нулевыми битами на их неиспользованных наиболее значительных битах).

Инструменты

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

Большинство инструментов, поддерживающих ASN.1, выполняют следующее:

  • анализировать файлы ASN.1,
  • генерирует эквивалентное объявление на языке программирования (например, C или C ++),
  • генерирует функции кодирования и декодирования на основе предыдущих объявлений.

Список инструментов, поддерживающих ASN.1, можно найти на веб-странице инструмента ITU-T .

Онлайн -инструменты

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

Сравнение с аналогичными схемами

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

ASN.1 аналогичен по назначению и используется с буферами протокола Google и Apache Thrift , которые также являются языками описания интерфейса для кроссплатформенной сериализации данных. Как и эти языки, у него есть схема (в ASN.1, называемой «модуль») и набор кодировки, обычно кодировки типа - длины - В отличие от них, ASN.1 не обеспечивает единую и легко полезную реализацию с открытым исходным кодом и публикуется в качестве спецификации, которая будет реализована сторонним поставщиком. Однако ASN.1, определенная в 1984 году, предшествует их много лет. Он также включает в себя более широкий спектр основных типов данных, некоторые из которых устарели и имеют больше вариантов для расширяемости. Одно сообщение ASN.1 может включать данные из нескольких модулей, определенных в нескольких стандартах, даже стандарты определяют годы.

ASN.1 также включает в себя встроенную поддержку ограничений на значения и размеры. Например, модуль может указать целочисленное поле, которое должно быть в диапазоне от 0 до 100. Длина последовательности значений (массив) также может быть указана как в виде фиксированной длины, либо в диапазоне разрешенной длины. Ограничения также могут быть указаны как логические комбинации наборов основных ограничений.

Значения, используемые в качестве ограничений, могут быть либо литералами, используемыми в спецификации PDU, либо значениями ASN.1, указанными в другом месте в файле схемы. Некоторые инструменты ASN.1 предоставит эти значения ASN.1 доступными для программистов в сгенерированном исходном коде. Используемые в качестве константы для определения протокола, разработчики могут использовать их в логической реализации протокола. Таким образом, все константы PDU и протокола могут быть определены в схеме, и все реализации протокола в любом поддерживаемом языке опираются на эти ценности. Это избегает необходимости вручить константы протокола кода в исходном коде их реализации. Это значительно помогает развивать протокол; Константы протокола могут быть изменены в схеме ASN.1, и все реализации обновляются просто путем отменения, способствуя быстрому и низкому циклу развития риска.

Если инструменты ASN.1 должным образом реализуют ограничения в сгенерированном исходном коде, это действует для автоматической проверки данных протокола во время работы программы. Как правило, инструменты ASN.1 будут включать ограничения, проверяющие процедуры сгенерированной сериализации / десериализации, повышение ошибок или исключений, если встречаются данные о неэффективных данных. Это сложно реализовать все аспекты ограничений ASN.1 в компиляторе ASN.1. Не все инструменты поддерживают весь спектр возможных выражений ограничений. XML схема и схема JSON поддерживают аналогичные концепции ограничений. Поддержка инструментов для ограничений варьируется. Компилятор Microsoft XSD.Exe игнорирует их.

ASN.1 визуально похож на увеличенную форму Backus-NAUR (ABNF), которая используется для определения многих интернет-протоколов, таких как HTTP и SMTP . Однако на практике они совершенно разные: ASN.1 определяет структуру данных, которая может быть кодирована различными способами (например, JSON, XML, BINARY). ABNF, с другой стороны, определяет кодирование («синтаксис») в то же время, что определяет структуру данных («семантика»). ABNF, как правило, используется чаще для определения текстовых протоколов, читаемых на человеке и, как правило, не используется для определения кодировки типа-длины-

Многие языки программирования определяют специфичные для языка форматы сериализации. Например, модуль Python "Pickle" и модуль Ruby "Marshal". Эти форматы, как правило, специфичны для языка. Они также не требуют схемы, которая облегчает их использование в специальных сценариях хранения, но неуместно для протоколов связи.

JSON и XML также не требуют схемы, что делает их простыми в использовании. Они также являются кроссплатформенными стандартами, которые широко популярны для протоколов связи, особенно в сочетании со схемой JSON или схемой XML .

Некоторые инструменты ASN.1 способны переводить между схемой ASN.1 и XML (XSD). Перевод стандартизирован ITU. Это позволяет определить протокол в ASN.1, а также автоматически в XSD. Таким образом, возможно (хотя, возможно, неразборчиво) иметь в проекте, схема XSD, составленную с помощью инструментов ASN.1, производящих исходный код, который сериализует объекты на/из JSON Wireformat. Более практическое использование состоит в том, чтобы позволить другим субпроектам потреблять схему XSD вместо схемы ASN.1, возможно, подходящие инструменты для языка субпроектов, причем XER используется в качестве протокола WireFormat.

Более подробную информацию см. Сравнение форматов сериализации данных .

Смотрите также

[ редактировать ]
  1. ^ «Введение в ASN.1» . ITU . Архивировано из оригинала 2021-04-09 . Получено 2021-04-09 .
  2. ^ «База данных рекомендаций ITU-T» . ITU . Получено 2017-03-06 .
  3. ^ ITU -T x.680 - Спецификация базовых обозначений
  4. ^ Эта статья основана на материале, взятых из ASN.1 в свободном онлайн-словаре вычислений до 1 ноября 2008 года, и включенного в рамках «реликвизионных» условий GFDL , версия 1.3 или более поздней версии.
  5. ^ ITU -T X.690 - Основные правила кодирования (BER)
  6. ^ ITU -T X.690 - Различные правила кодирования (DER)
  7. ^ ITU -T X.690 - Правила канонического кодирования (CER)
  8. ^ Jump up to: а беременный в дюймовый ITU -T X.691 - Правила упакованного кодирования (PER)
  9. ^ Jump up to: а беременный в ITU -T X.693 - Правила кодирования XML (XER)
  10. ^ Jump up to: а беременный ITU -T X.696 - Правила кодирования октета (OER)
  11. ^ ITU -T X.697 - Правила кодирования объекта JavaScript (JER)
  12. ^ RFC   3641 - Общие правила кодирования строки (GSER)
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f07a1f32b9266d0beed9d44eb3bdc481__1722207720
URL1:https://arc.ask3.ru/arc/aa/f0/81/f07a1f32b9266d0beed9d44eb3bdc481.html
Заголовок, (Title) документа по адресу, URL1:
ASN.1 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)