ASN.1 (англ. Abstract Syntax Notation One) — в області телекомунікацій і комп'ютерних мереж мова для опису абстрактного синтаксису даних, що використовує OSI. Стандарт запису, що описує структури даних для представлення, кодування, передачі і декодування даних. Він забезпечує набір формальних правил для опису структури об'єктів, які не залежать від конкретної машини. ASN.1 є ISO і ITU-T сумісним стандартом, спочатку був визначений в 1984 році в рамках CCITT X.409:1984. Через широке застосування ASN.1 в 1988 році перейшов в свій власний стандарт X.208. Починаючи з 1995 року, істотно переглянутий ASN.1 описується стандартом X.680.
Приклад
Визначення структури даних (вигаданого) протоколу Foo з використанням нотації ASN.1:
FooProtocol DEFINITIONS ::= BEGIN FooQuestion ::= SEQUENCE { trackingNumber INTEGER, question IA5String } FooAnswer ::= SEQUENCE { questionNumber INTEGER, answer BOOLEAN } END
Це могла б бути специфікація опублікована творцем протоколу Foo. ASN.1 не визначає течії розмови. Це верхівка текстового опису протоколу.
Повідомлення для даного вигаданого протоколу, що можна відіслати через певний канал зв'язку матиме такий вигляд:
myQuestion FooQuestion ::= { trackingNumber 5, question "Є тут хтось?" }
Щоб відіслати дане повідомлення через мережу необхідно закодувати його рядком біт. Для цього ASN.1 визначає різні алгоритми, що звуться правилами кодування (Encoding rules). Їх є декілька, один з найпростіших Distinguished Encoding Rules (DER). Також повідомлення може бути представлене у вигляд XML з використанням XER (XML Encoding Rules).
Опис протоколу Foo повинен явно вказувати на правило кодування, щоб користувач протоколу Foo знав, яке саме правило потрібно використовувати.
Стандарти
ASN.1 регламентовано рядом стандартів, зокрема Міжнародної організації зі стандартизації (ISO). Стандарти ISO, що стосуються ASN.1 перекладені українською та впроваджені в Україні у вигляді відповідних стандартів ДСТУ. Час від часу ISO обновляє власні стандарти випускаючи доповнення стандартів або ж заміняючи новими версіями. Наявність доповнень та нових редакцій стандартів варто перевіряти на офіційному сайті ISO (пошук необхідно здійснювати по номеру стандарту без року видання)[1].
Стандарти, що описують нотацію ASN.1
- ITU-T Rec. X.680 [Архівовано 7 листопада 2012 у Wayback Machine.] | ISO/IEC 8824-1 | ДСТУ ISO/IEC 8824-1:2009 Інформаційні технології. Нотація абстрактного синтаксису 1 (ASN.1). Частина 1. Специфікація базової нотації (ISO/IEC 8824-1:2002, IDT)
- ITU-T Rec. X.681 [Архівовано 7 листопада 2012 у Wayback Machine.] | ISO/IEC 8824-2 | ДСТУ ISO/IEC 8824-2:2009 Інформаційні технології. Нотація абстрактного синтаксису 1 (ASN.1). Частина 2. Специфікація інформаційного об'єкта (ISO/IEC 8824-2:2002, IDT)
- ITU-T Rec. X.682 [Архівовано 7 листопада 2012 у Wayback Machine.] | ISO/IEC 8824-3 | ДСТУ ISO/IEC 8824-3:2008 Інформаційні технології. Нотація абстрактного синтаксису 1 (ASN.1). Частина 3. Специфікація обмежень (ISO/IEC 8824-3:2002, IDT)
- ITU-T Rec. X.683 [Архівовано 7 листопада 2012 у Wayback Machine.] | ISO/IEC 8824-4 | ДСТУ ISO/IEC 8824-4:2009 Інформаційні технології. Нотація абстрактного синтаксису 1 (ASN.1). Частина 4. Параметризація специфікацій ASN.1 (ISO/IEC 8824-4:2002, IDT)
Стандарти, що описують правила кодування ASN.1
- ITU-T Rec. X.690 [Архівовано 1 червня 2012 у Wayback Machine.] | ISO/IEC 8825-1 (BER, CER and DER) | ДСТУ ISO/IEC 8825-1:2012 Інформаційні технології. Правила кодування ASN. 1. Частина 1. Специфікація правил базового кодування (BER), правил канонічного кодування (CER) і правил витонченого кодування (DER) (ISO/IEC 8825-1:2008, IDT)
- ITU-T Rec. X.691 [Архівовано 7 листопада 2012 у Wayback Machine.] | ISO/IEC 8825-2 (PER) | ДСТУ ISO/IEC 8825-2:2012 Інформаційні технології. Правила кодування ASN. 1. Частина 2. Специфікація правил упакованого кодування (PER) (ISO/IEC 8825-2:2008, IDT)
- ITU-T Rec. X.692 [Архівовано 30 вересня 2015 у Wayback Machine.] | ISO/IEC 8825-3 | ДСТУ ISO/IEC 8825-3:2012 Інформаційні технології. Правила кодування ASN. 1. Частина 3. Специфікація керівної нотації кодування (ECN) (ISO/IEC 8825-3:2008, IDT)
- ITU-T Rec. X.693 [Архівовано 7 листопада 2012 у Wayback Machine.] | ISO/IEC 8825-4 (XER) | ДСТУ ISO/IEC 8825-4:2014 Інформаційні технології. Правила кодування ASN.1. Частина 4. Специфікація правил кодування XML (XER) (ISO/IEC 8825-4:2008, IDT)
- ITU-T Rec. X.694 [Архівовано 7 листопада 2012 у Wayback Machine.] | ISO/IEC 8825-5 (XSD mapping) | ДСТУ ISO/IEC 8825-5:2013 Інформаційні технології. Правила кодування ASN.1. Частина 5. Відображення визначень W3C XML-схем в ASN.1 (ISO/IEC 8825-5:2008, IDT)
- RFC 3641 (GSER)
Примітки
- ↑ Офіційний сайт Міжнародної організації зі стандартизації (ISO). Архів оригіналу за 7 серпня 2008. Процитовано 18 квітня 2022.
Посилання
- Абстрактний синтаксис (інформаційні технології) [Архівовано 22 березня 2022 у Wayback Machine.] // ВУЕ
- Extract from Abstract Syntax Notation One (ASN.1) — The Tutorial and Reference by Doug Steedman [Архівовано 23 листопада 2008 у Wayback Machine.]
- ASN.1C [Архівовано 12 грудня 2008 у Wayback Machine.], free, open source ASN.1 to C compiler
- openASN.1 [Архівовано 23 вересня 2017 у Wayback Machine.] An Open Source ASN.1 toolkit for Java
- asn1forj [Архівовано 14 травня 2008 у Wayback Machine.] An Open Source ASN.1 toolkit for Java
- BinaryNotes: The Open Source ASN.1 Framework for Java and .NET
- pyasn1: ASN.1 types and codecs implemented in Python
- Standards describing the ASN.1 notation [Архівовано 3 жовтня 2005 у Wayback Machine.]
- Standards describing the ASN.1 encoding rules [Архівовано 3 жовтня 2005 у Wayback Machine.]
- The ASN.1 Consortium [Архівовано 22 вересня 2005 у Wayback Machine.]
- The Object Identifier (OID) repository [Архівовано 3 березня 2021 у Wayback Machine.]
- ASN.1 Compiler
- OSS ASN.1 Tools page [Архівовано 3 жовтня 2008 у Wayback Machine.]
- ASN.1 Tutorial [Архівовано 4 грудня 2008 у Wayback Machine.] Tutorial on basic ASN.1 concepts
- A Layman's Guide to a Subset of ASN.1, BER, and DER [Архівовано 8 грудня 2008 у Wayback Machine.] A very good introduction for beginners
- Asn2wrs [Архівовано 23 липня 2008 у Wayback Machine.], an ASN.1 to Wireshark dissector compiler