Está en la página 1de 7

Notación Sintáctica Abstracta Uno ASN.

ASN.1 fue desarrollado como parte de la capa 6 (presentación) del modelo de referencia
OSI (esta capa define la forma en que los datos serán almacenados en los nodos).

La notación ASN.1 fue publicada en la recomendación ITU-T X.208 | ISO/IEC 8824


(diciembre/1987). En 1995 se hicieron revisiones para corregir errores, ambigüedades
e incluir nuevas capacidades.

ASN.1 es una notación que ofrece un rico conjunto de tipos de datos y contructores que
permiten definir estructuras de datos complejas a partir de tipos simples o primitivos. Al
igual que cualquier lenguaje de programación, la notación es especificada utilizando
gramática BNF.

Stalling (1999) define la notación sintáctica abstracta uno, como un metalenguaje


que especifica el formato y los lineamientos para las definiciones de las clases de
objetos utilizado ampliamente en el desarrollo de normalizaciones relacionadas con los
modelos OSI y TCP/IP. Asimismo, se utiliza para definir el formato de las unidades de
datos de protocolo (PDU), la representación de la información distribuida y las
operaciones realizadas con los datos transmitidos. Siguiendo con la idea anterior, se
entiende que ASN proporciona diferentes componentes que no solo se encargan de
elaborar un dato de protocolo (PDU) sino también, la forma de cómo este será
representado a través de una sintaxis para poder de esta forma viajar por un medio
tangible o intangible y llegar al nodo destino.

Tipos de componentes de ASN.1: existen dos (2) tipos de componentes de ASN.1


tales como: el componente de aplicación y de transferencia

● Componentes de Aplicación
Es la forma de cómo el usuario ve los datos a través de las aplicaciones, que no es
más que un conjunto estructurado de información. En tal sentido, el componente de
aplicación es quien debe proporcionar una representación de estos datos que se
puedan convertir en bits, que esté relacionado con la sintaxis de los datos. Asimismo,
para el componente de aplicación, la información se representa en una sintaxis
abstracta que trata con tipos de datos y los valores de esos datos para intercambiar
información entre componentes de aplicación en sistemas diferentes (heterogéneos),
de esta forma, es como los protocolos de la capa de aplicación describen sus PDU en
términos de esta sintaxis.

● Componente de Transferencia
Los datos recibidos de una aplicación se muestran como una secuencia de octetos
binario (10001110 = A, 00110101 = s), donde estos se pueden ensamblar
directamente en Unidades de Datos de Servicio (SDU) para ser transferidos entre
capas (Aplicación, Presentación) y en Unidades de Datos de Protocolo (PDU) para ser
transferidos entre entidades de una misma capa. Para el componente de trasferencia,
la sintaxis de transferencia especifica la representación de los datos que se van a
intercambiar entre los componentes de transferencia de datos. La traducción de
ambas sintaxis la abstracta y la de transferencia se realiza por medio de reglas que
especifican la representación de cada valor de los datos de cada tipo de datos.
Tipos de Datos
ASN.1 está diseñado para definir información estructurada (mensajes) de tal
forma que sea independiente de la máquina utilizada. Para hacer esto ASN.1
define los tipos de datos básicos, según si son simples (primitivos), compuestos
(construidos a partir de otros, simples o compuestos) o definidos, con una etiqueta de
nombre para identificarlos.

Tipos primitivos: son escalares, es decir, almacenan un único valor, como por ejemplo
una cadena de texto o un entero. Los tipos primitivos más importantes son:

● El tipo INTEGER se usa para representar números enteros.


● El tipo OCTET STRING almacena una secuencia de bytes. De él se derivan tres
subtipos:

o DisplayString (para cadenas de caracteres ASCII)


o OctetBitString (para cadenas de bits mayores de 32)
o PhysAddress (para representar direcciones del nivel de enlace).

● El tipo OBJECT IDENTIFIER para representar los identificadores de los objetos, es


decir, la posición de un objeto dentro del árbol de la MIB.
● El tipo BOOLEAN para valores que sólo pueden ser verdadero o falso.
● El tipo NULL para representar la ausencia de valor.

Tipos construidos son tipos compuestos. Se usan para crear arrays y tablas. Los más
importantes son:

● El tipo SEQUENCE es una estructura de datos, es decir, una lista ordenada de


