XGEN: Uma breve introdução ao ASN.1 e ao BER

Traduções deste artigo Traduções deste artigo
ID do artigo: 252648 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo descreve o Abstract Syntax Notation One (ASN.1) e Basic Encoding Rules (BER), e esclarece as diferenças entre os dois.

Muitos profissionais de tecnologia da informação, incluindo profissionais com bastante experiência, normalmente se confundem sobre o que são ASN.1 e BER, as diferenças entre os dois, ou mesmo sobre o porque da importância da distinção. Essa confusão se torna compreensível quando, mesmo as pessoas que conhecem bem o ASN.1 e BER, usam os termos de forma incorreta.

Como o ASN.1 é a linguagem dos padrões, é muito comum encontrar recomendações de padrão programadas no ASN.1. Profissionais de suporte, consultores e especialistas em tecnologia da informação são beneficiados pelo conhecimento de ASN.1, já que isso lhes permite um aprofundamento nos padrões e a decodificação e compreensão do conteúdo dos dados do problema que estão tentando solucionar. Os padrões mais comuns programados no ASN.1 são aqueles produzidos pela CCITT (International Telegraph and Telephone Consultative Committee) e pela ITU (International Telecommunications Union). No entanto, membros da IETF (Internet Engineering Task Force) estão usando cada vez mais o ASN.1 para expor sutilmente suas recomendações. O ASN.1 expõe em uma página o que ocuparia cinco ou seis páginas para ser programado em outro formato.

A seguir está uma lista dos padrões comumente usados que são programados no ASN.1:
  • X.400 (Mensagens eletrônicas)
  • X.500 (Serviços de diretório)
  • X.200 (Comunicações de rede)
  • Solicitação de comentários (RFCs) 2251-2256 (Lightweight Directory Access Protocol ou LDAP)
  • Muitos outros RFCs para mencionar
Qualquer especialista em computação ou em comunicações de dados que realmente deseja se destacar, precisam ter pelo menos um conhecimento básico de ASN.1 e BER. Como o Microsoft Windows 2000 e o Microsoft Exchange 2000 Server implementam os padrões mencionados acima de uma forma ou de outra, ter fluência na leitura e compreensão do ASN.1 e BER facilita a solução dos problemas desses dois produtos.

Mais Informações

ASN.1

Abstract Syntax Notation One (normalmente conhecido como ASN.1) é uma linguagem para definição de padrões sem levar em consideração a implementação. É a linguagem de programadores padrão. Quando John Smith da CalTech quer programar uma recomendação para a padronização dos procedimentos que um componente segue para comunicar-se com outro componente, ele programa a recomendação em notação ASN.1 e envia essa recomendação para um corpo padrão como o ITU. O ASN.1 facilita a comunicação entre profissionais membros do comitê, oferecendo uma linguagem comum para descrição de um padrão. O ASN.1 está definido nas recomendações ITU-T X.209 e X.690.


Por exemplo, o ASN.1 define:
  • O que é "Tipo".
  • O que é um "módulo" e qual deve ser sua aparência.
  • O que é um INTEIRO.
  • O que é um BOOLEANO.
  • O que é um "tipo estruturado".
  • Qual o significado de determinadas palavras-chave (por exemplo, INÍCIO, FIM, IMPORTAR, EXPORTAR, EXTERNO e assim por diante).
  • Como colocar um tipo entre "tags" para que possa ser devidamente codificado.
O ASN.1 não leva em consideração nenhum padrão específico, método de codificação, linguagem de programação ou plataforma de hardware. É simplesmente uma linguagem para definição de padrões. Em outras palavras, padrões são programados em ASN.1.

BER

BER (pronuncia-se "burr") é o nome comum para as Regras de codificação básica do ASN.1. O BER está definido nas recomendações ITU-T X.209 e X.690. BER é um conjunto de regras para codificação de dados do ASN.1 para um fluxo de octetos que pode ser transmitido por um link de comunicações. Entre outros métodos de codificação de dados do ASN.1 estão DER (Distinguished Encoding Rules), CER (Canonical Encoding Rules) e PER (Packing Encoding Rules). Cada método de codificação possui sua própria aplicação, mas o BER é o método de codificação usado com mais frequência e o mais comentado.

