ASN.1 (Abstract Syntax Notation One)

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

Он представляет собой некоторое количество предопределенных базовых типов:

  • целые числа;
  • логические значения;
  • символьные строки (IA5String, универсальная строка и др.);
  • битовые строки.

Также ASN.1 позволяет определять сконструированные типы данных, например, структуры и  списки, а также дает возможность выбора между типами.

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

Задачи ASN

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

Определение ASN.1 может быть противопоставлено концепции в ABNF допустимого синтаксиса или в XSD допустимого документа. В последних основное внимание уделяется допустимым кодировкам данных без каких-либо семантических связей.

Преимущества ASN

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

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

  • рабочей машины;
  • языка программирования;
  • представления в прикладной программе.

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

Определение ASN.1 может быть легко отображено процессором перед выполнением в структуре данных C, C++ или Java, которая может быть использована кодом приложения.

Инструменты почти во всех операционных системах поддерживают ASN.1. Его также поддерживают популярные языки программирования: Java, C, C++ и даже COBOL.