Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

01 - 32 bits

#include
video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

32 bits

1. O Conceito de Espaço de Endereçamento

No mundo digital, tudo se resume a combinações. Um endereço IPv4 é um número de 32 bits de comprimento fixo. Isso significa que, independentemente da rede onde você esteja, o "nome" lógico do seu computador na camada 3 (Rede) terá exatamente 32 posições binárias, cada uma podendo assumir o valor 0 ou 1. Esse conjunto total de combinações possíveis é o que chamamos de Espaço de Endereçamento do protocolo.

A rigidez desse tamanho é parte fundamental do padrão IPv4: nenhum IP pode ter 31 ou 33 bits. Essa simetria garante que roteadores possam processar o cabeçalho IP em hardware dedicado (ASICs) com latência previsível, sem precisar interpretar campos de comprimento variável.

2. A Matemática do Limite

Por que dizemos que o IPv4 tem aproximadamente 4,2 bilhões de endereços? A conta é uma progressão geométrica simples:

  • Cada bit tem 2 estados possíveis (0 ou 1).
  • Como temos 32 posições, o cálculo é 2^32.
2^32 = 4.294.967.296 endereços únicos

Esse valor é o limite absoluto do protocolo. Nenhuma engenharia, patch ou atualização incremental consegue ampliá-lo sem migrar para outro protocolo (IPv6, com 128 bits). Para fins de comparação:

Protocolo Bits Espaço de Endereçamento
IPv4 32 4.294.967.296 (~4,3 bilhões)
IPv6 128 ~3,4 × 1038 (340 undecilhões)
MAC (IEEE 802) 48 281.474.976.710.656 (~281 trilhões)

3. Representação em Memória

Na memória dos equipamentos, o endereço de 32 bits é armazenado como uma palavra contínua. Em sistemas modernos (little-endian ou big-endian), o endereço é tratado como um único inteiro de 32 bits. Em C, o IPv4 é manipulado através da estrutura struct in_addr e da struct sockaddr_in, definidas em <netinet/in.h>:

#include <netinet/in.h>

struct in_addr {
    uint32_t s_addr;  /* IP em network byte order */
};

struct sockaddr_in {
    sa_family_t    sin_family;  /* AF_INET */
    in_port_t      sin_port;    /* porta em network byte order */
    struct in_addr sin_addr;    /* endereço IPv4 de 32 bits */
    char           sin_zero[8]; /* padding */
};

Internamente, o campo s_addr é um uint32_t, ou seja, ocupa exatamente 4 bytes contíguos na memória. A ordenação segue o network byte order (big-endian), o que garante interoperabilidade entre arquiteturas diferentes (x86 é little-endian; ARM pode ser ambos).

4. Comparação com Endereço MAC de 48 Bits

É comum confundir o endereço IP (32 bits, camada 3) com o endereço MAC (48 bits, camada 2). A diferença fundamental é:

  • MAC (48 bits): fixo na placa de rede, atribuído pelo fabricante (OUI + NIC), não hierárquico geograficamente.
  • IP (32 bits): lógico, atribuído pelo administrador ou DHCP, hierárquico, roteável entre redes.

Apesar de o MAC ter mais bits (48 contra 32), ele não substitui o IP porque não é hierárquico: roteadores de núcleo não conseguem agregar MACs em prefixos. O IP agrega (através de CIDR), permitindo que uma única entrada de tabela represente milhões de endereços.

5. Histórico do IPv4

O IPv4 não nasceu pronto. Ele evoluiu de protótipos anteriores:

Ano RFC Marco histórico
1979 RFC 760 Primeira versão "IPv4-like", ainda com campos experimentais
1980 RFC 770 Ajustes em fragmentação
1981 RFC 791 IPv4 formal, base do padrão atual
1981 RFC 792 ICMPv4, complemento ao IPv4
1983 — ARPANET migra definitivamente para TCP/IP
1985 RFC 950 Subnetting adiciona hierarquia extra

A escolha de 32 bits em 1981 foi considerada "mais do que suficiente" — a ARPANET tinha apenas algumas centenas de hosts na época. Em retrospecto, foi um erro de previsão, pois o protocolo durou mais de quatro décadas e o espaço se esgotou em 2011.

6. Estrutura Física vs. Estrutura Lógica

Para o hardware (placas de rede e roteadores), o endereço de 32 bits é processado como uma cadeia contínua de bits:

Fluxo de bits: 11000000101010000000000100000001

Para facilitar o gerenciamento, os seres humanos e os protocolos de roteamento dividem esses 32 bits em duas partes lógicas:

  1. Prefixo de Rede (Net ID): os primeiros bits que identificam "onde" a rede está.
  2. Sufixo de Host (Host ID): os bits finais que identificam "quem" é o dispositivo naquela rede.

A fronteira entre as duas partes é móvel e definida pela máscara de sub-rede. É essa flexibilidade (introduzida pelo CIDR em 1993) que torna o IPv4 adaptável a redes de tamanhos variados.

7. O Impacto dos 32 Bits na Engenharia

O fato de o endereço ser limitado a 32 bits gerou três consequências históricas:

  • Esgotamento: A população mundial ultrapassou 8 bilhões de pessoas, e a IoT (Internet das Coisas) somou bilhões de sensores. O limite de 4,3 bilhões de IPs foi atingido.
  • Eficiência de Roteamento: Por ser um número pequeno e fixo, roteadores conseguem processar endereços IPv4 muito rapidamente em hardware (ASICs e TCAMs), com lookups na ordem de nanossegundos.
  • Necessidade do NAT: Para contornar o limite de 32 bits, criamos o NAT (RFC 1631, 1994), permitindo que endereços privados sejam "escondidos" atrás de um único endereço público. Isso postergou o colapso do IPv4 por mais de 25 anos.

8. Por que 32 bits e não mais?

Quando o protocolo foi desenhado (RFC 791, 1981), 4,3 bilhões de endereços pareciam uma quantidade praticamente infinita. Os computadores eram gigantes, caros e raros — restritos a universidades, governos e grandes corporações. A ideia de que cada pessoa teria um smartphone, um relógio inteligente e uma geladeira conectada era ficção científica.

Além disso, o cabeçalho IPv4 ocupa 20 bytes (sem opções); dobrar o tamanho do endereço para 64 bits aumentaria o cabeçalho para 40 bytes, dobrando o overhead em links lentos da época (9600 bps). Era uma decisão pragmática.

9. Resumo Técnico

Atributo Valor
Comprimento 32 bits fixos
Total de combinações 232 = 4.294.967.296
Tipo Binário puro (processamento) / Decimal pontuado (exibição)
Armazenamento em C uint32_t em struct in_addr
RFC fundadora RFC 791 (1981)
Predecessora RFC 760 (1979)
Sucessora IPv6 (RFC 2460, 128 bits)
Status atual Em esgotamento; ainda dominante em volume de tráfego

10. Conclusão

O tamanho de 32 bits define todo o ecossistema do IPv4: sua velocidade de processamento, sua escalabilidade e, principalmente, sua finitude. Esse número aparentemente técnico carrega uma das maiores decisões de engenharia da história da computação — uma decisão que moldou o crescimento da Internet e, ao mesmo tempo, tornou inevitável a transição para o IPv6. Entender a fundo o significado dos 32 bits é o ponto de partida para dominar qualquer conceito avançado de endereçamento IP.