19
CAMADA DE APRESENTAÇÂO DO MODELO OSI Tradução e adaptação de textos referenciados no final deste capítulo por Ademar Felipe Fey em 19/04/2014. 1.1 INTRODUÇÃO A Camada de Apresentação é a de número seis do modelo OSI 2 e pertence às chamadas camadas superiores. A sua PDU é chamada de Dados ou Mensagem. 1 No modelo OSI, ela atende as solicitações de serviço da camada de aplicação e solicita serviço para a camada de sessão. 1.2 Papel da Camada de Apresentação A camada de apresentação é a primeira das camadas que provê a interoperabilidade entre mensagens trocadas entre aplicações. As primeiras cinco camadas prestam um serviço de comunicação, transferindo um conjutno de bytes, mas não abordam o significado (semântica) ou estrutura (sintaxe) da comunicação. Portanto, como veremos em seguida, a camada de apresentação tem a ver com a sintaxe e a semântica das mensagens, conversão de códigos entre máquinas e outros serviços de conversão de dados para que possa ocorrer a troca de informações entre aplicações finais. Quando utilizamos em nossos aplicativos e na tela de um computador caracteres intermitentes, vídeo reverso, formatações especiais para entrada de dados, gráficos e outros recursos, estamos exatamente atuando na camada de apresentação. Portanto, ao executar tais tarefas, as pessoas começam a se preocupar com o que elas estão enviando em um nível mais avançado do que apenas usar ou transferir uma quantidade de zeros e uns. Esta camada lida com questões como quanto a forma de como as sequências são representadas - se eles usam o método do Visual Basic ("13, thisisastring") ou o método C/C + + ("thisisastring \ 0"). A ideia é que a camada de aplicação deve ser capaz de apontar para os dados a serem movidos, e a camada de apresentação irá se encarregar de transferi-los corretamente. A camada de apresentação, conforme seu próprio nome diz, apresenta dados para a camada de aplicação. Ela é essencialmente um tradutor e fornece funções de codificação e conversão. A técnica de transferência de dados bem-sucedida é aquela que adapta os dados em um formato padrão antes da transmissão. Os computadores são configurados para receber esses dados genericamente formatados e, em seguida, converter os dados de volta para o seu formato nativo para uma leitura real (por exemplo, EBCDIC para ASCII). Ao fornecer serviço de tradução, a camada de apresentação assegura que os dados transferidos a partir da camada de aplicação de um sistema possam ser lidos pela camada de aplicação de outro host.

Camada de Apresentação Do Modelo OSI_140422

Embed Size (px)

DESCRIPTION

Camada de Apresentação Do Modelo OSI_140422

Citation preview

CAMADA DE APRESENTAÇÂO DO MODELO OSI Tradução e adaptação de textos referenciados no final deste capítulo por Ademar Felipe Fey em 19/04/2014. 1.1 INTRODUÇÃO A Camada de Apresentação é a de número seis do modelo OSI2 e pertence às chamadas camadas superiores. A sua PDU é chamada de Dados ou Mensagem.1

No modelo OSI, ela atende as solicitações de serviço da camada de aplicação e solicita serviço para a camada de sessão. 1.2 Papel da Camada de Apresentação A camada de apresentação é a primeira das camadas que provê a interoperabilidade entre mensagens trocadas entre aplicações. As primeiras cinco camadas prestam um serviço de comunicação, transferindo um conjutno de bytes, mas não abordam o significado (semântica) ou estrutura (sintaxe) da comunicação. Portanto, como veremos em seguida, a camada de apresentação tem a ver com a sintaxe e a semântica das mensagens, conversão de códigos entre máquinas e outros serviços de conversão de dados para que possa ocorrer a troca de informações entre aplicações finais. Quando utilizamos em nossos aplicativos e na tela de um computador caracteres intermitentes, vídeo reverso, formatações especiais para entrada de dados, gráficos e outros recursos, estamos exatamente atuando na camada de apresentação. Portanto, ao executar tais tarefas, as pessoas começam a se preocupar com o que elas estão enviando em um nível mais avançado do que apenas usar ou transferir uma quantidade de zeros e uns. Esta camada lida com questões como quanto a forma de como as sequências são representadas - se eles usam o método do Visual Basic ("13, thisisastring") ou o método C/C + + ("thisisastring \ 0"). A ideia é que a camada de aplicação deve ser capaz de apontar para os dados a serem movidos, e a camada de apresentação irá se encarregar de transferi-los corretamente. A camada de apresentação, conforme seu próprio nome diz, apresenta dados para a camada de aplicação. Ela é essencialmente um tradutor e fornece funções de codificação e conversão. A técnica de transferência de dados bem-sucedida é aquela que adapta os dados em um formato padrão antes da transmissão. Os computadores são configurados para receber esses dados genericamente formatados e, em seguida, converter os dados de volta para o seu formato nativo para uma leitura real (por exemplo, EBCDIC para ASCII). Ao fornecer serviço de tradução, a camada de apresentação assegura que os dados transferidos a partir da camada de aplicação de um sistema possam ser lidos pela camada de aplicação de outro host.

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

2

O papel da camada de apresentação é transformar os dados no formato que a camada de aplicação possa aceitar. O serviço prestado pela camada de apresentação é o de lidar com os problemas de compatibilidade de representação dos dados. Esta camada converte, comprime, formata e criptografa os dados a serem enviados através de uma rede. Nesse sentido, a camada de apresentação fornece independência aos processos de aplicação contra diferenças na representação dos dados (sintaxe), permitindo que o usuário selecione o contexto da apresentação, para tentar atenuar as diferenças na representação dos dados entre os hosts. Permite processos incompatíveis na camada de aplicação se comunicar por meio da camada de sessão. A camada de apresentação é responsável pela entrega e formatação das informações para a camada de aplicação para processamento posterior ou exibição. Ela libera a camada de aplicação da preocupação com as diferenças sintáticas em representação de dados nos sistemas do usuário final. Um exemplo de um serviço de apresentação seria a conversão de um arquivo de texto com código EBCDIC para um arquivo com código ASCII. A camada de apresentação se preocupa com a representação dos dados transferidos entre as aplicações, possuindo as seguintes responsabilidades:

• Tradução (Sintaxe e semântica da Informação transmitida): gerencia informações em formato de dados para comunicações em rede;

• Codificação de códigos padrões de Informação (ASCII, EBCDIC, Unicódigo): para mensagens enviadas, ela converte os dados em um formato genérico para transmissão em rede; para as mensagens recebidas, ela converte os dados do formato de rede genérico para um formato que o aplicativo destinatário possa entender;

• Compatibilização das estruturas de representação de dados para a comunicação de computadores baseados em diferentes processadores, com diferentes representações da informação, através do uso de códigos de dados abstratos (ASN.1);

