Справочник по сетевым протоколам

       

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


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

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

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

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



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

    октеты

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

    октет длины =

    10000000

    ( признак неявного формата)

    октеты содержимого 00000000 00000000

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

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

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

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

    Табл.3.

    Класс Бит 8 Бит 7
    Универсальный 0 0
    Прикладной 0 1
    Контекстно-зависимый 1 0
    Пользовательский 1 1

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

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

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

    Рис.3.

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

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

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

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

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

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

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

    Рис.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 ) .

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

    <


    table border="0" cellpadding="0" cellspacing="0" width="100%">
    Содержание раздела