Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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.