Está en la página 1de 7

Abstract Sintax Notation

Salvador Lpez Mendoza o 12 de septiembre de 2011

1.

ASN.1 (Abstract Sintax Notation 1)

Es grande, complejo y poco eciente. Sus autores pensaron que habr un ASN.2. a Componentes: Lenguaje de descripcin de datos. o Sintaxis abstracta (ISO 8824). Reglas de codicacin. o Sintaxis de transferencia (ISO 8825).

2.

Sintaxis abstracta en ASN.1


Distingue maysculas de minsculas. u u Comentarios: Dos guiones (--) en cualquier lugar ignora el resto de la l nea. Tipos de datos: N ombre tipo ::= tipo Empiezan siempre con maysculas. u Constantes (valor concreto de un tipo): nombreV alor N ombre tipo ::= valor Empiezan siempre con minsculas. u El valor NULL pertenece a cualquier tipo. 1

3.

Tipos simples en ASN.1

INTEGER Positivos o negativos, sin l mite de rango. NumeroLlamadas ::= INTEGER DiaMes ::= INTEGER {primero(1), ultimo(31)} primerDia DiaMes ::= primero -- 1 o primero y ultimo son alias de 1 y 31. No restringe el conjunto de valores de DiaMes. BOOLEAN Valores: TRUE, FALSE. ErrorCondition ::= BOOLEAN hayError ErrorCondition ::= False REAL Tripleta (mantisa, base, exponente) pi REAL ::= {31415927, 10, -8} Hay valores especiales: 0, PLUS-INFINITY, MINUS-INFINITY ENUMERATED Conjunto nito de valores. Color ::= ENUMERATED {rojo(0), verde(1), azul(2)} unColor Color ::= verde -- o 1 BITSTRING Cadena de bits de cualquier longitud. 2

Mascara ::= BITSTRING mb Mascara ::= 10001B -- 5 bits mh Mascara ::= 12A3BH -- 20 bits Mper ::= BITSTRING {st(0), ack(1), d1(2), d2(3)} Mper es una cadena de 4 bits, cada uno de ellos puede valer 1 0. o mp1 Mper ::= {st, ack} -- 0011B o OCTETSTRING Cadena de octetos (bytes). Os ::= OCTETSTRING unOs Os ::= 00011100 00011010 0001011B otroOS Os ::= 1A2FH otroMas Os ::= Texto codificado en ASCII OBJECT IDENTIFIER Se usa para identicar un objeto en forma unica e inconfundible. Es una secuencia de enteros que se interpreta jerrquicamente. a Objeto ::= OBJECT IDENTIFIER internet Objeto ::= {1 3 6 1} ftam Objeto ::= {1 0 8571} -- {iso standard 8571}

4.

Tipos predenidos

Tipos que, sin ser primitivos, se usan en las aplicaciones. Se usan sin denirlos expl citamente, son subconjuntos de OCTET STRING. Ejemplos: ej1 ej2 ej3 ej4 IA5String ::= Cadena en ASCII NumericString ::= 1234567890 PrintableString ::= A..Za..z ()+,-./:=? GeneralizedTime ::= 20110816171235 -- 17:12:35 del 16 de Agosto de 2011. 3

5.

Tipos compuestos en ASN.1

Se construyen a partir de los tipos simples o de otros tipos compuestos. Existen varios elementos para la construccin de tipos: o SEQUENCE SEQUENCEOF SET SETOF CHOICE RegistroPersonal ::= SEQUENCE{ nombre OCTET STRING, numEmpleado INTEGER, sueldo REAL, antEmpresa INTEGER ident CHOICE{ credIFE GeneralString, pasaporte NumericString } } empleado RegistroPersonal ::= SEQUENCE{ nombre Andrea Lpez Lpez, o o numEmpleado 1357, sueldo {158462, 10, -1}, antEmpresa 5, ident {credIFE 146573DF65}}

5.1.

Mecanismos para construir elementos ASN.1


Denicin de subtipos. Restriccin de tipos. o o Tipo ANY. Permite usar cualquier tipo ASN.1 vlido. a Tipo EXTERNAL. Permite hacer referencia a tipos denidos en otros mdulos o a o tipos que no son ASN.1. 4

Denicin de macro-instrucciones. Permiten ampliar la sintaxis. o Mdulos. Conjuntos de deniciones a las que se da su propio nombre. o Etiquetas. Cada tipo tiene asociada una etiqueta. Se usa en la transmisin. o Se puede especicar el mbito de validez de cada etiqueta. a

6.

Reglas bsicas de codicacin (BER) a o

Dados elementos construidos en base a la sintaxis de ASN.1, las reglas bsicas de codicacin a o especican de qu manera se transmiten por la red. e Se utiliza en enfoque TLV: (tipo, longitud, valor). Cada tipo de dato tiene asociado un valor, los tipos primitivos tienen valores predenidos.
nombre ::= Octet String gasto ::= INTEGER {nombre,"Andrea"} {gasto,259}

BER

3 1 2 2 a e r d n A 6 4

Bytes transmitidos

Figura 1: Ejemplo de transmisin o

7.

Codicacin de tipos o

Se utilizan 8 bits para especicar el tipo. 5

2 bits

1 bit

5 bits

Clase

P/C

Etiqueta
Figura 2:

Clase: UNIVERSAL 00 APPLICATION 01 PRIVATE 10 Espec ca 11 Etiqueta. Valor numrico de la etie queta.

P/C (primitivo/construido): P/C = 0 para tipos primitivos. P/C = 1 para tipos construidos. Si el tipo es construido, tras T y L va una nueva terna TLV.

8.

Codicacin de longitud o

Generalmente se utilizan 8 bits para especicar la longitud. Si el tamao del elemento es menor a 126, se codica tal cual. n El valor 01111111 est reservado. a Cuando la longitud es mayor a 126 el primer bit vale 1 y los restantes indican la cantidad de octetos (bytes) que se utilizan para describir el valor n de la longitud real. A continuacin o de este octeto (byte) siguen los n octetos que contienen dicho valor.

9.

Codicacin de valores o
BOOLEAN. Se codica con un octeto. FALSE = 0 y TRUE != 0. INTEGER. Se utiliza notacin complemento a 2, con tantos bytes como sea necesario. o BITSTRING. Se escribe tal y como se haya especicado, rellenando a mltiplos de 8 u bits. Al principio va un octeto cuyo valor es la cantidad de bits de relleno. OCTET STRING. Tal cual se escriben, byte a byte.

Los que corresponden a tipos predenidos se codican de la misma forma, solo cambia el valor de la etiqueta. OBJECT IDENTIFIER. Es una secuencia de enteros {A, B, C, ...}. Los dos primeros enteros se codican juntos: A 40 + B. El resto se codican uno a uno por separado como enteros sin signo. El bit ms signia cativo es 1 si viene seguido de otro octeto que forma parte del mismo entero. REAL. Valor = 0, no hay octeto de valor (longitud = 0). El primer octeto indica el esquema de codicacin: o 01. Valor especial (PLUS-INFINITY, MINUS-INFINITY). 00. Codicacin de los d o gitos decimales que forman el nmero (ISO 6093). u 1. Codicacin binaria S N 2F B E . o S. Signo. N. Nmero. u F. Factor (0, 1, 2 o 3). B. Base (2, 8 o 16). E. Exponente de la base.

También podría gustarte