02 - Arquitetura e Processos
video: https://youtu.be/... no frontmatter da nota.Arquitetura e Processos da Camada de Apresentação
1. Arquitetura Lógica
A camada de Apresentação (OSI 6) é estruturada em torno de três subsistemas que cooperam para entregar dados de forma interpretável ao peer remoto:
- Subcamada de Tradução de Sintaxe — converte entre sintaxe local e sintaxe de transferência.
- Subcamada de Negociação de Contexto — combina sintaxe abstrata + sintaxe de transferência em contextos de apresentação.
- Subcamada de Serviços Auxiliares — compressão e criptografia aplicadas como transformações adicionais.
Essas subcamadas não existem como processos separados em código real; são uma decomposição lógica que ajuda a entender o fluxo interno da camada.
2. O Modelo de Três Sintaxes
A arquitetura OSI define três níveis de sintaxe que coexistem na camada 6:
| Tipo de Sintaxe | Função | Exemplo |
|---|---|---|
| Sintaxe Local | Como o dado é armazenado na memória do host | int32 little-endian em x86 |
| Sintaxe Abstrata | Descrição lógica, independente de plataforma | Definição ASN.1 em X.680 |
| Sintaxe de Transferência | Codificação concreta para transmissão | ASN.1 BER/DER/PER, XDR, JSON |
O fluxo é sempre Local → Abstrata → Transferência na transmissão, e o inverso na recepção.
3. Processo de Transmissão (Origem)
Quando a camada de aplicação chama P-DATA.request para enviar dados:
- A camada 6 recebe o SDU (Service Data Unit) com sua sintaxe local.
- Identifica o contexto de apresentação ativo para aquele fluxo.
- Aplica a codificação da sintaxe de transferência correspondente (ex.: DER).
- Opcionalmente comprime o resultado (ex.: gzip).
- Opcionalmente cifra (ex.: AES-GCM via TLS).
- Entrega o PDU resultante à camada de sessão como
P-DATA.request.
[App] Dados locais (struct C, little-endian)
|
v [Tradução de sintaxe] -> DER bytes
v [Compressão] -> DER + gzip
v [Criptografia] -> DER + gzip + AES-GCM
|
v [Sessão] P-DATA.request
4. Processo de Recepção (Destino)
Na recepção, P-DATA.indication chega da camada 5 e é processado em ordem inversa:
- Decifra o payload (se criptografado).
- Descomprime (se comprimido).
- Decodifica a sintaxe de transferência → reconstrói a estrutura abstrata.
- Converte para a sintaxe local do receptor.
- Entrega à camada de aplicação via
P-DATA.indication.
5. Contextos de Apresentação
Um Contexto de Apresentação é a associação (identifier, abstract_syntax, transfer_syntax). Cada conexão de apresentação pode ter múltiplos contextos ativos, identificados por um Presentation Context Identifier (PCRI) — tipicamente um inteiro pequeno (0, 1, 2...).
Negociação típica (simplificada do protocolo X.226):
Originador Receptor
| |
| CP (Connect Presentation) |
| - context list: [{asn1-snmpv2, BER}] |
| - context list: [{asn1-x509, DER}] |
| -------------------------------------> |
| |
| CPA (Connect Presentation Accept) |
| - accepted: [0 -> BER, 1 -> DER] |
| <------------------------------------- |
| |
| P-DATA: PCRI=0, payload |
| -------------------------------------> |
6. Regras de Codificação ASN.1 em Detalhe
BER (Basic Encoding Rules)
Cada valor é codificado como TLV (Tag, Length, Value):
[Tag][Length][Value]
| | |
| | +-- Conteúdo propriamente dito
| +--------- Quantidade de bytes no Value
+---------------- Classe + tipo do dado (UNIVERSAL INTEGER, etc.)
Exemplo: o inteiro 255 em BER é codificado como 02 02 00 FF (tag 02 = INTEGER, length 02 = 2 bytes, value 00FF).
DER (Distinguished Encoding Rules)
Subconjunto restritivo de BER para garantir unicidade. Toda escolha ambígua em BER é fixada: por exemplo, comprimento deve usar a forma mais curta possível. É o que torna possível assinar digitalmente um certificado X.509 — se houvesse múltiplas codificações válidas, a assinatura poderia falhar.
PER (Packed Encoding Rules)
Não usa TLV. Aproveita o conhecimento da sintaxe abstrata para eliminar metadados redundantes. Por exemplo, um campo BOOLEAN é codificado em 1 bit (não 1 byte). Um INTEGER entre 0 e 255 ocupa exatamente 1 byte. Resultado: mensagens até 90% menores que BER.
EXER (XML Encoding Rules)
Codifica ASN.1 como XML — usado para interoperar com sistemas web legados.
7. XDR (External Data Representation)
Alternativa a ASN.1 desenvolvida pela Sun Microsystems para RPC/NFS. Mais simples que ASN.1:
- Sempre big-endian (network byte order).
- Inteiros de 4 bytes, floats IEEE 754.
- Strings terminadas em
null, alinhadas em múltiplos de 4 bytes. - Tipos compostos:
enum,struct,union,array,optional.
Vantagem: trivial de decodificar. Desvantagem: menos compacto que PER, mais rígido que JSON.
8. Estado da Conexão de Apresentação
A camada 6 é stateful. Mantém:
- Contextos de apresentação ativos (PCRI → sintaxe).
- Estado de compressão (janela deslizante para LZW/DEFLATE).
- Estado de criptografia (números de sequência, IVs, chaves de sessão).
- Buffers para reordenação (se criptografia exigir ordem estrita).
9. Serviços Oferecidos à Camada de Sessão
| Primitiva | Função |
|---|---|
P-CONNECT.request/indication |
Estabelecer conexão de apresentação |
P-CONNECT.response/confirm |
Aceitar/recusar conexão |
P-DATA.request/indication |
Transferir dados |
P-TOKEN-GIVE |
Repassar token (controle de fluxo) |
P-SYNC-MAJOR |
Sincronização (checkpoint) |
P-RELEASE.request |
Encerrar conexão |
P-U-ABORT |
Abortar (sem handshake) |
10. Integração com TLS
Em TLS, a "negociação de contexto" vira o ClientHello/ServerHello, a criptografia ocupa o Record Protocol, e a "sintaxe de transferência" é basicamente TLV sobre os records. Embora TLS não seja formalmente a camada 6 OSI, cumpre exatamente as funções descritas neste documento.
11. Conclusão
A arquitetura da camada de Apresentação organiza a tradução de dados em três eixos: sintaxe local, sintaxe abstrata e sintaxe de transferência, conectados por contextos negociados. As regras de codificação ASN.1 (BER, DER, PER) implementam concretamente esse modelo. Na internet moderna, esses processos continuam vivos — não como camada isolada, mas embutidos em TLS, JSON, Protobuf e em cada biblioteca de serialização que um desenvolvedor utiliza.