tipos de datos diferentes. Es el tipo que se usa para almacenar una fila de una
tabla.
● El tipo SEQUENCE OF es una lista ordenada de tipos de datos iguales. Es similar
al tipo "SEQUENCE", excepto que todos los tipos han de ser iguales. Es el tipo
usado en tablas para almacenar todas las filas.
● El tipo SET es equivalente al "SEQUENCE", pero la lista no está ordenada. Hay
que notar que todos los componentes de la lista SET deben ser diferentes si no la
definición sería ambigua.
● El tipo SET OF es equivalente al "SEQUENCE OF" pero la lista no está ordenada.
● El tipo CHOICE es un tipo de datos en el que hay que elegir uno de entre los tipos
disponibles en una lista. Por ejemplo, un tipo "Animal" podría ser una "CHOICE"
entre los tipos "Perro", "Gato" o "Pez".

Tipos Definidos: Son tipos derivados de los anteriores pero con un nombre más
descriptivo. Los más importantes son:

● IpAddress sirve para almacenar una dirección IP. Son 4 bytes y se define como
"OCTET STRING (SIZE (4))".
● Counter representa un contador que únicamente puede incrementar su valor y que
cuando llega a su valor máximo, vuelve a cero. Se define como un entero sin
signo, que sólo puede tomar valores positivos y el cero.
● Gauge es como un indicador de nivel. Es un valor que puede incrementar o
decrementar. Puede llevar asociadas acciones a tomar en caso de que se superen
unos umbrales. Un ejemplo es un medidor del ancho de banda medido en un
determinado interfaz. Está definido como un entero de 32 bits.
● TimeTicks es un tipo de datos usado para medir tiempos. Indica el número de
centésimas de segundo que han transcurrido desde un determinado evento
temporal. Es un entero de 32 bits.
● Opaque define datos arbitrarios codificados como OCTET STRING.
● NetworkAddress es un CHOICE que permite seleccionar varios formatos de
direcciones. Actualmente sólo IpAddress.

Clases De Etiquetados
Los Etiquetados son empleadas generalmente para activar el sistema de recepción
para decodificar correctamente los valores de varios tipos de datos, que determina un
protocolo que se puede transmitir en cualquier momento dado. La etiqueta no tiene
notación de valor propio, su tipo de notación se compone de tres (3) elementos: una
etiqueta definida por el usuario, posiblemente seguida por una implícita ó explícita, y
por último, seguido por la notación del tipo valor que se ha marcado. Asimismo,
existen las clases de etiquetados o etiquetas corresponden a un tipo de valor definido
previamente como base para ser utilizado por las etiquetas. ASN.1 define cuatro (4)
tipos de etiquetas:

● Universal: Para tipos de datos generales.

● Aplicación: Definidos para la aplicación específica.

● Específica al contexto: Definidos para el contexto local en que se usan estos tipos.
● Privada: Definidos por el usuario.

Reglas de Codificación BER


Es uno de los formatos de codificación definidos como parte del estándar ASN.1.
Asimismo, son las reglas definidas originalmente en el estándar ASN.1 para codificar
información de abstracción en un conjunto de bits único para que pueda ser
interpretado en cualquier equipo de igual forma. Las reglas, denominadas sintaxis de
transferencia en el contexto de ASN.1, especifican las secuencias de octetos exactas
para codificar un elemento de datos dado. Dichos elementos definidos por esta
sintaxis son los que se presentan a continuación. Estructura de la longitud de
información. Representaciones para tipos de datos básicos. Medios para definir tipos
complejos ó compuestos basados en más tipos primitivos.

Formato BER
Un formato BER detalla un formato auto-descriptivo y auto-delimitativo para codificar
las estructuras de datos ASN.1, donde cada elemento de datos está codificado por un
identificador de tipos, una descripción longitud, los elementos de datos actuales,
donde sea necesario y un marcador de fin-de-contenido. Según lo antes expuesto,
estos tipos de codificaciones son llamados comúnmente TLV (Tipo-Longitud-Valor).
Este formato permite a un equipo receptor decodificar la información ASN.1 desde una
corriente incompleta de bits, sin necesitar conocimiento
previo del tamaño, contenido, o significado semántico de los datos. Existen tres (3)
campos del formato BER, tales como: campo TYPE, longitud y valor; los cuales
se describen a continuación.

Codificación Tipo-Longitud-Valor (TLV)

