Причина пометки необязательного поля в ASN.1

Глядя на модуль ASN.1 для 3GPP MAP ( http://www.3gpp.org/ftp/specs/archive/29_series/29.002/ASN.1/), я запутался в использовании [0] тег для первого поля (imsi). Так как это не ДОПОЛНИТЕЛЬНОЕ поле, и его тип также известен (OCTET STRING), какова цель этого тега здесь?

sendAuthenticationInfo ОПЕРАЦИЯ::=  {
   АРГУМЕНТНАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ {
      imsi                                  [0] IMPLICIT OCTET STRING (РАЗМЕР ( 3 .. 8)),
      numberOfRequestedVectors              INTEGER ( 1 .. 5),
      сегментация запрещена NULL НЕОБЯЗАТЕЛЬНО,
      instantResponsePreferred            [1] НЕОБХОДИМЫЙ NULL НЕОБЯЗАТЕЛЬНО,

-- так далее. --

Стоит отметить, что поле imsi не интерпретируется напрямую как строка октетов, но содержит цифры IMSI в полуоктетном кодировании (например, BCD). Может ли это быть причиной того, что поле помечено?

1 ответ

Решение

В этом конкретном случае протокол MAP 3GPP указывает, что BER является правилом кодирования, которое должно использоваться, что означает, что теги включены в кодировки. Это означает, что, хотя в этом случае не обязательно менять тег строки октета по умолчанию для необязательного поля в этом контексте, поскольку нет никакой неоднозначности, это, скорее всего, сделано для целей документации, указывая на то, что содержимое этого поля не просто строка октетов.

Другие вопросы по тегам