Escolar Documentos
Profissional Documentos
Cultura Documentos
Presentation Layer
Giovane Simamoto Lemes - giovane.lemes@ufu.br
Mateus Honorato de Almeida - mateus.honorato@ufu.br
Rafael Alves de Lima - rafael.alv334@ufu.br
Tiago de Paula Alves - tiago.paula@ufu.br
Yuri Teixeira Mendes - yuri.txm@ufu.br
Sumário
8.1 Presentation Layer Design Issues
8.1.1 Representação de Dados
8.1.2 Compressão de Dados
8.1.3 Segurança e Privacidade de Rede
8.1.4 The OSI Presentatation Service Primitives
8.2 Abstract Syntax Notation (ASN.1)
8.2.1 Data Structures
8.2.2 Abstract Syntax
8.2.3 Transfer Syntax
8.3 Técnicas de Compressão de Dados
8.3.1Codificação de um conjunto finito de símbolos
igualmente prováveis
8.3.2 Codificação dependente de frequência
8.3.3 Codificação dependente de contexto
Ch08 - Camada de Apresentação
Contexto Histórico:
Camada em Busca de Função.
Apenas um Local de Conversão.
Permitir que programas orientados a visualização fossem utilizados
em uma variedade de terminais.
Função: resolver todos os problemas relacionados a representação
de dados transmitidos.
Compreensão entre computadores com diferentes
representações.
Ch08 - Camada de Apresentação / 8.1 Design Issues
Exercício mental:
Suponha que fosse possível copiar dados, de maneira confiável, da
memória de um computador diretamente para a de outro computado. Se
isso fosse possível, o problema da comunicação estaria “resolvido”?
Depende de como se define “problema de comunicação”. Com certeza, uma
cópia perfeita, memória a memória, comunicaria com exatidão os bits e os
bytes de uma máquina para outra.
Mas essa cópia exata de bits e bytes significa que, quando o software que
estiver sendo executado no computador receptor acessar esses dados, ele
verá os mesmos valores que estavam armazenados na memória do
computador remetente?
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
Desenvolvida pelo CCITT (ITU-T), a ASN.1 fornece um meio formal e abstrato para definir tipos de
dados e estruturas.
A camada de aplicação contém muitas aplicações diferentes, cada uma com uma variedade de
estruturas complexas que são transmitidas como APDUs (Application Protocol Data Units). Os
campos dessas APDUs geralmente possuem um tipo (por exemplo, Booleano ou inteiro) e em
muitos casos os campos podem ser omitidos ou ter valores padrão.
A ideia básica é criar tipos de estrutura (ou seja, tipos de dados) necessários para cada aplicativo
em ASN.1 e empacotá-los juntos em um módulo (biblioteca). Quando uma aplicação deseja
transmitir uma estrutura de dados (ou seja, um APDU), ela pode passar a estrutura de dados para
a camada de apresentação, junto com o nome ASN da estrutura de dados. Usando a definição
ASN.1 como guia, a camada de apresentação sabe. quais são os tipos e tamanhos dos campos
solares e, portanto, sabe como codificá-los para transmissão.
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.1 Data Structures
Por outro lado, cada APDU só deve ser convertido uma vez, em vez de duas. No esquema ASN.1,
as conversões são necessárias em ambas as extremidades porque a sintaxe de transferência
ASN.1 especifica que o complemento de dois deve ser usado.
A B
A)O remetente converte os dados para ASN.1 transfere a sintaxe para transmissão e o receptor converte
os dados do ASN.1 para o formato interno.B)Cada recptor converte diretamente para o formato receptor.
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.1 Data Structures
Um problema muito mais complicado tem a ver com a ordem de bytes usada por diferentes
computadores.
Como exemplo desse problema, considere o fragmento simples em linguagem C a seguir.
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.1 Data Structures
Input:
Name: estegossauro
Lengh: 10 metros
Carnivorous: False
Bones: 300
Discovery:1887
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.1 Data Structures
Solução:
1. Alternativa seria o agente enviar os bytes do inteiro na mesma
ordem em que serão armazenados na entidade gerenciadora.
2. Agente enviar o inteiro em sua própria ordem de
armazenamento, deixando à entidade gerenciadora a
responsabilidade de reordenar os bytes quando necessário.
Qualquer uma das alternativas exigiria que o remetente ou o receptor
conhecesse o formato de representação de inteiros do outro.
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.1 Data Structures
Portanto no Jargão ISO o ASN.1 descreve um serviço de apresentação — o serviço de transmitir e traduzir
informações de um formato específico de uma máquina para outro. A Figura ilustra um problema de
apresentação no mundo real; nenhum dos receptores entende a ideia essencial que está sendo comunicada
— que o interlocutor gosta de algo.
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.1 Data Structures
Por fim um serviço de apresentação pode resolver esse problema traduzindo a ideia para uma linguagem
inteligível (pelo serviço de apresentação), independentemente de quem fala, enviando essa informação ao
receptor e, em seguida, traduzindo-a para uma linguagem que o receptor entende.
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.2 Abstract Syntax
Originalmente foi pensado pela ISO que essas definições seriam lidas apenas por
humanos
OCTET
==
Pascal ASN.1 BYTE
Os tipos primitivos em
ASN.1 estão embultidos na
linguagem, e funcionam
como base para tipos mais
complexos.
INTEGER - Números Cardinais utilizados para contagem, sem nenhum valor máximo
especificado. Como efeito, é possível definir nomes que correspondam a valores
específicos, como domingo = 1, segunda = 2, etc.
BIT STRING - São listas ordenadas de bits, contendo 0 ou mais bits, sem quantidade
máxima, sem necessidade de ser um multiplo de 8 ou qualquer outro valor
OCTET STRING - São listas ordenadas de bytes, contendo 0 ou mais bytes, sem
quantidade máxima. Podem ser utilizadas para representar caracteres ou outros
dados orientados a byte
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.2 Abstract Syntax
ANY - Um tipo especial, caso um campo seja desse tipo, pode ser preenchido por
qualquer tipo válido. Essencialmente é a união de todos os tipos.
Os tipos primitivos podem ser combinados para construir tipos mais complexos. A
seguir temos os principais construtores utilizados pela ASN.1 para esse propósito:
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.2 Abstract Syntax
SEQUENCE - Lista ordenada de vários tipos, podendo esses também ser tipos
construídos
Em adição aos tipos primitivos, o padrão ASN.1 discute alguns tipos pré-definidos
que são uteís em diversas aplicações.
Caso não seja necessário enviar o tipo de um valor que utiliza tags, é utilizado a
palavra chave IMPLICIT após a tag.
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.2 Abstract Syntax
Tipos de tags:
PRIVATE - É encorajado que os usuários utilizem essa tag para seus próprios tipos
Embora IMPLICIT possa ser usada como tag em qualquer tipo, é proibido
seu uso nos tipos ANY e CHOICE, pois sem a informação explicita do tipo,
não é possível que o recipiente saiba o tipo do valor sendo enviado
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.3 Transfer Syntax
Tag - 2 bits
00 - UNIVERSAL
01 - APPLICATION
10 - context-specific
11 - PRIVATE
Ch08 - Camada de Apresentação / 8.2 Abstract Syntax Notation (ASN.1)
8.2.3 Transfer Syntax
Os últimos 5 dígitos são utilizados para codificar o valor da tag caso esteja
entre 0 e 30. Caso seja maior é codificada com 11111, indicando que o
valor verdadeiro está no próximo byte ou bytes.
São registrados dois tipos para notar o tempo, por motivos históricos.
Exemplo:
Transmissão diária de todos os títulos solicitados naquela filial
naquele dia, o número da filia deve ser enviado primeiro.
Se cada título tiver 20 caracteres, é necessário 140 bits/título.
Biblioteca mais antiga do mundo tem 2^26 títulos
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.1 Codificação de um Conjunto Finito de Símbolos Igualmente
Prováveis
Exemplo:
Podemos enviar uma lista ordenada, utilizando apenas 26 bits, ao
invés dos 140 bits.
Se o título não estiver na lista previamente combinada, o título
pode ser soletrado.
Cada título é delimitado pelo caractere ASCII ETX (fim de texto).
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.2 Codificação Dependente de Frequência
A abordagem central é encontrar uma representação eficaz para
transmitir informações sobre elementos de um conjunto finito,
onde cada elemento possui uma probabilidade diferente de
ocorrência. Neste método não há perda de dados.
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.2 Codificação Dependente de Frequência
Entropia de Shannon:
D C B A
Construção da árvore:
Encontre os dois nós com menores probabilidades e marque-
os
Adicione um novo nó com a soma de suas probabilidades
0,3
D+C
D C
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.2 Codificação Dependente de Frequência
Construção da árvore:
Encontre os dois nós com menores probabilidades e marque-
os
Adicione um novo nó com a soma de suas probabilidades
D+C B A
Construção da árvore:
Encontre os dois nós com menores probabilidades e marque-
os
Adicione um novo nó com a soma de suas probabilidades
0,6
B 0,3
D+C+B
D C
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.2 Codificação Dependente de Frequência
Construção da árvore:
Encontre os dois nós com menores probabilidades e marque-
os
Adicione um novo nó com a soma de suas probabilidades
A D+C+B
0,4 0,6
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.2 Codificação Dependente de Frequência
Construção da árvore:
Encontre os dois nós com menores probabilidades e marque-
os
Adicione um novo nó com a soma de suas probabilidades
1,0
A 0,6
D+C+B+A
B 0,3
D C
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.2 Codificação Dependente de Frequência
B 0,3
0 1
D C
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.2 Codificação Dependente de Frequência
D C B A
Exemplo:
bdabc - 0,38900
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.2 Codificação Dependente de Frequência
Probabilidade condicional:
Utiliza-se de uma tabela para cada símbolo do conjunto, se for o
alfabeto são 26 símbolos.
Quanto maior a correlação entre entre os símbolos, maior é a
economia.
A desvantagem é que precisa é necessário grandes número de
tabelas.
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.3 Codificação Dependente de Contexto
Probabilidade condicional:
Uma melhoria que pode ser feita é utilizar uma variação do
código de Baudot, que utilize-se de 5 bits (32 símbolos) e um
sistema de “shifts”.
Na variação utilizará de minúsculas, maiúsculas, números +
especiais e controle, 4 códigos são para mudança e 28 códigos
para símbolos (104 símbolos distintos).
Para mudança de conjuntos de símbolos, é necessário símbolos
especiais.
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.3 Codificação Dependente de Contexto
Probabilidade condicional:
A suposição básica por trás desse modelo é que o símbolo
seguinte a uma letra minúscula provavelmente será outra letra
minúscula (ou espaço ou nova linha), e que o símbolo seguinte a
um número provavelmente será outro número.
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.3 Codificação Dependente de Contexto
Probabilidade condicional:
Uma vantagem do código de Baudot são de tamanho fixo,
enquanto códigos como o de Huffman tem tamanhos variáveis.
O código de Baudot também é mais resiliente a erros de
transmissão.
Mas não gera tanta grande compressão dos dados.
Ch08 - Camada de Apresentação / 8.3 Técnicas de Compressão de Dados
8.3.3 Codificação Dependente de Contexto