Partilhar via


Dados codificados e decodificados

Para enviar dados por um meio de comunicação, como uma linha telefônica, os dados devem ser serializados— ou seja, convertidos em uma sequência de uns e zeros que são transmitidos em série pela linha. A serialização deve ser feita de tal forma que o computador que recebe os dados possa convertê-los de volta ao seu formato original. A forma como a serialização é realizada é chamada de protocolo de comunicação e é controlada por software e hardware de transmissão de dados. Existem vários níveis em que os dados são convertidos. A ilustração a seguir mostra uma visão muito simplificada das camadas de protocolo de comunicação.

camadas de protocolo de comunicação

A ilustração anterior mostra a camada de aplicação no Computador #1 enviando os dados a serem transmitidos (que geralmente consiste em alguma combinação de caracteres textuais e números) para a camada de codificação/decodificação. A camada de codificação/decodificação codifica os dados em um fluxo de bytes do computador. No nível mais baixo, a camada de hardware, o hardware converte os bytes de dados em um fluxo serial de uns e zeros que é transmitido através da linha para o Computador #2. A camada de hardware do Computador #2 converte os uns e zeros de volta em bytes do computador e os passa para a camada de codificação/decodificação para decodificação. A camada de codificação/decodificação decodifica os bytes de volta ao seu formato original e passa os dados para a camada de aplicativo.

Um princípio de design de software aceito é usar abstração, ou seja, o processo de descrever um problema ou objeto em termos de seus parâmetros gerais, em vez de descrever todos os detalhes necessários para resolver o problema, ou descrever todos os detalhes de um objeto. Usando abstração, um designer pode especificar um objeto de software que tenha qualidades específicas sem se preocupar com como o objeto é realmente implementado no código do software. Tal prática deixa a implementação em aberto. Ele também simplifica a especificação e torna possível declarar axiomas sobre o objeto que podem ser provados quando o objeto é implementado. Esses axiomas podem então ser assumidos quando o objeto é empregado em outro objeto de nível superior. A abstração é a marca registrada da maioria das especificações de software contemporâneas.

A maioria dos protocolos de comunicação envolver uma boa dose de abstração. Objetos em camadas superiores são definidos abstratamente e destinam-se a ser implementados usando objetos em camadas inferiores. Por exemplo, um serviço em uma camada pode exigir a transferência de certos objetos abstratos entre computadores. Uma camada de nível inferior pode usar regras de codificação para transformar os objetos abstratos em cadeias de caracteres de uns e zeros.

Um método comum de especificar objetos abstratos destinados a serem transmitidos em série é chamado Abstract Syntax Notation One (ASN.1). ASN.1 é definido na Recomendação do CCITT X.208. Um conjunto de regras ASN.1 para representar tais objetos como cadeias de caracteres de uns e zeros é chamado de Distinguished Encoding Rules (DER) e é definido na Recomendação do CCITT X.509, Seção 8.7. Estes são os métodos de codificação atualmente usados pela CryptoAPI.

Para obter mais informações sobre funções de codificação/decodificação, consulte Object Encoding and Decoding Functions.