ASN.1 (Abstract Syntax Notation One) é uma forma padrão de descrever uma mensagem (uma unidade de dados da aplicação) que pode ser enviada ou recebida em uma rede. ASN.1 é dividido em duas partes: (1) as regras de sintaxe para descrever o conteúdo de uma mensagem em termos de tipo de dados e seqüência ou estrutura de conteúdo e (2) como você realmente codifica cada item de dados em uma mensagem. ASN.1 é definido em duas normas ISO para aplicações destinadas ao framework Open Systems Interconnection (OSI):
- ISO 8824/ITU X.208 especifica a sintaxe (por exemplo, qual item de dados vem primeiro na mensagem e qual é o seu tipo de dados)
- ISO 8825/ITU X.209 especifica as regras básicas de codificação para ASN.1 (por exemplo, como declarar por quanto tempo um item de dados é)
Aqui está um exemplo de uma definição de mensagem especificada com a notação ASN.1:
Relatório ::= SEQUÊNCIA { autor OCTET STRING, título OCTET STRING, corpo OCTET STRING, biblio Bibliografia }
Neste exemplo muito simples, "Relatório" é o nome deste tipo de mensagem. SEQUENCE indica que a mensagem é uma sequência de itens de dados. Os primeiros quatro itens de dados têm o tipo de dados OCTET STRING, significando que cada um é uma seqüência de oito bits (o termo OCTET foi usado em vez de BYTE porque não se pode assumir que todos os computadores terão oito bits em um byte). O item de dados bibliográficos é outra definição chamada "Bibliografia" que é usada dentro desta. Pode parecer-se com isto:
Bibliografia ::= SEQUÊNCIA { autor OCTET STRING título OCTET STRING editora OCTET STRING ano OCTET STRING }
Outros tipos de dados que podem ser especificados incluem: INTEGER, BOOLEAN, REAL, e BIT STRING. Um tipo de dado ENUMERADO é aquele que toma um dos vários valores possíveis. Os itens de dados podem ser especificados como OPTATIVOS (não necessariamente presentes).