• Criptografia e descriptografia (propósitos de segurança); • Compressão e descompressão de dados (melhoria da eficiência na

transmissão dos dados). 1.3 Protocolos da Camada de Apresentação Exemplos de protocolos de formatação genéricos desta camada: AFP, AppleTalk Filing Protocol LPP, Lightweight Presentation Protocol NCP, NetWare Core Protocol NDR, Network Data Representation XDR, eXternal Data Representation X.25 PAD, Packet Assembler/Disassembler Protocol Exemplos de protocolos de codificação dos dados da camada de apresentação são:

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

3

JPEG, ASCII, EBCDIC, TIFF, GIF, PICT, encryption, MPEG, MIDI Alguns exemplos de protocolos de conversão de sintaxe da camada de apresentação: ASN.1, protocolo de apresentação ISO. 1.4 Funções da Camada de Apresentação Existem três funções básicas normalmente associadas com esta camada: • conversão interna de representação de dados, • criptografia, • compressão. Essas funções são geralmente úteis: uma ou muitas podem ser usadas por protocolos de camada de aplicação. 1.4.1 Conversão interna dos dados (codificação)

Provavelmente, a tarefa mais básica que a Camada de Apresentação do OSI é confrontada a realizar, é aquela referente as preocupações das diferenças nas maneiras em que os dados são armazenados internamente em várias arquiteturas de computadores. Estranhamente, a presença de um padrão de codificação, como o ASCII não faz muito para resolver este problema de representação de dados interna. E os problemas não se estendem apenas aos caracteres alfanuméricos, mas também para os dados numéricos. Abaixo segue a explicação do porquê.5

Como exemplo de incompatibilidade de representação interna de dados, podemos citar a forma como os microprocessadores da Intel e da Motorola representam seus dados: enquanto que os processadores da Intel (família 8086) representam seus bytes da direita para esquerda, ou seja, de forma invertida, os microprocessadores da Motorola (família 68000) os representam da esquerda para direita. Os PCs baseados em chips Motorola 68000 PCs compartilham muitas características com arquiteturas dos mainframes da IBM. Entre elas estão o fato de que esses computadores são "big endian". Em uma arquitetura big endian, o byte mais significativo da palavra é armazenado com o menor endereço de memória. Isso significa que eles armazenam seus bytes (octetos) formalmente na memória a partir de byte 0 dentro de uma "palavra" (geralmente 32 bits). Assim, a seqüência de caracteres ASCII "ab" (61 62 em hexadecimal) é armazenada internamente como 11000001 11000010 (byte 0, byte 1). Produtos baseados em chips Intel são "little endian". Numa arquitetura little endian, o byte menos significativo da palavra é armazenado com o menor endereço de memória. Assim, a seqüência de caracteres ASCII "ab" (61 62 em hexadecimal) é armazenado internamente como 11000010 11000001 (byte1, byte 0) nessas máquinas.

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

4

Os termos little endian e big endian vêm do livro “As Viagens de Gulliver” de Swift onde os políticos lutam guerras sobre a qual extremidade do ovo deve ser quebrada em primeiro lugar. Nem existe o melhor caminho; eles são apenas diferentes. Inteiros são diferentes também. Alguns computadores com arquiteturas de 32 bits armazenam o inteiro "2" na memória como uma seqüência de 32 bits. Isso ocorre porque o local de armazenamento de memória básico é de 32 bits de comprimento (daí o nome). Outros computadores com arquiteturas de 64 bits armazenam o inteiro na memória como uma seqüência de 64 bits. Mais uma vez, não é melhor nem pior, apenas diferente. Em nenhum dos casos existe um problema com a representação interna de cadeias de caracteres e números. O problema é quando esses dados são enviados através da rede a partir de um tipo de computador para outro. Como deve ser a string "ab" e o número "2" ser representado na rede de modo que eles não cheguem como "ba" ou um "0 " seguido de um "2" ou algo ainda pior? Pelo exposto acima, podemos dizer que a principal tarefa desta camada é codificar dados estruturados de acordo com o formato interno do transmissor a um formato adequado para transmissão dos mesmos e depois decodificá-los de acordo com o exigido no equipamento destino. Essa camada é responsável pela formatação de telas e de arquivos, de modo que o produto final tenha a aparência que o programador deseja. Fica claro que se os dados fossem trasmitidos diretamente haveria uma grande confusão quando da comunicação e interpretação dos dados. Para evitar isso, em algum lugar deve ser feita uma conversão desses dados. Essa conversão poderia ser feita de duas maneiras: cada receptor decodificaria os dados recebidos ou o transmissor e o receptor codificariam os dados para um formato de transmissão e os decodificariam de acordo com sua representação. A primeira solução seria inconveniente, pois o receptor deveria ser capaz de identificar as diferenças entre ele e todos os demais processadores com os quais vai se comunicar para ser capaz de adaptar os dados recebidos a seu formato interno. Já para a segunda solução teríamos um algoritmo bem mais simples: o codificador e o decodificador poderiam se basear em uma estrutura padrão para transmissão e o formato de representação interna dos dados seria irrelevante. É neste ponto que a linguagem ASN.1 mostra sua importância, conforme veremos mais adiante neste artigo. 1.4.2 Compressão de dados A compressão é um método de representação de dados com menos bits pela remoção de redundâncias, compactando deste modo os dados. Como a compressão é tecnicamente uma questão de representação de dados, ela se encaixa na camada de apresentação. A compressão reduz a quantidade de bytes necessários ao

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos

armazenamento (o espaço de disco) dos dados. Ela também reduz a largura de banda necessária para transmitir os dados. Os dados comprimidos devem ser descompactado, ou expandidos antes do uso. Obviamente, os esquemas de compressão e descompressão devem ser compatíveis, e coa partir de uma variedade de fornecedores que precisam interoperar, deve haver normas definidas para tal tarefa. 1.4.3 A criptografia de dados A criptagrafia é tipicamente feita a este nível também, embora possa ser feita na camada de aplicação, de sessão, de transporte, ou na camada de rede; tendo cada uma suas próprias vantagens e desvantagens. Da mesma forma que a compressão é tecnicamente uma função de representação de dados, e, assim, um serviço da camada de apresentação, a tecnicamente uma função de representação de dados, e, portanto, um serviço da camada de de apresentação também. Criptografia é o processo de disfarçar os dados. Aqueles que não conhecem o método (o "truque") não podem decifráaqueles que sabem o truque, podem fazê Com isso, documentos de real importância poderiam ser enviados por computadores sem que fossem lidos por pessoas não autorizadas. Quando é feita uma criptografia dos dados, uma unidade de criptografia é inserida entre as duas máquinas, sendo que primeiramente os dados são codificados de forma a serem entendidos por ambas as máquinas e depois são criptografados de forma que só as duas máquinas vão conseguir interpretar os dados.

