Endereçamento IPv4 e CIDR

Até aqui, estudamos como roteadores decidem para onde enviar um pacote (LPM), como enfileiram pacotes (FIFO, Prioridade, WFQ) e como comutam dados entre portas. Mas há uma pergunta fundamental que não respondemos ainda: como um roteador sabe que um pacote pertence a qual rede? E como os endereços IP são alocados e organizados?

Este capítulo responde essas questões explorando o endereço IP, o formato do datagrama IPv4, a estrutura de sub-redes, e a evolução para o CIDR (Classless InterDomain Routing) — o padrão que torna possível usar o espaço de endereços da Internet de forma eficiente.

O Endereço IP e o Datagrama IPv4

O que é um Endereço IP?

Um endereço IP (Internet Protocol) é um identificador único de 32 bits (em IPv4) atribuído a cada interface de rede. É o endereço usado para rotear dados através da Internet.

A representação em notação decimal com pontos (dotted-decimal notation) torna os endereços legíveis para humanos:

FormatoExemploIntervalo por Octeto
Binário (32 bits)11000000.10101000.00000001.000000010-1 em cada bit
Decimal com pontos192.168.1.10-255 em cada octeto
Hexadecimal0xC0A801010x00-0xFF em cada octeto

Estrutura do Datagrama IPv4

O datagrama IPv4 é dividido em cabeçalho e carga útil (payload). O cabeçalho contém informações essenciais para o roteamento:

