ASN.1 () — в області телекомунікацій і комп'ютерних мереж мова для опису абстрактного синтаксису даних, що використовує 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 (пошук необхідно здійснювати по номеру стандарту без року видання).
Стандарти, що описують нотацію ASN.1
ITU-T Rec. X.680 | ISO/IEC 8824-1 | ДСТУ ISO/IEC 8824-1:2009 Інформаційні технології. Нотація абстрактного синтаксису 1 (ASN.1). Частина 1. Специфікація базової нотації (ISO/IEC 8824-1:2002, IDT) ITU-T Rec. X.681 | ISO/IEC 8824-2 | ДСТУ ISO/IEC 8824-2:2009 Інформаційні технології. Нотація абстрактного синтаксису 1 (ASN.1). Частина 2. Специфікація інформаційного об'єкта (ISO/IEC 8824-2:2002, IDT) ITU-T Rec. X.682 | ISO/IEC 8824-3 | ДСТУ ISO/IEC 8824-3:2008 Інформаційні технології. Нотація абстрактного синтаксису 1 (ASN.1). Частина 3. Специфікація обмежень (ISO/IEC 8824-3:2002, IDT) ITU-T Rec. X.683 | 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 | 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 | 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 | ISO/IEC 8825-3 | ДСТУ ISO/IEC 8825-3:2012 Інформаційні технології. Правила кодування ASN. 1. Частина 3. Специфікація керівної нотації кодування (ECN) (ISO/IEC 8825-3:2008, IDT) ITU-T Rec. X.693 | 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 | 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)
Примітки
Посилання Абстрактний синтаксис (інформаційні технології) // ВУЕ Extract from Abstract Syntax Notation One (ASN.1) — The Tutorial and Reference by Doug Steedman ASN.1C , free, open source ASN.1 to C compiler openASN.1 An Open Source ASN.1 toolkit for Java asn1forj 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 Standards describing the ASN.1 encoding rules The ASN.1 Consortium The Object Identifier (OID) repository ASN.1 Compiler OSS ASN.1 Tools page ASN.1 Tutorial Tutorial on basic ASN.1 concepts A Layman's Guide to a Subset of ASN.1, BER, and DER A very good introduction for beginners Asn2wrs , an ASN.1 to Wireshark dissector compiler