Figura 1 Exemplo da Camada de Apresentação Em um exemplo prático, duas empresas intercâmbio eletrônico de dados (EDI) para compartilhar a compra de informações entre seus sistemas de computadores corporativos. Por questões de segurança e

Camada de Apresentação do Modelo OSI

os Reservados. 2014.

espaço de disco) dos dados. Ela também reduz a largura de banda necessária para transmitir os dados. Os dados comprimidos devem ser descompactado, ou expandidos antes do uso. Obviamente, os esquemas de compressão e descompressão devem ser compatíveis, e com softwares e hardwares a partir de uma variedade de fornecedores que precisam interoperar, deve haver normas definidas para tal tarefa.

A criptografia de dados

A criptagrafia é tipicamente feita a este nível também, embora possa ser feita na a de aplicação, de sessão, de transporte, ou na camada de rede; tendo cada

uma suas próprias vantagens e desvantagens.

Da mesma forma que a compressão é tecnicamente uma função de representação de dados, e, assim, um serviço da camada de apresentação, a tecnicamente uma função de representação de dados, e, portanto, um serviço da camada de de apresentação também. Criptografia é o processo de disfarçar os dados. Aqueles que não conhecem o método (o "truque") não podem decifrá

sabem o truque, podem fazê-lo.

documentos de real importância poderiam ser enviados por computadores sem que fossem lidos por pessoas não autorizadas.

Quando é feita uma criptografia dos dados, uma unidade de criptografia é inserida uas máquinas, sendo que primeiramente os dados são codificados de

forma a serem entendidos por ambas as máquinas e depois são criptografados de forma que só as duas máquinas vão conseguir interpretar os dados.

Exemplo da Camada de Apresentação.5

Em um exemplo prático, duas empresas - A e B - implementam um sistema de intercâmbio eletrônico de dados (EDI) para compartilhar a compra de informações entre seus sistemas de computadores corporativos. Por questões de segurança e

5

espaço de disco) dos dados. Ela também reduz a largura de banda necessária para transmitir os dados. Os dados comprimidos devem ser descompactado, ou expandidos antes do uso. Obviamente, os esquemas de

m softwares e hardwares a partir de uma variedade de fornecedores que precisam interoperar, deve haver

A criptagrafia é tipicamente feita a este nível também, embora possa ser feita na a de aplicação, de sessão, de transporte, ou na camada de rede; tendo cada

Da mesma forma que a compressão é tecnicamente uma função de representação de dados, e, assim, um serviço da camada de apresentação, a encriptação é tecnicamente uma função de representação de dados, e, portanto, um serviço da camada de de apresentação também. Criptografia é o processo de disfarçar os dados. Aqueles que não conhecem o método (o "truque") não podem decifrá-lo;

documentos de real importância poderiam ser enviados por computadores

Quando é feita uma criptografia dos dados, uma unidade de criptografia é inserida uas máquinas, sendo que primeiramente os dados são codificados de

forma a serem entendidos por ambas as máquinas e depois são criptografados de forma que só as duas máquinas vão conseguir interpretar os dados.

implementam um sistema de intercâmbio eletrônico de dados (EDI) para compartilhar a compra de informações entre seus sistemas de computadores corporativos. Por questões de segurança e

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

6

privacidade, a Empresa A e a Empresa B desejam criptografar todas as mensagens eletrônicas trocadas entre eles. A tarefa de criptografia reside na camada de apresentação, que é responsável por todas as conversões "geralmente úteis". Esta camada também executa a conversão de códigos e de compressão.5

Em um cenário Internet a exigência de criptografia é muito real. Trocas EDI freqüentemente envolvem a transferência de fundos monetários, bem como a entrada de um pedido. Uma série de protocolos de criptografia foram desenvolvidos para uso em aplicações de Internet. Um que é amplamente utilizado, especialmente em sistemas baseados em PC, é chamado de Pretty Good Privacy (PGP). 1.5 Exemplo de Protocolo Camada de Apresentação O serviço de camada de apresentação pode ser realizado pela linguagem abstrata Abstract Syntax Notation One (ASN.1). Ela resolve o problema de formatos de dados inconsistentes suportados em vários computadores, especificando um formato de dados padrão. Nesse caso, a camada de apresentação presta um serviço de modo geral que é usado por muitos protocolos da camada de aplicação. Embora os serviços de camada de apresentação poderiam ser oferecidos pela camada de aplicação, eles são colocados na camada de apresentação, porque eles são gerais e devem estar disponíveis para todas as aplicações.

Figura 2 Modelo de Protocolo da Camada de Aplicação.6

No mundo real, as PPDUs são mensagens com regras de codificação básicas do ASN.1 (BER), mas poderiam ser primitivas da camada de aplicação mapeadas em primitivas da camada de sessão (“Phantom” PPDUs).6

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

7

1.6 Sintaxe (Linguagem) Abstrata e Sintaxe (Linguagem) de Transferência Na camada de Apresentação o parâmetro dos dados do usuário são informações puras, separadas de qualquer representação. No transmissor, o protocolo da camada de apresentação gera uma string de octetos apropriados (acordados por negociação) para o serviço de sessão levar esta informação durante a transferência, e decodifica em uma string de octetos recebidos para produzir as informações puras no receptor, para que possam ser entregues para a camada de aplicação.10 Este pode ser um conceito difícil de entender, principalmente para aqueles que vêem as camadas como uma arquitetura de implementação. É evidente que é um pouco difícil de passar informações puras divorciadas de representação em uma interface de implementação real, e as pessoas às vezes dizem que "a Camada de Apresentação mapeia uma representação local para uma representação de transferência negociada", porque isso é o que alguma parte de código em algum lugar na implementação estará realmente fazendo. É, no entanto, um modelo impróprio, uma vez que implicaria que os padrões da camada de aplicação especificariam valores em alguma representação local - claramente um absurdo. Representações locais de informação são parte da implementação, e não têm visibilidade no trabalho dos padrões (OSI). Em outras palavras, a sintaxe de transferência fornece bitstrings que de forma inequívoca (mas não necessariamente com exclusividade) representam os valores abstratos (valores de dados de apresentação) na sintaxe abstrata com a qual ele está associado. Onde houver mais de um bitstring na sintaxe de transferência associado com algum valor abstrato particular, então é uma opção da implementação qual usar em qualquer transferência particular. Se uma sintaxe de transferência tem um único bitstring para cada valor abstrato, chamamos isso de uma sintaxe de transferência canônica (A importância de sintaxes de transferência canônicas é discutida mais tarde, mas se refere a questões de segurança.) Falamos sobre o conjunto de valores de dados de apresentação para este protocolo de aplicação como esta coleção de valores, e nós damos um nome a esta coleção. Nós o chamamos de sintaxe abstrata do protocolo. Então projetistas de protocolos na camada de aplicação especificam a sua sintaxe abstrata (de alguma forma - notação formal, Inglês comum, qualquer que seja). Uma sintaxe abstrata, então, é uma coleção de valores de dados de apresentação (às vezes chamada apenas de valores de dados, e às vezes chamada apenas de valores ou valores abstratos) para ser transferida pela camada de apresentação através da operação de algum protocolo específico. Para que a máquina do protocolo de apresentação possa converter esses valores abstratos em bits para a camada de sessão poder transferir, é necessário ter associado a esta sintaxe abstrata (esta coleção de valores de dados de apresentação) um conjunto de bitstrings. Este conjunto de bitstrings é chamado de sintaxe de transferência para esta sintaxe abstrata.

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos

