Структура тега

Up Структура тега Типы тегов Синтаксис АСН.1 Пример применения

Структура тега АСН.1.

Кодовое представление тега должно состоять из четырех составных частей, следующих в порядке перечисления:

  1. октеты идентификатора;
  2. октеты длины;
  3. октеты содержимого;
  4. октеты признака конца содержимого (содержатся в кодовом представлении только в том случае, если их наличие вытекает из значения октетов длины).

На рис.1. представлена структура кодового представления:

а) явный формат длины тега

октеты идентификатора октеты длины октеты содержимого

б) неявный формат длины тега, используется в случае невозможности задать длину сразу

октеты
идентификатора
октет длины =
10000000
( признак неявного формата)
октеты содержимого 00000000 00000000

(признак завершения тега)

 

Октеты идентификатора

В октетах идентификатора должен быть закодирован тег АСН.1 того типа (класс и номер), к которому относится значение данных. Для тегов, имеющих номер от нуля до 30 включительно, октеты идентификатора представлены одним октетом, закодированным следующим образом (рис.2.):

wpe3.gif (2513 bytes)

а) биты 7 и 8 представляют класс тега (табл.3.);

Табл.3.

Класс

Бит 8

Бит 7

Универсальный

0

0

Прикладной

0

1

Контекстно-зависимый

1

0

Пользовательский

1

1

б) бит 6 должен иметь значение “ноль”, если кодовое представление простое, и “единица”, если оно - составное;

в) биты с 5 по 1 должны быть кодовым представлением номера тега в виде двоичного целого с битом 5 в качестве старшего бита.

 

Для тегов с номерами большими 30, идентификатор должен состоять из головного октета, за которым следуют один или более октетов продолжения. Кодовое представление головного октета должно быть следующим (см. рис.3.):

wpe4.gif (2311 bytes)

Рис.3.

 

а) биты 7 и 8 задают класс тега (табл.3.);

б) бит 6 должен иметь значение “ноль”, если кодовое представление простое, и “единица”, если оно - составное;

в) биты с 5 по 1 должны иметь кодовое представление 111112.

Октеты продолжения являются кодовым представлением номера тега; они должны иметь следующий вид (рис.):

а) бит 8 каждого октета, за исключением последнего октета идентификатора, должен быть установлен в единицу;

б) биты с 7 по 1 первого октета продолжения , сцепленные с битами 7-1 второго октета продолжения , сцепленные, в свою очередь, с битами 7-1 каждого из октетов продолжения, до последнего включительно, должны быть кодовым представлением номера тега в виде двоичного целого числа без знака, с битом 7 первого октета продолжения в качестве старшего бита.;

в) биты с 7 по 1 первого последующего октета не должны быть все установлены в ноль.

wpe5.gif (2661 bytes)

Рис.4.

 

Октеты длины

Октеты длины могут быть представлены в явном или неявном формате. Явный формат используется, если кодовое представление простое. Неявный формат используется, если кодовое представление составное и недоступно сразу полностью. В остальных случаях формат определяется отправителем.

При использовании явного формата октеты длины включат один октет - короткий формат ( когда количество октетов содержимого меньше или равно 127 ) , или несколько октетов - длинный формат ( когда количество октетов содержимого больше 127 ).

В коротком формате бит 8 единственного октета установлен в ноль , а биты с 7 по 1 являются кодовым представлением количества октетов содержимого в виде двоичного целого числа без знака с битом 7 в качестве старшего разряда. Например, число 42 будет закодировано как 001010102 .

В длинном формате октеты длины состоят из начального октета и одного или более октетов продолжения. Кодовое представление начального октета должно быть следующим:

а) бит 8 должен быть установлен в единицу;

б) биты с 7 по 1 являются кодовым представлением количества последующих октетов длины в виде двоичного целого числа без знака с битом 7 в качестве старшего разряда;

в) двоичное значение 111111112 не должно использоваться.

Биты с 8 по 1 первого октета продолжения , сцепленные с битами 8-1 второго октета продолжения , сцепленные, в свою очередь, с битами 8-1 каждого из октетов продолжения, до последнего включительно, должны быть кодовым представлением номера тега в виде двоичного целого числа без знака, с битом 8 первого октета продолжения в качестве старшего бита. Например число 342 будет закодировано как

100000102 000000012 010101102 (при использовании длинного формата отправитель может по своему выбору использовать большее количество октетов, чем необходимый минимум).

В случае неявного формата октеты длины состоят из единственного октета 100000002 . При этом конец октетов содержимого задается двумя октетами признака конца содержимого, имеющими нулевое значение (000000002 000000002 ) .

Тег также может быть простым или составным. Составной тег включает в свое информационное поле набор простых или составных тегов. Простой тег содержит конечную последовательность данных одного типа.