140 likes | 295 Views
ASN.1. Tarciana Dias Luciana Oliveira Flávia Falcão. Introdução ASN.1. Notação Sintática Abstrata (Abstract Syntax Notation One – ASN.1)
E N D
ASN.1 Tarciana Dias Luciana Oliveira Flávia Falcão
Introdução ASN.1 • Notação Sintática Abstrata (Abstract Syntax Notation One – ASN.1) • Para que o gerenciamento de dispositivos de uma rede que tenham diferentes fabricantes seja possível, é necessário uma forma padronizada para a descrição dos mesmos • A linguagem ASN.1 foi proposta com o objetivo de descrever esses objetos numa forma padronizada e independente de fabricante
MIB Modelo SNMP Encarregado de coletar dados dos dispositivos e armazená-los numa estrutura padrão (base de dados) “Cliente” “Servidor” Get Gerente Agente Get-Response Envia mensagens SNMP, modifica valor da variável... Controla (Acesso direto à MIB) SMI: Especifica uma metodologia para definição da informação contida na MIB. Usa um subconjunto de tipos de dados ASN.1 Define o conjunto conceitual dos objetos e contém informações detalhadas sobre cada objeto
ASN.1Tipos Primitivos • INTEGER – inteiro de tamanho arbitrário • BOOLEAN - TRUE ou FALSE • BIT STRING – Lista de zero ou mais bits • OCTET STRING – Lista de zero ou mais byte • ANY – União de todos os tipos • NULL – Absolutamente nenhum tipo • OBJECT IDENTIFIER – Nome de objeto (ex.: uma biblioteca)
Construtores SEQUENCE: Lista ordenada de vários tipos SEQUENCE OF: Lista ordenada de um só tipo SET: Colecção não ordenada de vários tipos SET OF: Coleção não ordenada de um só tipo CHOICE: Qualquer tipo de uma lista
Exemplo de código ASN.1 • Employee DEFINITIONS ::= BEGIN • EXPORTS; • PersonnelRecord ::= [APPLICATION 0] IMPLICIT SET { • Name, • title [0] IA5String, • number EmployeeNumber, • dateOfHire [1] Date, • nameOfSpouse [2] Name, • children [3] IMPLICIT SEQUENCE OF ChildInformation • } • ChildInformation ::= SET { • Name, • dateOfBirth [0] Date • } • Name ::= [APPLICATION 1] IMPLICIT SEQUENCE { • givenName IA5String, • initial IA5String, • familyName IA5String • } • EmployeeNumber ::= [APPLICATION 2] IMPLICIT INTEGER • Date ::= IA5String • END
Classes Geradas • PersonnelRecord.java • _SeqOfChildInformation.java • ChildInformation.java • Date.java • EmployeeNumber.java • Name.java • PrintHandler.java • Reader.java • Writer.java • XMLHandler.java
Classes Criadas • Gerente.java • Agente.java • Iservico.java (interface remota)
Compiladores • ASN1C (Java, C ou C++) http://www.obj-sys.com • Asn1Compiler (C# e Java) http://www.unigone.com/ • ASN-1Step (C, C++ ou Java) http://www.oss.com/
O compilador ASN1C • O compilador de ASNC1 é capaz de gerar o código Java. O código gerado de Java consiste em uma série de arquivos de fonte de Java - uma tipo definida dentro de uma especificação ASN.1. • Ex: ChildInformation ::= SET {Name, dateOfBirth [0] Date}
O compilador ASN1C • Cada um destes arquivos em Java contém (no mínimo) os seguintes itens: • Uma variável (ou variáveis) pública dos dados • Um construtor (ou construtores) para inicializar a variável. • Um método encode. • Um método decode.
O compilador ASN1C • Há também uma biblioteca run-time para Java. Ela consiste em uma série de classes para codificar e descodificar os tipos ASN.1 primitivos. Por o exemplo, a classe Asn1Integer codificará ou descodificará uma variável do tipo do INTEIRO ASN.1.
Roteiro ASN1C • Setar o arquivo .asn1 • Identificar o tipo de linguagem a ser gerada (Java, C ou C++) • Identifar BER, PER, DER • Para compilar e executar: set classpath= local do asn1rt.jar; local do jdk1.4;%path% Por exemplo: Set classpath=C:\acv541\java\asn1rt.jar;C:\jbuilder8\jdk1.4\bin\;%path%