A sintaxe de transferência (conjunto de bitstrings) para uma sintaxe abstrata tem as seguintes propriedades:

• Para cada (apresentação) valor de dados na sintaxe abstrata há umbitstrings na sintaxe de transferência associados a esse valor.

• Cada bitstring na sintaxe de transferência é distinto, e tem um valor precisamente resumo associado a ele.

Em outras palavras, a sintaxe de transferência fornece bitstrings que de finequívoca (mas não necessariamente com exclusividade) representam os valores abstratos (valores de dados de apresentação) na sintaxe abstrata com a qual ele está associado. Onde houver mais de um bitstring na sintaxe de transferência associado com algum valor abstrato particular, então é uma opção implementação qual usar em qualquer transferência particular. Se uma sintaxe de transferência tem um único bitstring para cada valor abstrato, chamamos isso de uma sintaxe de transferência canônica. (A impordiscutida mais tarde, mas se refere a questões de segurança.)

Figura 5 Princípio da camada de Apresentação do OSI. Um contexto da camada de apresentação é definido como uma associação entre uma sintaxe abstrata e uma sintaxe de transferência associada. Em outras palavras, é um conjunto de valores de dados de apresentação (aqueles na sintaxe abstrata) para os quais a sintaxe de transferência foi acordada, e que representa uma instância de uso de uma sintaxe abstrata em alguma conexão da camada de apresentação. Para cumprir os requisitos discutidos acima, nós reconhecemos que qualquer sintaxe abstrata dada pode ter várias instâncias de uso (múltiplos contextos de apresentação, com o mesmo ou com diunidade básica de transferência de dados deve ser a transmissão de um valor dos

Camada de Apresentação do Modelo OSI

os Reservados. 2014.

A sintaxe de transferência (conjunto de bitstrings) para uma sintaxe abstrata tem as

Para cada (apresentação) valor de dados na sintaxe abstrata há umbitstrings na sintaxe de transferência associados a esse valor.Cada bitstring na sintaxe de transferência é distinto, e tem um valor precisamente resumo associado a ele.

Em outras palavras, a sintaxe de transferência fornece bitstrings que de finequívoca (mas não necessariamente com exclusividade) representam os valores abstratos (valores de dados de apresentação) na sintaxe abstrata com a qual ele está associado. Onde houver mais de um bitstring na sintaxe de transferência

gum valor abstrato particular, então é uma opção implementação qual usar em qualquer transferência particular. Se uma sintaxe de transferência tem um único bitstring para cada valor abstrato, chamamos isso de uma sintaxe de transferência canônica. (A importância de sintaxes de transferência canônicas é discutida mais tarde, mas se refere a questões de segurança.)

Figura 5 Princípio da camada de Apresentação do OSI.6

Um contexto da camada de apresentação é definido como uma associação entre sintaxe abstrata e uma sintaxe de transferência associada. Em outras palavras,

é um conjunto de valores de dados de apresentação (aqueles na sintaxe abstrata) para os quais a sintaxe de transferência foi acordada, e que representa uma

ma sintaxe abstrata em alguma conexão da camada de

Para cumprir os requisitos discutidos acima, nós reconhecemos que qualquer sintaxe abstrata dada pode ter várias instâncias de uso (múltiplos contextos de apresentação, com o mesmo ou com diferentes sintaxes de transferência), e que a unidade básica de transferência de dados deve ser a transmissão de um valor dos

8

A sintaxe de transferência (conjunto de bitstrings) para uma sintaxe abstrata tem as

Para cada (apresentação) valor de dados na sintaxe abstrata há uma ou mais bitstrings na sintaxe de transferência associados a esse valor. Cada bitstring na sintaxe de transferência é distinto, e tem um valor

Em outras palavras, a sintaxe de transferência fornece bitstrings que de forma inequívoca (mas não necessariamente com exclusividade) representam os valores abstratos (valores de dados de apresentação) na sintaxe abstrata com a qual ele está associado. Onde houver mais de um bitstring na sintaxe de transferência

gum valor abstrato particular, então é uma opção implementação qual usar em qualquer transferência particular. Se uma sintaxe de transferência tem um único bitstring para cada valor abstrato, chamamos isso de uma sintaxe de

tância de sintaxes de transferência canônicas é

Um contexto da camada de apresentação é definido como uma associação entre sintaxe abstrata e uma sintaxe de transferência associada. Em outras palavras,

é um conjunto de valores de dados de apresentação (aqueles na sintaxe abstrata) para os quais a sintaxe de transferência foi acordada, e que representa uma

ma sintaxe abstrata em alguma conexão da camada de

Para cumprir os requisitos discutidos acima, nós reconhecemos que qualquer sintaxe abstrata dada pode ter várias instâncias de uso (múltiplos contextos de

ferentes sintaxes de transferência), e que a unidade básica de transferência de dados deve ser a transmissão de um valor dos

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

9

dados de apresentação de algum contexto de apresentação identificado. Em qualquer ponto no tempo em uma conexão, um número (potencialmente ilimitado) de contextos de apresentação terá sido acordado para uso (definido), e os valores a partir de qualquer um desses contextos pode ser transferido. Este conjunto de contextos de apresentação é chamado o conjunto de contexto definido (DCS).10 1.6 Introdução ao ASN.1 Ao contrário dos níveis mais abaixos, cuja função é transferir bits de um transmissor para um receptor, de forma confiável e eficiente, o nível de apresentação cuida dos significados desses bits. As mensagens não são compostas de um conjunto de bits agrupados de forma aleatória, mais sim de informação bem estruturada, tal como nomes de pessoas, endereços, saldos bancários e assim por diante. No nível de apresentação é possível definirem-se registros contendo campos para recebimento de informacão estruturada, e então fazer com que o transmissor informe ao receptor que a mensagem é composta por registros em determinados formatos. Isto facilita muito a comunicação entre máquinas com diferentes representações internas.10 A camada de apresentação estabelece um contexto entre as entidades da camada de aplicação, no qual as entidades de camadas mais altas podem usar diferentes sintaxes e semânticas se o serviço de apresentação fornecer um mapeamento entre eles. Se um mapeamento está disponível, unidades de dados de serviços de apresentação (PPDUs) são encapsuladas em unidades de dados de protocolo de sessão, e passado para baixo na pilha. Esta camada fornece independência para a representação de dados (por exemplo, criptografia), traduzindo os formatos dos aplicativos e da rede. A camada de apresentação transforma os dados num formato que o aplicativo aceita. Esta camada formata e criptografa os dados a serem enviados através de uma rede. Às vezes é chamada de camada de sintaxe.9

A estrutura de apresentação original usa as regras básicas de codificação da Abstract Syntax Notation One (ASN.1), com capacidades, tais como a conversão de um arquivo de texto com código EBCDIC para um arquivo com código ASCII, ou serialização de objetos e outras estruturas de dados de e para a linguagem XML.9

"Chamamos sintaxe concreta, a representação, em uma determinada línguagem de programação, das estruturas de dados a serem transferidas. É uma 'sintaxe' porque respeita as regras lexicais e gramaticais de uma linguagem (C por exemplo); é chamada “concreta” porque é realmente manipulada por aplicativos (implementados nesta mesma línguagem) e que está em conformidade com as restrições das arquiteturas de máquinas ".10

“A fim de se libertar da diversidade de sintaxes concretas acima mencionadas, as estruturas de dados a serem transmitidas deverão ser descritas independentemente das linguagens de programação utilizadas. Esta descrição deve também respeitar as regras lexicais e gramaticais de uma determinada língua (ou linguagem), mas deve manter-se independente da linguagens de programação e nunca ser diretamente

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

10

implementada em uma máquina. Por essas razões, chamamos de sintaxe abstrata tal descrição e de Abstract Syntax Notation ou ASN a linguagem em que esta sintaxe abstrata é denotada”.10 Embora independente de linguagens de programação, a notação da sintaxe abstrata deve ser pelo menos tão poderosa quanto qualquer línguagem de formalismo de tipos de dados, isto é, uma notação recursiva que permita construir tipos de dados complexos a partir de tipos básicos (equivalente à string, int, enum ... tipos C, por exemplo) e tipo construtores (equivalente a struct, union ... em C). Devemos salientar a palavra tipo de dados porque uma especicação ASN.1 é apenas uma descrição estática dos dados; ele não pode descrever as operações a ser aplicadas a esses dados. Muitas diferentes mensagens podem ser trocadas entre as aplicações. A sintaxe abstrata deve então descrever de forma mais condensada todo o conjunto dessas mensagens. Por isso, a sintaxe abstrata é denotada por meio de uma gramática que os dados a serem transferidos devem respeitar. Nesse processo deve-se ter em mente os dois níveis de gramáticas: em primeiro lugar, a própria gramática da notação da sintaxe abstrata ‘ASN’; segundo, a própria sintaxe abstrata, a qual é também é uma Gramática e é denotada usando a anterior. A linguagem definida por esta segunda gramática é o conjunto de todos os valores que podem ser transferidos. Esta notação da sintaxe abstrata deve ser formal para evitar todas as ambigüidades quando está sendo interpretada e manipulada por ferramentas computacionais. Traçando um paralelo com a teoria da linguagem, a Notação da sintaxe abstrata pode ser vista como uma BNF (ou Backus-Naur Form) que permite escrever gramáticas específicas, que são chamadas sintaxes abstratas num contexto de transferência de dados. Em poucas palavras, a ASN.1 não é uma sintaxe abstrata mas uma linguagem para descrevê-las. Esta é uma confusão muito comum (embora inofensiva) feitas por usuários ASN.1 Referindo-se agora a um conceito mais geral de 'circulação de fluxos imateriais', que é apenas o componente material de uma parte de informação que está envolvida na comunicação. Não é no sentido do que é transportado, mas a sua representação material que, em essência, é de natureza física. Em outras palavras, a forma é transmitida, mas não o conteúdo. É só quando esta representação chega do lado do receptor que assume seu pleno significado. Pela mesma razão, a sintaxe abstrata denota precisamente a estrutura dos dados, mas não diz nada sobre a semântica associada, ou seja, a interpretação destes dados pela aplicação (assim pelo seu programador): que significado devemos associar com um valor booleano VERDADEIRO? O que eu devo fazer se nenhum valor for atribuído a um campo? Muitas perguntas para permanecerem sem resposta, porque elas não são da competência da transferência de dados, mas são resolvidas quando os dados são usados pela aplicação. No entanto, verifica-se que, a partir de 1994, as classes de informações de objetos podem formalizar fortes ligações semânticas que podem ser muito convenientes para os usuários.

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

11

A parte semântica é descrita, se necessário, por meio de observações dentro da sintaxe abstrata ou usando um texto explicativo associado com ele. Parece ser vantajosa uma transferência de dados, quando ela é independente das arquiteturas de máquinas. Tal como para os dados recebidos na forma de fluxos de bytes ou bits, eles estão de acordo com uma sintaxe chamada sintaxe de transferência para que estes fluxos possam ser devidamente reconhecidos pelas máquinas pares. Naturalmente, esta sintaxe de transferência depende completamente ds sintaxe abstrata, uma vez que estabelece como os dados devem ser transmitidos de acordo com esta sintaxe abstrata. Na verdade, a sintaxe de transferência estrutura e ordena os bytes (the ‘formant’) que são enviados para a outra máquina (este processo às vezes é chamado de “marshalling"). Mas ao contrário da sintaxe abstrata, é uma grandeza física e, por isso, deve ter em conta a ordenação dos bytes, o peso dos bits, etc. Sintaxes de transferências diferentes podem ser associadas com uma única sintaxe abstrata. Isto é particularmente interessante quando o rendimento aumenta e faz com que a codificação mais complexa seja necessária: nesse caso, no entanto, é possível alterar a sintaxe de transferência, sem alterar a sintaxe abstrata.

Figura 4 Linguagem abstrata (ASN1) e linguagens concretas.10

Se agora voltar ao exemplo da figura anterior, nós terminamos com quatro sintaxes: uma sintaxe abstrata, duas sintaxes concretas e uma sintaxe de transferência. As setas estabelecem as ligações que existem entre a sintaxe abstrata e a sintaxe concreta.

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos

A partir de uma única descrição de dados ASN.1, podemos derivar automaticamentecom muitas sintaxes concrprogramação) necessárias, e com muitos de transferência em codificadoresbytes) e decodificadores

