Camada Zero · 17 · Modelo TCP/IP por Camadas

Quando você manda um "GET /", esse dado desce 4 camadas e cada uma embrulha com o próprio header antes de ir pro fio. Roda o encapsulamento aqui embaixo e olha o overhead: pra um pedacinho de dado, os headers somam mais bytes que o conteúdo.
Origem ↓ encapsulando
0Payload (dado)
0Overhead (headers)
0Total no fio
% de overhead
Clica em "Enviar mensagem" pra ver o dado descer as camadas, viajar, e subir desencapsulando do outro lado.
Aplicação (HTTP) Transporte (TCP) Rede (IP) Enlace (Ethernet)
Cada camada só conversa com a camada equivalente do outro lado e só liga pro próprio header. O TCP não sabe se vai por WiFi ou fibra; o IP não sabe se é HTTP ou e-mail. Esse desacoplamento é o que deixou a internet evoluir em pedaços (dá pra trocar o enlace sem mexer no transporte).
CamadaProtocoloResponsabilidade
AplicaçãoHTTP, DNSO significado do dado
TransporteTCP, UDPPortas + confiabilidade (ordem, acks)
RedeIPEndereço + roteamento entre redes
EnlaceEthernet, WiFiO salto físico, MAC a MAC

Em Go, as camadas ficam escondidas

// Você escreve no topo (Aplicação).
// O SO cuida de TCP, IP e Ethernet por baixo.
conn, _ := net.Dial("tcp", "exemplo.com:80")
//                  ^transporte  ^rede(DNS+IP) ^porta
conn.Write([]byte("GET / HTTP/1.1\r\n\r\n"))
// 1 Write seu vira 1 segmento TCP + 1 pacote IP + 1 frame.

O que cada protocolo carrega no header

// TCP:  portas origem/destino, seq, ack, flags
// IP:   IP origem/destino, TTL, protocolo
// Eth:  MAC origem/destino, + checksum no trailer

🧠 Desafio — TCP/IP

Roda o encapsulamento aqui de cima antes de responder. As duas últimas são de reflexão: escreve a sua e só então revela o modelo.