CampoTamanhoDescrição
Version (V)4 bitsVersão do IP — sempre 4 para IPv4
Header Length (HLEN)4 bitsComprimento do cabeçalho em palavras de 32 bits (mínimo 5 = 20 bytes)
Type of Service (ToS)8 bitsMarca a prioridade e requisitos de QoS (agora DSCP + ECN)
Total Length16 bitsTamanho total do datagrama (cabeçalho + dados), máximo 65535 bytes
Identification16 bitsNúmero único para esta datagrama; ajuda a reconhecer fragmentos
Flags3 bitsDF (Don't Fragment), MF (More Fragments), Reserved
Fragment Offset13 bitsDeslocamento deste fragmento em relação ao datagrama original
Time to Live (TTL)8 bitsDecrementa a cada salto (roteador); elimina quando = 0
Protocol8 bitsIdentifica protocolo da camada superior (6 = TCP, 17 = UDP, 1 = ICMP)
Header Checksum16 bitsChecksum do cabeçalho apenas (recalculado a cada salto)
Source Address32 bitsEndereço IP da origem
Destination Address32 bitsEndereço IP do destino
Options0-40 bytesOpcional; pode incluir timestamp, rota definida pela origem, etc.

Apenas os campos Source Address e Destination Address são cruciais para roteamento. Os roteadores consultam apenas o destino para decidir para onde enviar — a origem é usada para rotas de retorno.

Visualização da Estrutura do Datagrama IPv4

Visualizacao Interativa: TTL por Saltos

O TTL evita loops de roteamento infinitos, decrementando a cada roteador ate chegar a zero.

Sub-redes e Máscaras

Um endereço IP tem dois componentes lógicos:

  1. Porção de Rede (Network Portion) — identificar a rede
  2. Porção de Host (Host Portion) — identificar um host específico dentro da rede

Essa divisão é feita usando uma máscara de rede (netmask).

Máscaras de Rede e Notação CIDR

Uma máscara de rede é um padrão de 32 bits onde 1s representam bits de rede e 0s representam bits de host.

NotaçãoMáscara em DecimalMáscara em BinárioBits de RedeBits de Host
/8 (Classe A)255.0.0.011111111.00000000.00000000.00000000824
/16 (Classe B)255.255.0.011111111.11111111.00000000.000000001616
/24 (Classe C)255.255.255.011111111.11111111.11111111.00000000248
/25255.255.255.12811111111.11111111.11111111.10000000257
/30255.255.255.25211111111.11111111.11111111.11111100302

Exemplo de sub-rede /24:

Consideremos a rede 192.168.1.0/24:

  • Endereço de rede: 192.168.1.0 (bits de host = 0)
  • Máscara: 255.255.255.0
  • Bits de rede: primeiros 24 bits = 192.168.1
  • Bits de host: últimos 8 bits = 0-255
  • Endereços válidos para hosts: 192.168.1.1 até 192.168.1.254
  • Endereço broadcast: 192.168.1.255 (todos os bits de host = 1)

O endereço 192.168.1.100 pertence a esta sub-rede? Sim, porque os primeiros 24 bits (192.168.1) coincidem.

O endereço 192.168.2.100 pertence a esta sub-rede? Não, porque o terceiro octeto é 2, não 1.

Cálculo de Endereço de Rede

Para encontrar o endereço de rede (network address) de um IP em uma sub-rede, aplique a máscara com AND bitwise:

ComponenteValorBinário
IP192.168.1.10011000000.10101000.00000001.01100100
Máscara (/24)255.255.255.011111111.11111111.11111111.00000000
AND (resultado)192.168.1.011000000.10101000.00000001.00000000

Visualizacao Interativa: AND Bitwise

Compare os bits do IP, mascara e resultado para ver exatamente quais bits de host sao zerados.

Classes de Endereços IPv4 (Histórico)

Historicamente, o IPv4 foi dividido em classes (A, B, C, D, E) com base nos primeiros bits. Esse esquema é obsoleto mas ainda aparece em contextos históricos:

ClasseIntervalo de Primeiro OctetoMáscara PadrãoBits de RedeHosts por Rede
Classe A0-127255.0.0.0 (/8)8 bits~16 milhões
Classe B128-191255.255.0.0 (/16)16 bits~65 mil
Classe C192-223255.255.255.0 (/24)24 bits254
Classe D224-239MulticastNão aplicável
Classe E240-255Reservado (pesquisa)Não aplicável

Problema com Classes: uma organização que precisava de 300 hosts precisava alugar uma rede Classe B com ~65.000 endereços — desperdiço massivo. Isso motivou a adoção do CIDR.

CIDR (Classless InterDomain Routing)

O CIDR, padronizado em 1993 (RFC 1519), elimina as classes rígidas e permite máscaras de rede de qualquer tamanho. Isso revolucionou a eficiência do uso de endereços IP.

Conceito de CIDR

Em vez de estar preso a classes predefinidas (/8, /16, /24), o CIDR permite qualquer prefixo:

  • 10.0.0.0/8 — Rede com 2^24 = 16.777.216 hosts
  • 172.16.0.0/12 — Rede com 2^20 = 1.048.576 hosts
  • 192.168.0.0/16 — Rede com 2^16 = 65.536 hosts
  • 10.10.10.0/24 — Rede com 2^8 = 256 hosts
  • 203.0.113.128/25 — Rede com 2^7 = 128 hosts

Para uma organização que precisa de 300 hosts, aloque um /23 (2 × 256 = 512 hosts) em vez de um /16 — uma economia de 99% de espaço de endereços.

Agregação de Rotas (Route Aggregation)

O CIDR também permitiu agregação de rotas: múltiplas redes pequenas podem ser anunciadas como um único prefixo, reduzindo o tamanho das tabelas de roteamento.

Exemplo:

Um ISP em São Paulo tem 8 sub-redes:

  • 200.1.0.0/24
  • 200.1.1.0/24
  • 200.1.2.0/24
  • 200.1.3.0/24
  • 200.1.4.0/24
  • 200.1.5.0/24
  • 200.1.6.0/24
  • 200.1.7.0/24

Em vez de 8 entradas na tabela de roteamento global, o ISP anuncia um único prefixo:

  • 200.1.0.0/21 — que engloba todas as 8 redes

Os roteadores globais precisam de apenas 1 entrada em vez de 8. A economia é multiplicada por milhões quando consideramos todos os ISPs do mundo.

Visualizacao Interativa: Agregacao CIDR

Veja a transicao entre anunciar 8 prefixos /24 separadamente e anunciar um unico superprefixo /21.

Propriedades de CIDR

PropriedadeDescrição
FlexibilidadeMáscaras de qualquer tamanho (/1 até /32), não apenas /8, /16, /24
Alocação EficienteRedes dimensionadas exatamente para necessidade; elimina desperdiço de Classe B
Agregação de RotasMúltiplas redes contíguas podem ser anunciadas como um prefixo maior
Notação CIDREndereço/prefixo (ex: 192.168.0.0/22) — fácil leitura
CompatibilidadeCIDR é agnóstico ao provedor — ISP A em SP pode rotear para ISP B no RJ com máxima flexibilidade

Visualizacao Interativa: CIDR com Longest Prefix Match

No encaminhamento real, a agregacao convive com rotas mais especificas. Esta simulacao mostra como o roteador escolhe o maior prefixo que casa com o destino.

Endereços Especiais e Reservados

Nem todos os 2^32 ~4 bilhões de endereços IPv4 são usáveis para hosts. Alguns intervalos têm significados especiais:

IntervaloTamanhoDesignaçãoUso
0.0.0.0/816 MThis NetworkIP origem em DHCP, roteamento padrão
10.0.0.0/816 MPrivado (RFC 1918)Redes corporativas internas
127.0.0.0/816 MLoopbackLocalhost (127.0.0.1); auto-referência
169.254.0.0/1664 KLink-local (APIPA)Auto-configuração sem DHCP
172.16.0.0/121 MPrivado (RFC 1918)Redes corporativas internas
192.0.2.0/24256DocumentaçãoExemplos em RFCs (TEST-NET-1)
192.168.0.0/1664 KPrivado (RFC 1918)Redes domésticas (WiFi, LANs)
224.0.0.0/4268 MMulticastGrupos de multicast para múltiplos receptores
240.0.0.0/4268 MReservadoPesquisa; não deve ser usado
255.255.255.255/321BroadcastBroadcast na rede local (todos os hosts)

Endereços Privados (RFC 1918)

O RFC 1918 reservou três intervalos de endereços privados (não roteáveis na Internet pública):

IntervaloMáscara PadrãoHosts DisponíveisCaso de Uso
10.0.0.0 até 10.255.255.255/816.777.214Grandes corporações, data centers
172.16.0.0 até 172.31.255.255/121.048.574Médias corporações, kubernetes
192.168.0.0 até 192.168.255.255/1665.534Redes domésticas, pequenas empresas

Esses endereços privados não são roteáveis na Internet global — um ISP descarta qualquer pacote com origem ou destino nesses intervalos. Organisações usam NAT (Network Address Translation) para traduzir endereços privados em públicos ao acessar a Internet.

Fragmentação e Reassembly

O MTU (Maximum Transmission Unit) de um link é o tamanho máximo de um frame que pode ser transmitido. Para Ethernet, o MTU típico é 1500 bytes.

Se um datagrama IPv4 (20 bytes de cabeçalho + payload) exceder o MTU de um link, o roteador deve fragmentar o datagrama em múltiplos fragmentos, cada um com seu próprio cabeçalho.

Exemplo de Fragmentação

Suponha um datagrama de 4000 bytes total (20 bytes cabeçalho + 3980 bytes de dados) ser enviado através de um link com MTU 1500:

  • Fragment 1: bytes 0-1479 de dados + cabeçalho (Total = 1499 bytes)
    • Offset = 0
    • Flags: MF = 1 (mais fragmentos vêm)
  • Fragment 2: bytes 1480-2959 de dados + cabeçalho (Total = 1499 bytes)
    • Offset = 185 (1480/8)
    • Flags: MF = 1
  • Fragment 3: bytes 2960-3979 de dados + cabeçalho (Total = 1039 bytes)
    • Offset = 370 (2960/8)
    • Flags: MF = 0 (último fragmento)

Visualizacao Interativa: Fragmentacao por MTU

Altere mentalmente o MTU e observe como o datagrama e quebrado em fragmentos com offsets e flag MF.

Todos os fragmentos compartilham o mesmo Identification, permitindo o receptor remontar (reassemble) o datagrama original na camada de rede.

Problemas de Fragmentação

ProblemaImpactoSolução
Overhead de cabeçalho repetidoCada fragmento tem cabeçalho — menos espaço para dadosPath MTU Discovery (PMTUD)
Perda de um fragmento perde todo o datagramaSe 1 de 3 fragmentos é perdido, toda a mensagem falhaTCP retransmite o datagrama inteiro
Processamento em cascataRoteadores intermediários precisam fragmentar novamente se MTU diminuiEvitar fragmentação no caminho com PMTUD

Para evitar fragmentação, os hosts usam Path MTU Discovery (PMTUD): enviam um datagrama com o bit DF (Don't Fragment) ativado; se um roteador não pode transmitir, retorna ICMP "Destination Unreachable (Fragmentation Required)" — o host reduz o tamanho e retenta.

Resumo Conceitual: Do Endereço IP ao Roteamento

ConceitoDefiniçãoExemplo
Endereço IPIdentificador de 32 bits para uma interface de rede192.168.1.100
Sub-redeGrupo de endereços IP com mesma porção de rede192.168.1.0/24 (256 endereços)
Máscara de RedePadrão de bits que separa rede de host255.255.255.0 (/24)
CIDRMétodo de alocação de endereços sem classes rígidas200.1.0.0/21 (8 redes de /24)
Agregação de RotasAnunciar múltiplas redes pequenas como um prefixo maiorISP anuncia /21 para economizar espaço na tabela
FragmentaçãoDividir datagrama em múltiplos fragmentos se exceder MTU4000 bytes → 3 fragmentos em MTU 1500
PMTUDDescobrir o MTU do caminho para evitar fragmentaçãoReduzir tamanho de datagramas até não ser necessário fragmentar

Com essa compreensão de endereçamento IPv4 e CIDR, temos a base para entender como a tabela de roteamento (capítulo anterior) funciona: cada entrada mapeia um prefixo CIDR para uma porta de saída, e o roteador usa LPM para escolher a rota mais específica. E é por isso que agregação de rotas é crucial — permite que roteadores globais escalem sem colapsar sob o peso de bilhões de rotas individuais.