Figura 3 Assimetria da linguagem abstrata (ASN1) Portanto, é um compilador ASN.1 que realiza a geração automáticaderivações das sintaxes croncretas em abstratas, poupesforço e, entretanto, tornando possível a intermáquinas). O compilador deve ser implementaddescrevem as ligações entre a sintaxe abstrata epadrões (incluindo a [ISO8822] na definição de servexemplo), por vezes, não distinguem a noção de uma sintaxe de transferência daquele de regras de codificação. Nós podemos igualmente usar um ou o outro, nos próximos capítulos, sempre que permanece ambígua. 1.7 ASN.1 e BER Esta seção é a transcrição do texto da Microsoft que Notation One (ASN.1) e Basic Encoding Rules (BER), e esclarece as diferenças entre os dois.19

Muitos profissionais de tecnologia da informação, incluindo profissionais com bastante experiência, normalmente se confundem sobre o que são ASN.1 e BER, as diferenças entre os dois, ou mesmo sobre o porque da importância da distinção. Essa confusão se torna compreensível quando, mesmo as pessoas que conhecem bem o ASN.1 e BER, usam os t“A ASN.1 (Abstract Syntax Notationvisa especificar de dados utilizados É uma linguagem de computação quemodelar de forma eficiente Como o ASN.1 é a linguagem dos padrões, é muito comum encontrar recomendações de padrão programadas no ASN.1. Profissionais de suporte, consultores e especialistas em tecnologia da informação são beneficiados pelo

Camada de Apresentação do Modelo OSI

os Reservados. 2014.

A partir de uma única descrição de dados ASN.1, podemos derivar automaticamentecom muitas sintaxes concretas (ou seja, num maior número de linguagens de

necessárias, e com muitos procedimentos implementando codificadores (que codificam os dados em um bit ou fluxo de

como nós queremos.

Assimetria da linguagem abstrata (ASN1).10

é um compilador ASN.1 que realiza a geração automáticaderivações das sintaxes croncretas em abstratas, poupando, assim, considerável

e, entretanto, tornando possível a interconexão de qualquer número de

O compilador deve ser implementado com algumas regras de codificação, as ligações entre a sintaxe abstrata e a syntaxe de transferência.

padrões (incluindo a [ISO8822] na definição de serviço de apresentação, por exemplo), por vezes, não distinguem a noção de uma sintaxe de transferência daquele de regras de codificação. Nós podemos igualmente usar um ou o outro, nos próximos capítulos, sempre que permanece ambígua.10

ta seção é a transcrição do texto da Microsoft que descreve o Abstract Syntax Notation One (ASN.1) e Basic Encoding Rules (BER), e esclarece as diferenças

Muitos profissionais de tecnologia da informação, incluindo profissionais com nte experiência, normalmente se confundem sobre o que são ASN.1 e BER, as

diferenças entre os dois, ou mesmo sobre o porque da importância da distinção. Essa confusão se torna compreensível quando, mesmo as pessoas que conhecem bem o ASN.1 e BER, usam os termos de forma incorreta.19

Syntax Notation One) é um padrão internacionaldados utilizados em protocolos de telecomunicações.

de computação que é poderosa e complexa: ela foi projetadade forma eficiente a comunicação entre sistemas heterogêneos"

1 é a linguagem dos padrões, é muito comum encontrar recomendações de padrão programadas no ASN.1. Profissionais de suporte, consultores e especialistas em tecnologia da informação são beneficiados pelo

12

A partir de uma única descrição de dados ASN.1, podemos derivar automaticamente maior número de linguagens de

implementando a sintaxe (que codificam os dados em um bit ou fluxo de

é um compilador ASN.1 que realiza a geração automática para nós das ando, assim, considerável

qualquer número de

com algumas regras de codificação, as quais transferência. Muitos

iço de apresentação, por exemplo), por vezes, não distinguem a noção de uma sintaxe de transferência daquele de regras de codificação. Nós podemos igualmente usar um ou o outro, nos

descreve o Abstract Syntax Notation One (ASN.1) e Basic Encoding Rules (BER), e esclarece as diferenças

Muitos profissionais de tecnologia da informação, incluindo profissionais com nte experiência, normalmente se confundem sobre o que são ASN.1 e BER, as

diferenças entre os dois, ou mesmo sobre o porque da importância da distinção. Essa confusão se torna compreensível quando, mesmo as pessoas que conhecem

é um padrão internacional que de telecomunicações.10

ela foi projetada para sistemas heterogêneos".10

1 é a linguagem dos padrões, é muito comum encontrar recomendações de padrão programadas no ASN.1. Profissionais de suporte, consultores e especialistas em tecnologia da informação são beneficiados pelo

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

13

conhecimento de ASN.1, já que isso lhes permite um aprofundamento nos padrões e a decodificação e compreensão do conteúdo dos dados do problema que estão tentando solucionar. Os padrões mais comuns programados no ASN.1 são aqueles produzidos pela CCITT (International Telegraph and Telephone Consultative Committee) e pela ITU (International Telecommunications Union). No entanto, membros da IETF (Internet Engineering Task Force) estão usando cada vez mais o ASN.1 para expor sutilmente suas recomendações. O ASN.1 expõe em uma página o que ocuparia cinco ou seis páginas para ser programado em outro formato.19

A seguir está uma lista dos padrões comumente usados que são programados no ASN.1:

• X.400 (Mensagens eletrônicas) • X.500 (Serviços de diretório) • X.200 (Comunicações de rede) • Solicitação de comentários (RFCs) 2251-2256 (Lightweight Directory

Access Protocol ou LDAP) • Muitos outros RFCs para mencionar

Qualquer especialista em computação ou em comunicações de dados que realmente deseja se destacar, precisam ter pelo menos um conhecimento básico de ASN.1 e BER. Como o Microsoft Windows 2000 e o Microsoft Exchange 2000 Server implementam os padrões mencionados acima de uma forma ou de outra, ter fluência na leitura e compreensão do ASN.1 e BER facilita a solução dos problemas desses dois produtos.19

1.7.1 ASN.1 Abstract Syntax Notation One (normalmente conhecido como ASN.1) é uma linguagem para definição de padrões sem levar em consideração a implementação. É a linguagem de programadores padrão. Quando John Smith da CalTech quer programar uma recomendação para a padronização dos procedimentos que um componente segue para comunicar-se com outro componente, ele programa a recomendação em notação ASN.1 e envia essa recomendação para um corpo padrão como o ITU. O ASN.1 facilita a comunicação entre profissionais membros do comitê, oferecendo uma linguagem comum para descrição de um padrão. O ASN.1 está definido nas recomendações ITU-T X.209 e X.690. Por exemplo, o ASN.1 define:

• O que é "Tipo". • O que é um "módulo" e qual deve ser sua aparência. • O que é um INTEIRO. • O que é um BOOLEANO. • O que é um "tipo estruturado". • Qual o significado de determinadas palavras-chave (por exemplo,

INÍCIO, FIM, IMPORTAR, EXPORTAR, EXTERNO e assim por diante). • Como colocar um tipo entre "tags" para que possa ser devidamente

codificado.

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

14

O ASN.1 não leva em consideração nenhum padrão específico, método de codificação, linguagem de programação ou plataforma de hardware. É simplesmente uma linguagem para definição de padrões. Em outras palavras, padrões são programados em ASN.1. 1.7.2 BER BER (pronuncia-se "burr") é o nome comum para as Regras de codificação básica do ASN.1. O BER está definido nas recomendações ITU-T X.209 e X.690. BER é um conjunto de regras para codificação de dados do ASN.1 para um fluxo de octetos que pode ser transmitido por um link de comunicações. Entre outros métodos de codificação de dados do ASN.1 estão DER (Distinguished Encoding Rules), CER (Canonical Encoding Rules) e PER (Packing Encoding Rules). Cada método de codificação possui sua própria aplicação, mas o BER é o método de codificação usado com mais frequência e o mais comentado.19

O BER define:

• Métodos para codificação de valores ASN.1. • Regras para decisão de quando usar um determinado método. • O formato de octetos específicos nos dados. •

1.7.3 Contrastando o ASN.1 e o BER O ASN.1 é como uma linguagem de programação (por exemplo C), enquanto o BER é como um compilador para essa linguagem. Compiladores são específicos de plataforma, enquanto muitas linguagens de programação de alto nível não o são. A linguagem C define as regras e idioma para a programação de um programa. Um programa não é C, mas programado em C. O programa não será útil até que seja compilado para uma plataforma específica (como Intel x86). Assim funciona com o ASN.1 e o BER. O ASN.1 é a linguagem para programação de um padrão. Um padrão não é ASN.1, mas programado em ASN.1. Os dados, gerados por um programa compatível com o padrão, podem ser chamados erroneamente de "dados do ASN.1." Os dados ASN.1 não são úteis (ou seja, não podem ser transmitidos por uma LAN) até que os dados ASN.1 sejam codificados em um fluxo de octetos que pode ser facilmente decodificado no destino. Para ilustrar isso, segue um exemplo desses conceitos derivados das recomendações ITU-T X.209, Apêndice I. Essa é uma descrição informal de um registro de dados particular: Nome: John P Smith Data de nascimento: 17 de julho de 1959 (outros dados)

A descrição ASN.1 de um registro particular (o padrão) pode ser: Registro particular::= [APPLICATION 0] IMPLICIT SET { Nome, título [0] VisibleString, Data de nascimento [1] Data, (outros tipos definidos) }

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

15

Nome ::= [APPLICATION 1] IMPLICIT SEQUENCE { Nome determinado VisibleString, Inicial VisibleString, Sobrenome VisibleString }

Essa descrição do ASN.1 demonstra qual a aparência de um registro pessoal. Mas, mais importante que isso, descreve como os dados do aplicativo devem ser formatados para que se tornem dados ASN.1 antes de dar lugar à codificação. Depois disso, o aplicativo mapeia os dados pessoais em uma estrutura de registro pessoal (formato de dados ASN.1), e aplica o BER (Basic Encoding Rules) aos dados ASN.1. Essa é a apArência que deverá ter (com exceção de que os nomes deverão ser convertidos para ASCII): Pessoal Registro Comprimento Conteúdo 60 8185

Nome Comprimento Conteúdo 61 10 String_visível Comprimento Conteúdo 1A 04 "John" String_visível Comprimento Conteúdo 1A 01 "P" String_visível Comprimento Conteúdo 1A 05 "Smith"

Data de nascimento Comprimento Conteúdo A0 0A

Data comprimento Conteúdo 43 08 "19590717"

Quando tudo estiver concluído, o que realmente será transmitido (ou, mais especificamente, o que torna-se a parte dos dados para o pacote na próxima camanda) é: 60 81 85 61 10 1A 04 .... .... 0A 43 08 19 59 07 17 1.8 A XML Um exemplo de funções da camada de apresentação é a representação da estrutura, a qual é normalmente normalizada neste nível, muitas vezes utilizando a linguagem XML. Assim como simples partes dos dados, como strings, as coisas mais complicadas são padronizadas nesta camada.

A XML (eXtensible Markup Language, ou Linguagem de Marcação Estendida) é um subconjunto da SGML (Standard Generalized Markup Language, ou Linguagem de Marcação Padrão Generalizada) que permite que uma marcação específica seja

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

16

criada para especificar idéias e compartilhá-las na rede. Ela tem as virtudes da SGML e da HTML sem qualquer das limitações óbvias.3

Pontos fortes da XML

• Inteligência: a XML é inteligente para qualquer nível de complexidade. A marcação pode ser alterada de uma marcação mais geral como "<CÃO> Lassie </CÃO>" para uma mais detalhista, como "<CÃO> <VENHA_PARA_CASA> <COLLIE> Lassie </COLLIE> </VENHA_PARA_CASA> </CÃO>". As idéias são bem marcadas para que "<VENDO_DOIS> duplo </VENDO_DOIS>" e "<MAIS_LICOR> duplo</MAIS_LICOR>" sejam sempre valores diferentes. A informação conhece a si mesma. Não é necessária mais nenhuma idéia indesejável;

• Adaptação: a XML é a língua-mãe de outras linguagens. Assim, linguagens como DickML e JaneML tornaram-se possíveis. A adaptação é infinita. Marcações personalizadas podem ser criadas para qualquer necessidade. Se uma marcação que descreva como uma pizza pepperoni é diferente de uma pizza calabresa for necessária, ela pode ser feita;

• Manutenção: a XML é fácil de manter. Ela contém somente idéias e marcações.

• Folhas de estilos e links vêm em separado, e não escondidas no documento. Cada um pode ser alterado separadamente quando preciso com fácil acesso e fáceis mudanças. Não é preciso mais se achar em uma bagunça de marcações; Ligação: a XML possui uma maneira de ligar que inclui todas as formas de ligação.Não só isso; ela liga de maneiras que a HTML não pode. A HTML pode fazer de uma maneira simples, onde um objeto se liga a outro. A XML faz isso, mas também pode ligar dois ou mais pontos a uma idéia. Existem ainda links gêmeos que ligam todas as ideías dentro de uma mesma. Qualquer link entre uma idéia pode ser manipulado de uma única maneira;

• Simplicidade: a XML é simples. Um usuário de média experiência que olha a XML pode achá-la difícil de acreditar no que vê. Comparada com a HTML não. Comparada com a SGML é um estudo de simplicidade. A especificação da SGML tem 300 páginas. A da XML, 33. Idéias obscuras e desnecessárias foram retiradas em favor de idéias concisas. A XML vai direto ao ponto;

• Portabilidade: a XML é de fácil portabilidade. A razão da sua existência é força e portabilidade. A SGML tem força. A HTML tem portabilidade. A XML tem ambas. A XML pode ser navegada com ou sem o seu DTD (Document Type Definition, ou Definição de Tipo de Documento - as normas que definem como as tags são estruturas nos documentos XML), tornando o download mais rápido. Tudo que um navegador precisa para ver XML é ter a noção que ela própria e a folha de estilos controlam a aparência. Se uma validação estrita é necessária, o seu DTD pode acompanhá-lo e fornecer detalhes exatos da sua marcação.3

Objetivos do desenvolvimento da XML: Deveria ser claro usar a XML na Internet; A XML deveria suportar uma grande variedade de aplicações;

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

17

A XML deveria ser compatíel com SGML; Deveria ser fácil escrever programas que processem documentos XML; O número de recuros opcionais em XML deveria ser mantido em um mínimo absoluto, idealmente zero; Os documentos XML deveriam ser legíveis pelos seres humanos e razoavelmente claros; O projeto XML deveria ser preparado rapidamente; O projeto XML deveria ser formal e conciso; Os documentos XML deveriam ser fáceis de serem criados; A concisão na marcação em XML é de mínima importância.3 A XML é definida pelas seguintes especificações: 1. Extensible Markup Language (XML) 1.0: define a sintaxe da XML; 2. XML Pointer Language (XPointer) e XML Linking Language (XLink): define um padrão para representar os links entre os recursos. Além dos links simples, como a tag <A> da HTML, a XML possui mecanismos para ligar recursos múltiplos e diferentes. A XPointer descreve como endereçar um recurso e a XLink descreve como associar dois ou mais recursos; A Extensible Style Language (XSL) define a linguagem de folhas de estilos padrão para a XML.3 1.9 Tradutor ASN.1 para XML A Abstract Syntax Notation One (ASN.1) é um framework (estrutura) para representar dados estruturados em árvore. É amplamente utilizada em protocolos de comunicação (por exemplo , SNMP e LDAP), protocolos de segurança (por exemplo, X.509), formatos de dados (por exemplo , PKCS # 7), e assim por diante . A ASN.1 é projetada para a eficiência e os dados são geralmente embalados em limites de byte, e, portanto, não é muito legível e é difícil de manipular. Como os dados ASN.1 são estruutrados, deve ser possível para representar a mesma informação em Extensible Markup Language (XML). A XML não é particularmente eficiente em termos de comprimento de dados, mas é mais legível, e tem muitas ferramentas off-the -shelf grátis (por exemplo , processadores de XML para análise e geração, processadores XSL para renderização, editores XML para autoria e assim por diante). Por tais razões, a tradução entre ASN.1 e XML nos permitirá manipular dados ASN.1 eficientes de uma forma amigável. Existem uma biblioteca Java para tal tradução . Utilizando a biblioteca, a ASN.1 pode ser traduzida em XML e vice-versa. O Projeto da linguagem ASN.1 da ITU-T começou a trabalhar (em conjunto com a ISO) em duas iniciativas relacionadas a XML, que têm objetivos semelhantes, mas nenhuma relação com a nossa tecnologia. Veja sua página oficial para mais detalhes.12

1.10 Camada de Apresentação em redes modernas

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

18

As funções da Camada de Apresentação, em geral, são úteis para a comunicação de dados, mas não são essenciais para o bom funcionamento da rede. A tendência no TCP/IP foi a dispersão das funções da camada de apresentação em outras camadas, principalmente na camada de Aplicação.. No TCP/IP, em muitas aplicações e protocolos amplamente utilizados, não é feita qualquer distinção entre as camadas de apresentação e aplicação. Por exemplo, o HTTP, em geral, considerado como um protocolo da camada de aplicação, possui aspectos da camada de apresentação, tais como a capacidade para identificar as codificações para a conversão adequada, que é depois feito na camada de aplicação.5 Tradução e adaptação de textos referenciados no final deste capítulo por Ademar Felipe Fey em 19/04/2014.

Camada de Apresentação do Modelo OSI

Ademar Felipe Fey. Direitos Reservados. 2014.

19

REFERÊNCIAS BIBLIOGRÁFICAS

1. FEY, Ademar; Gauer, Raul R. Fundamentos de Redes de Computadores. Curso on-line. www.itit.moodlelivre.com. 2009-2013. 2. FEY, Ademar F. Mas afinal o que é o modelo OSI? 2010. Disponível em: <http://ademarfey.wordpress.com/2010/12/25/mas-afinal-o-que-e-o-modelo-osi/>. Acesso em 09/08/2013. 3. CAMADA DE APRESENTAÇÃO. Disponível em: http://www.oocities.org/starwosi/apresent.htm. Acesso em: 14/09/2012 4. INETDAEMON.COM. Presentation Layer. Disponível em: <http://www.inetdaemon.com/tutorials/basic_concepts/network_models/osi_model/transport.shtml>. Acesso em: 17/09/2012. 5. HILL2DOT0. Presentation Layer. Disponível em: <http://www.hill2dot0.com/wiki/index.php?title=Presentation_Layer>. Acesso em: 28/03/2012. 6. UNIVERSITEIT TWENTE. Presentation Layer. 1998. Disponível em: <http://wwwhome.cs.utwente.nl/~widya/AP/sh-col3b.pdf>. Aesso em: 18/04/2014. 7. WIKIPEDIA. Presentation layer. Retirado de. Disponível em: <http://en.wikipedia.org/wiki/Presentation_layer>. Acesso em: 14/09/2012. 8. ENOTES. Presentation Layer. Disponível em: <http://www.enotes.com/topic/OSI_model#Layer_6:_presentationr>. Acesso em: 14/09/2012. 9. Olivier Dubuisson. ASN.1 Communication between Heterogeneous Systems. 2000. http://www.oss.com/asn1/booksintro.html.17/04/2014. 10. PACKETIZER. Chapter 7: The encoding question, Introduction to Presentation Layer concepts. Disponível em: <http://www.packetizer.com/osi/understandingosi/chapter7.html>. Acesso em: 17/04/2014. 11. MICROSOFT. Uma breve introdução ao ASN.1 e ao BER. Disponível em: <http://support.microsoft.com/kb/252648/pt-br>. Acesso em: 14/09/2012. 12. IBM. ASN.1/XML Translator. Disponível em: <http://www.research.ibm.com/trl/projects/xml/xss4j/docs/axt-readme.html>. Acesso em: 18/04/2014