O BER define:
  • Métodos para codificação de valores ASN.1.
  • Regras para decisão de quando usar um determinado método.
  • O formato de octetos específicos nos dados.

Contrastando o ASN.1 e o BER

O ASN.1 é como uma linguagem de programação (por exemplo C), enquanto o BER é como um compilador para essa linguagem. Compiladores são específicos de plataforma, enquanto muitas linguagens de programação de alto nível não o são. A linguagem C define as regras e idioma para a programação de um programa. Um programa não é C, mas programado em C. O programa não será útil até que seja compilado para uma plataforma específica (como Intel x86). Assim funciona com o ASN.1 e o BER. O ASN.1 é a linguagem para programação de um padrão. Um padrão não é ASN.1, mas programado em ASN.1. Os dados, gerados por um programa compatível com o padrão, podem ser chamados erroneamente de "dados do ASN.1." Os dados ASN.1 não são úteis (ou seja, não podem ser transmitidos por uma LAN) até que os dados ASN.1 sejam codificados em um fluxo de octetos que pode ser facilmente decodificado no destino. Para ilustrar isso, segue um exemplo desses conceitos derivados das recomendações ITU-T X.209, Apêndice I. Essa é uma descrição informal de um registro de dados particular:
   Nome:             John P Smith
   Data de nascimento:    17 de julho de 1959
   (outros dados)
					
A descrição ASN.1 de um registro particular (o padrão) pode ser:
   Registro particular::= [APPLICATION 0] IMPLICIT SET {
       Nome,
       título [0]       VisibleString,
       Data de nascimento [1]          Data,
       (outros tipos definidos)          }

   Nome ::= [APPLICATION 1] IMPLICIT SEQUENCE {
       Nome determinado   VisibleString,
       Inicial         VisibleString, 
       Sobrenome       VisibleString  }
					
Essa descrição do ASN.1 demonstra qual a aparência de um registro pessoal. Mas, mais importante que isso, descreve como os dados do aplicativo devem ser formatados para que se tornem dados ASN.1 antes de dar lugar à codificação.

Depois disso, o aplicativo mapeia os dados pessoais em uma estrutura de registro pessoal (formato de dados ASN.1), e aplica o BER (Basic Encoding Rules) aos dados ASN.1. Essa é a aperência que deverá ter (com exceção de que os nomes deverão ser convertidos para ASCII):
  Pessoal
  Registro    Comprimento   Conteúdo
  60         8185
                      Nome     Comprimento  Conteúdo
                      61       10
                                       String_visível  Comprimento  Conteúdo
                                       1A             04      "John"
                                       String_visível  Comprimento  Conteúdo
                                       1A             01      "P"
                                       String_visível  Comprimento  Conteúdo
                                       1A             05      "Smith"

                       Data de nascimento   Comprimento   Conteúdo
                       A0              0A
                                               Data    comprimento  Conteúdo
                                               43      08      "19590717"
					
Quando tudo estiver concluído, o que realmente será transmitido (ou, mais especificamente, o que torna-se a parte dos dados para o pacote na próxima camanda) é:
60 81 85 61 10 1A 04 ....
....  0A 43 08 19 59 07 17
					

Referências

Para obter informações adicionais sobre ASN.1, consulte a recomendação ITU-T X.680 a 683.
Para obter informações adicionais sobre o BER, consulte a própria recomendação (recomendação ITU-T X.690 ou X.691).

Para obter informações adicionais, leia "Alterando de ASN.1:1988 para ASN.1:2002" na página da Web (em inglês) ITU-T Study Group 17:
http://www.itu.int/ITU-T/studygroups/com17/changing-ASN/(site em inglês)

Propriedades

ID do artigo: 252648 - Última revisão: sexta-feira, 7 de maio de 2004 - Revisão: 4.0
A informação contida neste artigo aplica-se a:
  • Microsoft Exchange Server 5.5 Standard Edition
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
Palavras-chave: 
kbinfo KB252648

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com