Visão geral
A internet é uma rede global de redes — uma teia de computadores, roteadores e data centers interconectados que se comunicam por meio de um conjunto comum de protocolos padronizados. Nenhuma organização é dona da internet; ela é uma colaboração entre provedores de acesso (ISPs), governos, universidades e empresas, que concordam em seguir as mesmas regras para que suas redes possam interoperar.
Os dados trafegam pela internet como pacotes — pequenos pedaços de tamanho fixo. Um arquivo ou uma página web é dividido em muitos pacotes, e cada um é roteado de forma independente pela rede e remontado no destino. Esse modelo de comutação de pacotes é resiliente: se uma rota estiver congestionada ou interrompida, os pacotes encontram um caminho alternativo.
Pilha de protocolos TCP/IP
A internet é construída sobre uma arquitetura em camadas. Cada camada resolve um problema específico e depende da camada abaixo dela. O modelo TCP/IP tem quatro camadas:
| Camada | Protocolos | Responsabilidade |
|---|---|---|
| Aplicação | HTTP, HTTPS, DNS, SMTP, SSH | Define como as aplicações trocam dados |
| Transporte | TCP, UDP | Entrega dados entre processos em dois hosts (portas) |
| Internet | IP (IPv4, IPv6), ICMP | Roteia pacotes da origem ao destino através das redes |
| Enlace | Ethernet, Wi-Fi, ARP | Move quadros (frames) entre dispositivos da mesma rede local |
flowchart TB
subgraph client [Cliente]
direction TB
ca[Aplicação\nHTTP GET /]
ct[Transporte\nsegmento TCP]
ci[Internet\npacote IP]
cl[Enlace\nquadro Ethernet]
ca --> ct --> ci --> cl
end
subgraph server [Servidor]
direction BT
sa[Aplicação\nHTTP 200 OK]
st[Transporte\nsegmento TCP]
si[Internet\npacote IP]
sl[Enlace\nquadro Ethernet]
sl --> si --> st --> sa
end
cl -->|"meio físico\n(cabo / Wi-Fi / fibra)"| sl Quando você abre https://example.com, o navegador entrega uma requisição HTTP à camada de Aplicação; o TCP a envolve em um segmento com as portas de origem e de destino; o IP envolve isso em um pacote com os endereços IP de origem e de destino; e a Ethernet monta o quadro para a rede local. Cada roteador no caminho remove e recoloca o quadro da camada de Enlace, usando a camada de Internet para decidir o próximo salto (hop).
Endereços IP
Cada dispositivo em uma rede é identificado por um endereço IP — um número que diz aos roteadores para onde entregar os pacotes. Os endereços IP têm duas partes: um prefixo de rede (identifica a rede) e um identificador de host (identifica o dispositivo específico dentro dessa rede).
IPv4
O IPv4 usa endereços de 32 bits, escritos em notação decimal com pontos — quatro octetos separados por pontos:
A notação CIDR (Classless Inter-Domain Routing) acrescenta o tamanho do prefixo para expressar uma faixa: 192.168.1.0/24 significa que os primeiros 24 bits identificam a rede, sobrando 8 bits para os hosts — 256 endereços (de 192.168.1.0 a 192.168.1.255).
O IPv4 oferece 2³² ≈ 4,3 bilhões de endereços únicos. Isso parecia enorme em 1981 — não era. O crescimento explosivo da internet, dos smartphones, dos dispositivos IoT e dos servidores em nuvem esgotou o estoque global de IPv4. Os registros regionais distribuíram seus últimos blocos não alocados entre 2011 e 20197.
IPv6
O IPv6 usa endereços de 128 bits, escritos em oito grupos de quatro dígitos hexadecimais:
Grupos consecutivos de zeros podem ser comprimidos: 2001:db8:85a3::8a2e:370:7334.
O IPv6 oferece 2¹²⁸ ≈ 3,4 × 10³⁸ endereços — o suficiente para que cada grão de areia da Terra tenha o seu próprio endereço. Mesmo assim, o IPv4 continua dominante, porque a transição exige atualizar cada dispositivo de rede, sistema operacional e aplicação.
| IPv4 | IPv6 | |
|---|---|---|
| Tamanho do endereço | 32 bits | 128 bits |
| Notação | Decimal com pontos (192.168.1.1) | Grupos hexadecimais (2001:db8::1) |
| Espaço de endereços | ~4,3 bilhões | ~3,4 × 10³⁸ |
| Exige NAT? | Sim — o esgotamento de endereços obriga | Não — cada dispositivo pode ter um endereço unicast global |
| Adoção | ~70% do tráfego | ~40% e crescendo |
DNS — Domain Name System
Humanos lembram de nomes; computadores roteiam pacotes usando endereços IP. O DNS é o banco de dados distribuído que traduz nomes de domínio em endereços IP8.
sequenceDiagram
participant B as Navegador
participant R as Resolvedor recursivo\n(ISP / 8.8.8.8)
participant Rt as Servidor raiz
participant T as Servidor TLD\n(.com)
participant A as NS autoritativo\n(example.com)
B->>R: Qual é o IP de example.com?
R->>Rt: Quem responde por .com?
Rt-->>R: Endereço do NS do TLD
R->>T: Quem responde por example.com?
T-->>R: Endereço do NS autoritativo
R->>A: Qual é o IP de example.com?
A-->>R: 93.184.216.34 (TTL: 3600s)
R-->>B: 93.184.216.34 (em cache pelo TTL) O resolvedor guarda a resposta em cache pelo tempo do TTL (Time to Live), de modo que a maioria das consultas é resolvida em milissegundos a partir do cache.
Tipos comuns de registro DNS
| Registro | Finalidade | Exemplo |
|---|---|---|
| A | Mapeia um nome para um endereço IPv4 | example.com → 93.184.216.34 |
| AAAA | Mapeia um nome para um endereço IPv6 | example.com → 2606:2800:220:1::93 |
| CNAME | Apelido (alias) que aponta para outro nome | www.example.com → example.com |
| MX | Servidor de e-mail de um domínio | example.com → mail.example.com |
| TXT | Texto livre (SPF, DKIM, verificação de propriedade) | "v=spf1 include:_spf.google.com ~all" |
Portas
Um endereço IP identifica um host; uma porta identifica um processo específico nesse host. Juntos, IP:porta (o chamado endereço de socket) identificam de forma única um ponto de comunicação (endpoint) na rede.
As portas são números de 16 bits (0–65535), divididos em três faixas:
| Faixa | Nome | Uso |
|---|---|---|
| 0–1023 | Portas bem conhecidas (well-known) | Reservadas para serviços padrão; exigem root para fazer o bind |
| 1024–49151 | Portas registradas | Registradas na IANA para aplicações comuns |
| 49152–65535 | Portas efêmeras | Atribuídas dinamicamente a clientes para conexões de saída |
Portas bem conhecidas
| Porta | Protocolo | Serviço |
|---|---|---|
| 22 | TCP | SSH (shell seguro) |
| 25 | TCP | SMTP (envio de e-mail) |
| 53 | TCP/UDP | DNS |
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS |
| 3306 | TCP | MySQL |
| 5432 | TCP | PostgreSQL |
| 6379 | TCP | Redis |
| 8080 | TCP | HTTP (servidores de desenvolvimento, HTTP alternativo) |
| 9090 | TCP | Prometheus |
| 3000 | TCP | Grafana / desenvolvimento Node.js |
Quando um navegador se conecta a https://example.com, ele se conecta a 93.184.216.34:443. O sistema operacional atribui uma porta efêmera (por exemplo, 52413) do lado do cliente, de modo que a conexão completa é client_ip:52413 ↔ 93.184.216.34:443.
Protocolos de transporte
A camada de Transporte oferece dois modelos de entrega fundamentalmente diferentes:
O TCP estabelece uma conexão antes de trocar dados e garante que:
- Cada byte seja entregue exatamente uma vez, em ordem
- Pacotes perdidos sejam retransmitidos automaticamente
- O remetente desacelere se o destinatário estiver sobrecarregado (controle de fluxo)
O estabelecimento da conexão usa um three-way handshake (aperto de mão em três etapas):
sequenceDiagram
participant C as Cliente
participant S as Servidor
C->>S: SYN (número de sequência = x)
S-->>C: SYN-ACK (sequência = y, ack = x+1)
C->>S: ACK (ack = y+1)
Note over C,S: Conexão estabelecida — começa a transferência de dados Use quando: a correção importa mais do que a velocidade — HTTP, HTTPS, conexões com bancos de dados, SSH.
O UDP envia datagramas sem estabelecer conexão, sem garantia de entrega e sem ordenação.
- Sem handshake — menor latência
- Sem retransmissão — se um pacote se perde, ele se foi
- A aplicação precisa cuidar da ordenação e da confiabilidade, se necessário
Use quando: a velocidade importa mais do que a completude — consultas DNS, streaming de vídeo, jogos online, VoIP.
| TCP | UDP | |
|---|---|---|
| Conexão | Obrigatória (3-way handshake) | Nenhuma |
| Garantia de entrega | Sim — retransmite pacotes perdidos | Não |
| Ordenação | Sim — os bytes chegam em sequência | Não |
| Velocidade | Mais lento (custo da confiabilidade) | Mais rápido |
| Casos de uso | HTTP, HTTPS, SSH, bancos de dados | DNS, vídeo, VoIP, jogos |
Redes públicas
Um endereço IP público é um endereço globalmente único, atribuído por um Registro Regional de Internet (RIR) e roteável na internet. Qualquer servidor que você queira acessar a partir da internet pública precisa ter um IP público — ou ser alcançável por meio de um, via NAT.
Os pacotes atravessam a internet saltando entre roteadores. Cada roteador conhece apenas o próximo salto em direção ao destino — um mapa parcial guardado em uma tabela de roteamento. O BGP (Border Gateway Protocol) é o protocolo de roteamento entre domínios que permite aos ISPs trocar esses mapas e, coletivamente, saber como alcançar cada bloco de endereços públicos da internet9.
flowchart LR
client["Cliente\n203.0.113.5"]
r1["Roteador do ISP\nBrasil"]
r2["Roteador\nde backbone"]
r3["Roteador do ISP\nEUA"]
server["Servidor\n93.184.216.34\nexample.com"]
client -->|"salto 1"| r1
r1 -->|"salto 2"| r2
r2 -->|"salto 3"| r3
r3 -->|"salto 4"| server Cada salto leva de 1 a 30 ms, dependendo da distância física e do congestionamento. Uma ida e volta transatlântica normalmente acrescenta de 80 a 120 ms de latência só pela velocidade da luz na fibra.
Redes privadas
Uma rede privada é uma rede que não é diretamente alcançável a partir da internet pública. Os dispositivos dentro dela se comunicam livremente entre si, mas hosts externos não conseguem iniciar conexões com endereços privados.
Faixas privadas da RFC 1918
Três faixas de endereços IPv4 são reservadas permanentemente para uso privado2. Nunca há roteamento na internet pública para elas:
| Faixa (CIDR) | Endereços | Uso típico |
|---|---|---|
10.0.0.0/8 | ~16,7 milhões | Grandes redes corporativas, VPCs na nuvem (AWS, GCP) |
172.16.0.0/12 | ~1 milhão | Redes de porte médio, bridge padrão do Docker (172.17.0.0/16) |
192.168.0.0/16 | 65.536 | Roteadores domésticos, redes de pequenos escritórios |
NAT — Network Address Translation
O NAT permite que uma rede privada inteira compartilhe um único endereço IP público. O dispositivo de NAT (roteador ou firewall) mantém uma tabela de tradução que mapeia cada conexão de saída para uma porta pública efêmera.
sequenceDiagram
participant D as Dispositivo\n192.168.1.10:52413
participant N as Roteador NAT\nPúblico: 203.0.113.1
participant S as Servidor\n93.184.216.34:443
D->>N: src=192.168.1.10:52413\ndst=93.184.216.34:443
Note over N: Registra o mapeamento:\n192.168.1.10:52413 ↔ 203.0.113.1:61000
N->>S: src=203.0.113.1:61000\ndst=93.184.216.34:443
S-->>N: src=93.184.216.34:443\ndst=203.0.113.1:61000
Note over N: Consulta a tabela:\n61000 → 192.168.1.10:52413
N-->>D: src=93.184.216.34:443\ndst=192.168.1.10:52413 O servidor nunca vê o endereço privado do dispositivo — ele só vê o IP público do roteador. O roteador controla qual dispositivo interno é dono de cada conexão de saída mapeando a porta efêmera.
Redes privadas no Docker
O Docker usa o modelo de rede privada para isolar containers. Cada projeto do Compose ganha a sua própria rede virtual — uma sub-rede definida por software, normalmente na faixa 172.x.x.x.
flowchart LR
subgraph host ["Host Docker — 203.0.113.1 público"]
subgraph net ["Rede Docker 172.20.0.0/16"]
nginx["nginx\n172.20.0.2:80"]
gateway["gateway\n172.20.0.3:8080"]
db["postgres\n172.20.0.4:5432"]
nginx --> gateway
gateway --> db
end
end
internet[Internet] -->|"porta 80\npublicada"| nginx
internet -.-x|"sem acesso direto"| gateway
internet -.-x|"sem acesso direto"| db Somente o nginx tem um mapeamento ports: no compose.yaml e é alcançável de fora do host. O gateway e o db ficam dentro da rede privada do Docker — eles se comunicam entre si pelo nome do serviço, mas são invisíveis para a internet.
Endereços especiais
Loopback
127.0.0.0/8 — pacotes enviados para essa faixa nunca saem do host. 127.0.0.1 (localhost) é o endereço convencional para testar servidores locais. O sistema operacional resolve o tráfego de loopback dentro do kernel, sem nunca tocar no hardware de rede.
Link-local (APIPA)
169.254.0.0/16 — atribuído automaticamente quando um dispositivo não consegue alcançar um servidor DHCP. Esses endereços só funcionam para a comunicação direta entre dois dispositivos no mesmo enlace físico. Ver 169.254.x.x em uma máquina quase sempre significa que o DHCP falhou.
Endereços IPv4 reservados 4
Endereços IPv4 reservados em geral
| Bloco de endereços (CIDR) | Faixa de endereços | Endereços | Escopo | Descrição |
|---|---|---|---|---|
0.0.0.0/8 | 0.0.0.0 – 0.255.255.255 | 16.777.216 | Software | Rede atual (local, "esta" rede) |
10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 | 16.777.216 | Privado | Faixa privada da RFC 1918 |
100.64.0.0/10 | 100.64.0.0 – 100.127.255.255 | 4.194.304 | Compartilhado | NAT de operadora (carrier-grade, interno do ISP) |
127.0.0.0/8 | 127.0.0.0 – 127.255.255.255 | 16.777.216 | Host | Loopback — fica no host local |
169.254.0.0/16 | 169.254.0.0 – 169.254.255.255 | 65.536 | Sub-rede | Link-local / APIPA (falha de DHCP) |
172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 | 1.048.576 | Privado | Faixa privada da RFC 1918 |
192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 | 65.536 | Privado | Faixa privada da RFC 1918 |
198.18.0.0/15 | 198.18.0.0 – 198.19.255.255 | 131.072 | Privado | Testes de desempenho (benchmark) |
198.51.100.0/24 | 198.51.100.0 – 198.51.100.255 | 256 | Documentação | TEST-NET-2 |
203.0.113.0/24 | 203.0.113.0 – 203.0.113.255 | 256 | Documentação | TEST-NET-3 |
224.0.0.0/4 | 224.0.0.0 – 239.255.255.255 | 268.435.456 | Internet | Multicast |
255.255.255.255/32 | 255.255.255.255 | 1 | Sub-rede | Broadcast limitado |
Faixas IPv4 privadas (RFC 1918) 2
| Bloco de endereços (CIDR) | Faixa de endereços | Endereços | Uso típico |
|---|---|---|---|
10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 | 16.777.216 | Grandes redes corporativas / VPCs na nuvem |
172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 | 1.048.576 | Redes de porte médio / Docker |
192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 | 65.536 | Residências / pequenos escritórios |