ASN.1 ou Abstract Syntax Notation One é uma notação que permite definir tipos de dados simples e complexos e especificar valores que estes tipos podem assumir.
Os valores que são transmitidos podem ser de diversos tipos. Existem os tipos simples e outros, mais complexos, que são formados de vários tipos simples combinados. Cada tipo recebe uma denominação que o distingue, de forma inequívoca de todos os demais tipos. Algumas das maneiras de definir novos tipos são:
Existem quatro classes de rótulos:
construção, conforme especificado na tabela A.1.
particular padrão os rótulos da classe de APLICAÇ[[Atilde]]O somente podem ser
atribuídos a um único valor.
que é usado
/----------------------------------------------------------------------\ | TABELA A.1 Rotulo atribuídos na classe universal | | |----------------------------------------------------------------------| | UNIVERSAL 1 | tipo booleano | | UNIVERSAL 2 | tipo inteiro | | UNIVERSAL 3 | tipo string de bits | | UNIVERSAL 4 | tipo string de octetos | | UNIVERSAL 5 | tipo nulo | | UNIVERSAL 6 | tipo identificador de objeto | | UNIVERSAL 7 | tipo descritor de objeto | | UNIVERSAL 8 | tipo externo | | UNIVERSAL 9-15 | reservados para adendos ao padrão | UNIVERSAL 16 | tipo SEQUENCE e SEQUENCE-OF | | UNIVERSAL 17 | tipo SET e SET-OF | | UNIVERSAL 18-22, 25-27 | tipos string de conjuntos de caracteres | | UNIVERSAL 23-24 | tipo hora | | UNIVERSAL 28-... | reservados para adendos ao padrão \----------------------------------------------------------------------/O valor do rótulo é especificado indicando-se sua classe e o número dentro da classe (que deve ser inteiro não negativo), em notação decimal.
As regras de codificação sempre conduzem o rótulo do tipo, explícita ou implicitamente, bem como alguma representação do valor do tipo.
ASN.1 ou Abstract Syntax Notation One e uma notação que permite definir tipos complexos e especificar valores destes tipos. As regras de codificação constituem outro padrão que aplicadas ao valor de um certo tipo definido pela ASN.1 resultam na especificação completa dos valores daquele tipo durante a transferência. As regras de codificação sempre forçam a transmissão do rótulo de um tipo, implícita ou explicitamente, juntamente com a representação do seu valor.
Supondo que a definição de um registro de funcionário tenha sido definido e recebido a denominação de DADOS-PESSOAL. Os campos pertinentes a tal tipo de registro poderiam ser como os seguintes:
Nome: Joao P. Silva
Cargo: Diretor
Numero: 51
Data de admissão: 17 de setembro de 1971
Nome da esposa: Maria Silva
Numero de filhos: 2
Informações sobre filhos
Nome: Rafael Silva
Data de nascimento: 11 de novembro de 1957
Informações sobre filho
Nome: Suzana Silva
Data de nascimento: 17 de julho de 1959
A descrição formal deste registro, usando a notação ASN.1 seria:
Registro pessoal::- [APPLICATION 0] IMPLICIT SET { Nome, Cargo [0] ISO646 String, NumeroEmpregado, DataIngresso [1] Date, NomeEsposa [2] Name, Filhos [3] IMPLICIT SEQUENCE OF InformaçãoFilho DEFAULT { }} Informaçãofilho::- SET { Nome, DataNascimento [0] Date} Nome ::- [APPLICATION 1] IMPLICIT SEQUENCE { Nome ISO646 String, Inicial ISO646 String, Sobrenome ISO646 String, NumeroEmpregado::- [APPLICATION 2] IMPLICIT INTEGER Date ::- [APPLICATION 3] IMPLICIT ISO 646 String -- AAAAMMDD O valor ou conteudo de um registro deste tipo seria: { nome "Joao", inicial "P", sobrenome "Silva"},
Os detalhes desta especificação serão apresentados na próxima sessão.