Modelo OSI
Quando enviamos dados em uma rede, uma série de transformações, codificações e ações são necessárias para que os dados viajem de um dispositivo para outro. O modelo OSI (Open Systems Interconnection) permite dividir esse processo complexo em etapas lógicas, chamadas de camadas, cada uma com um papel específico.
Vantagens do modelo OSI
- Facilita o design e a compreensão de redes.
- Permite a interoperabilidade entre diferentes fabricantes.
- Organiza os protocolos e responsabilidades.
Visão geral das 7 camadas
Fonte: Wikipedia
Detalhe camada por camada
Camada 1 – Física (Physical Layer)
Papel:
Transmite os bits brutos (0 e 1) em um meio físico: cabo, fibra óptica, ondas de rádio…
Funções:
- Definição dos sinais elétricos, ópticos ou de rádio.
- Sincronização dos bits.
- Conectores e cabeamento.
Exemplos:
- Cabo Ethernet (RJ45)
- Fibra óptica
- Wi-Fi (no nível da modulação)
- Bluetooth
O que um programador vê? Quase nada. Esta camada é totalmente gerenciada pelo hardware.
Camada 2 – Enlace de Dados (Data Link Layer)
Papel:
Permite a comunicação local entre duas máquinas conectadas à mesma rede física.
Funções:
- Divide os dados em quadros (frames em inglês).
- Atribuição e verificação do endereço MAC (Media Access Control, único para cada dispositivo).
- Detecção de erros.
Exemplos de protocolos:
- Ethernet
- Wi-Fi (IEEE 802.11)
Endereço MAC:
- Único por placa de rede (ex:
00:1A:2B:3C:4D:5E) - Gravado fisicamente no hardware
Dispositivos:
- Switch
- Placa de rede (NIC)
O que um programador vê? Endereço MAC, quadros (frames), configuração de rede local, às vezes manipulação de pacotes no nível Ethernet (ex: Wireshark, Scapy).
Camada 3 – Rede (Network Layer)
Papel:
Garante o roteamento de pacotes de uma rede para outra (interconexão de redes).
Funções:
- Atribuição de endereços IP (Internet Protocol).
- Roteamento entre sub-redes.
- Fragmentação de pacotes.
Exemplos de protocolos:
- IP (Internet Protocol)
- ICMP (usado pelo
ping) - ARP (tradução IP ↔ MAC)
Dispositivos:
- Roteadores
O que um programador vê? Endereço IP, sub-rede, ping, comunicação via sockets (IP/porta).
Camada 4 – Transporte (Transport Layer)
Papel:
Garante o transporte confiável ou não dos dados entre duas máquinas.
Funções:
- Segmentação e remontagem.
- Controle de erros.
- Controle de fluxo.
Principais protocolos:
- TCP (Transmission Control Protocol)
- Confiável, com confirmação de recebimento.
- Ex: HTTP, FTP, SSH
- UDP (User Datagram Protocol)
- Não confiável, rápido.
- Ex: DNS, jogos online, VoIP
Portas:
- Identificam as aplicações em uma máquina (ex: porta 80 para HTTP)
O que um programador vê? Manipulação de sockets TCP/UDP, gestão de portas, controle de erros de conexão, timeouts, retransmissões, escolha entre confiabilidade (TCP) e rapidez (UDP).
Exemplos:
- Em Python:
socket(AF_INET, SOCK_STREAM)(TCP) curl http://...→ usa TCP porta 80
Camada 5 – Sessão (Session Layer)
Papel:
Gerencia as sessões de comunicação entre duas máquinas. Uma sessão é um
vínculo lógico entre duas aplicações.
Funções:
- Abertura, gestão e encerramento de sessão.
- Restauração após interrupção.
Exemplos de protocolos:
- NetBIOS
- RPC (Remote Procedure Call)
Observações:
- Pouco visível como tal em aplicações modernas (geralmente combinada com a camada de transporte).
Camada 6 – Apresentação (Presentation Layer)
Papel:
Garante a tradução, compressão e criptografia dos dados.
Funções:
- Conversão de formatos (ex: texto puro ↔ binário).
- Codificação: ASCII, UTF-8, JPEG
- Criptografia SSL/TLS.
Exemplos concretos:
- HTTPS = HTTP + TLS (camada de apresentação)
- OpenSSL, GnuTLS
O que um programador vê? A camada de apresentação pode ser manipulada
por meio de bibliotecas como ssl em Python.
Camada 7 – Aplicação
Papel:
Fornece serviços de rede para aplicações do usuário.
Protocolos:
- HTTP / HTTPS
- FTP
- SMTP / IMAP / POP3
- DNS
Exemplos de aplicações:
- Navegadores web
- Clientes de e-mail
- Clientes FTP
- Clientes DNS
O que um programador vê? Você usa a camada 7 todos os dias:
fetch(), requests.get(), socket, etc.
Resumo das camadas
| N° | Camada | Função principal | Exemplos de protocolos/dispositivos |
|---|---|---|---|
| 7 | Aplicação | Interface de usuário de rede | HTTP, FTP, DNS |
| 6 | Apresentação | Tradução, criptografia, compressão | SSL/TLS, ASCII, JPEG |
| 5 | Sessão | Gerenciamento de sessões/conexões | NetBIOS, RPC |
| 4 | Transporte | Transporte confiável, segmentação | TCP, UDP |
| 3 | Rede | Roteamento e endereçamento lógico | IP, ICMP |
| 2 | Enlace | Comunicação local, endereço MAC | Ethernet, Wi-Fi (802.11), PPP |
| 1 | Física | Transmissão de bits no meio físico | RJ45, Fibra, Sinal de rádio |
Exemplo de percurso de uma mensagem
Imagine que você envia uma mensagem HTTP para um servidor remoto:
- Aplicação (HTTP) → o navegador prepara a requisição.
- Apresentação (TLS) → a requisição é criptografada.
- Sessão → uma sessão segura é aberta.
- Transporte (TCP) → a requisição é dividida em segmentos.
- Rede (IP) → os segmentos são encapsulados em pacotes IP.
- Enlace (Ethernet) → os pacotes são colocados em quadros.
- Física (Cabo) → os quadros são convertidos em sinais elétricos.
O servidor recebe na ordem inversa: Física → Enlace → Rede … até Aplicação.
Para programadores
- A camada Aplicação corresponde às suas chamadas HTTP/HTTPS.
- A camada Transporte (TCP/UDP) explica problemas de latência, timeout, perda de pacotes.
- A camada Rede ajuda a entender o endereçamento IP, a conexão entre clientes/servidores.
- As camadas Enlace e Física são úteis para diagnosticar problemas de rede local.