Para definir la representación de los datos externos, el BER especifica primero la


posición de cada bit en los octetos a ser transmitidos. Cada octeto transmite primero el
bit más significativo (Most Significant Bit - MSB) y lo define como bit 8 en el lado
izquierdo del octeto. Por su parte, el bit menos significativo (Least Significant Bit - LSB)
se define en el octeto como el bit 1 en la parte derecha del mismo

La estructura de codificación del dato en si tiene tres componentes: Tipo, Longitud y


Valor (TLV). Note que en la literatura es posible que encuentre otros nombres para
TLV, incluyendo Etiqueta-Longitud-Valor (Tag-Length-Value) y Identificador-Longitud-
Valor (Identifier-Length-Contents) (ISO 8825-1).
Campo Tipo (Type field)

El campo Tipo va de primero y alerta el destino a la estructura que sigue. De esta


manera, el campo Tipo contiene una identificación para la estructura de codificación;
esto codifica el tag de ASN.1 (tanto la clase como el número) para el tipo de dato
contenido en el campo Valor. Un subcampo dentro del campo Tipo contiene un bit
designado como P/C que indica si la codificación es primitiva (Primitive) (P/C = 0) o
estructurada (Constructed) (P/C = 1)

Hay dos tipos de campos Tipo; su uso depende de la magnitud del número del tag.
Cuando el número del tag está entre 0 y 30, el campo Tag contiene un solo octeto (ver
figura 4). Cuando el número del tag es 31 o superior, el campo Tipo contiene múltiples
octetos. En cualquier caso, el primer octeto contiene tres subcampos: Clase (Class), bit
P/C y numero de tag (tag number). El subcampo Clase codifica la clase de tag en uso:
Las aplicaciones SNMP utilizan las primeras tres clases: universal, application, y
context-specific. La clase universal codifica el tipo INTEGER, el tipo OCTET STRING y
así sucesivamente. La clase application codifica los tipos definidos (IpAddress,
Counter, y así sucesivamente). La clase context-specific codifica las cinco unidades de
datos de protocolo de SNMP (PDUs), GetRequest, GetResponse, y así
sucesivamente.

El subcampo P/C (bit 6) indica la forma del elemento de dato. Codificación primitiva
(Primitive encoding) (P/C = 0) quiere decir que el contenido de los octetos representan
el valor directamente. Una codificación estructurada (Constructor encoding) (P/C = 1)
significa que el contenido de los octetos codifican uno o más valores de datos
adicionales, tal como un SEQUENCE.

SNMP usa números de tag entre 0 y 30. EL número del tag aparece en el tercer
subcampo y es representado en binario. El bit 5 es el MSB del tag; el bit 1 es su LSB.

Campo Longitud (Length field)


EL campo Longitud sigue al campo Tipo y determina el número de octetos que
contendrá el campo Valor (Value field). El campo Longitud puede tomar tanto la forma
definida corta como la larga, Definido indica que la longitud de la codificación es
conocida antes de la transmisión; indefinido indica lo contrario.

La forma definida corta indica una longitud de entre 0 y 127 octetos en el contenido del
campo; la forma definida larga indica 128 o más octetos en el contenido del campo,
aunque esto puede indicar longitudes más cortas.

La forma larga usa múltiples octetos para representar la longitud total. En esta forma,
el primer octeto del campo Longitud tiene el bit 8 = 1, seguido por un número binario
indicando el número de octetos a seguir. Este número debe estar entre 1 y 126; 127
está reservado para extensiones futuras. El bit 8 del segundo octeto es considerado el
MSB del campo Longitud, y el octeto siguiente determina el resto de la longitud. De
esta manera, la forma definida larga puede representar una longitud hasta de 21008-1
octetos. (El 1008 viene del producto entre 126 y 8: 126 octetos subsecuentes a razón
de 8 bits por octeto.
Campo Valor (Value field)

El campo Valor contiene cero o más octetos, los cuales transportan los valores de los
datos. Los ejemplos incluyen un entero, un carácter ASCII, ó un OBJECT IDENTIFIER,
tal como { 1.3.6.1.2. }.
https://leandrojhumbrial.wordpress.com/gestion-de-redes/notacion-sintactica-abstracta-uno-
asn-1-iso-8824/

https://es.wikipedia.org/wiki/ASN.1
http://www.arcesio.net/snmp/asn1.html

También podría gustarte