Calculadora IPv4: estrutura 32 bits, classes historicas e blocos reservados
O IPv4 segue o desenho original de 1981 definido pela RFC 791: um endereço de 32 bits dividido em quatro octetos de 8 bits, escrito em notação decimal pontuada (dotted-decimal). Apesar de IPv6 já transportar mais de metade do tráfego brasileiro, o IPv4 continua presente em quase toda rede em produção por causa do legado de equipamentos, regras de firewall, ACLs e documentação acumulada. Esta calculadora atende quem precisa converter um IPv4 entre representacoes, identificar a classe histórica e reconhecer rapidamente blocos privados, loopback e link-local sem decorar tabelas.
Estrutura de 32 bits e quatro octetos
Cada IPv4 ocupa 32 bits, organizados em quatro octetos de 8 bits separados por ponto. Cada octeto vai de 0 a 255 (2^8 = 256 valores). O número total de combinacoes e 2^32 = 4.294.967.296 endereços, espaço esgotado oficialmente em fevereiro de 2011 quando o IANA delegou os últimos blocos /8 aos RIRs. No LACNIC, o último /10 do pool regional acabou em 2020.
A conversão entre formatos e direta. O octeto decimal 192 corresponde ao binário 11000000 e ao hexadecimal C0. O endereço 192.168.0.1 inteiro fica 11000000.10101000.00000000.00000001 em binário, C0A80001 em hexadecimal e 3.232.235.521 como inteiro de 32 bits sem sinal.
Classes A, B, C, D e E (classful, anterior ao CIDR)
Antes do CIDR (RFC 1518/1519, 1993), o IPv4 era dividido em classes fixas baseadas nos bits iniciais do primeiro octeto. Hoje o conceito e histórico: nenhum roteador moderno faz roteamento classful, e nenhuma alocação recente segue o limite de classe. Mas o vocabulario sobrevive em provas de certificacao, documentação antiga e discussao sobre por que certos blocos (como 10.0.0.0/8) tem o tamanho que tem.
| Classe | Faixa do 1o octeto | Máscara default | Hosts por rede | Uso original |
|---|---|---|---|---|
| A | 1 a 126 | /8 (255.0.0.0) | 16.777.214 | Grandes organizacoes (1 a 126.0.0.0) |
| B | 128 a 191 | /16 (255.255.0.0) | 65.534 | Organizacoes medias |
| C | 192 a 223 | /24 (255.255.255.0) | 254 | Redes pequenas, LAN típica |
| D | 224 a 239 | não aplicável | multicast | Grupos multicast (RFC 5771) |
| E | 240 a 255 | não aplicável | reservado | Experimental, não roteado |
O bloco 127.0.0.0/8 ficou reservado para loopback fora das classes. Hoje toda alocação real e classless: o LACNIC entrega blocos /22 a operadoras, /24 a clientes corporativos, e nenhum desses respeita fronteira de classe.
Blocos especiais reservados pela IANA
Alguns blocos IPv4 nunca aparecem em internet publica porque tem uso designado pela IANA. Reconhecer esses blocos rapidamente ajuda em diagnostico: um IP de origem 169.254.x.x em log significa quase sempre que o cliente não conseguiu DHCP e gerou um link-local sozinho. Um IP 100.64.x.x em traceroute aponta para CGNAT da operadora. A tabela abaixo cobre os blocos que aparecem com frequencia em operação real.
| Bloco | RFC | Uso |
|---|---|---|
| 10.0.0.0/8 | RFC 1918 | Privado (intranet corporativa grande) |
| 172.16.0.0/12 | RFC 1918 | Privado (172.16.0.0 a 172.31.255.255) |
| 192.168.0.0/16 | RFC 1918 | Privado (LAN domestica, SOHO) |
| 127.0.0.0/8 | RFC 1122 | Loopback (localhost, 127.0.0.1) |
| 169.254.0.0/16 | RFC 3927 | Link-local (auto-IP quando DHCP falha) |
| 100.64.0.0/10 | RFC 6598 | CGNAT (operadoras compartilhando IPv4) |
| 224.0.0.0/4 | RFC 5771 | Multicast (Classe D) |
| 240.0.0.0/4 | RFC 1112 | Reservado experimental (Classe E) |
| 0.0.0.0/8 | RFC 1122 | Rede atual, fonte não especificada |
| 255.255.255.255/32 | RFC 919 | Broadcast limitado |
| 198.18.0.0/15 | RFC 2544 | Benchmarks de rede |
| 192.0.2.0/24 | RFC 5737 | Documentação TEST-NET-1 |
Por que existe RFC 1918?
O escasseamento iminente de IPv4 nos anos 1990 motivou a reserva de três blocos para uso interno em qualquer rede privada, sem coordenacao com IANA. Esses blocos não são roteados na internet publica e dependem de NAT na borda. Em IPv6 o conceito equivalente são os Unique Local Addresses (fc00::/7) descritos pela RFC 4193.
CIDR substituiu classful na pratica
Em 1993 o CIDR (Classless Inter-Domain Routing) acabou com a rigidez classful. Em vez de máscaras de 8, 16 ou 24 bits fixas, qualquer prefixo entre /0 e /32 passou a ser valido. Isso permitiu alocações mais eficientes (um cliente que precisa de 60 hosts recebe /26 com 62 utilizáveis, em vez de classe C inteira com 254). A calculadora CIDR trata exatamente essa divisao em sub-redes, e a calculadora IP calcula rede, broadcast e wildcard para qualquer prefixo.
Conversão decimal, binário e hexadecimal
A conversão manual e mecanica. Para passar 192 para binário, divida sucessivamente por 2 e leia os restos de baixo para cima: 11000000. Para hexadecimal, agrupe os 8 bits em duas metades de 4 bits e converta cada uma: 1100 = C, 0000 = 0, logo 192 = C0. Para inteiro de 32 bits, multiplique cada octeto pela potencia de 256 correspondente: 192 x 256^3 + 168 x 256^2 + 0 x 256 + 1 = 3.232.235.521.
Em scripts Python, int(ipaddress.IPv4Address('192.168.0.1')) entrega o inteiro direto. Em PHP, ip2long('192.168.0.1') faz o mesmo (atenção a interpretacao com sinal em sistemas 32 bits). Bancos de dados costumam armazenar IPv4 como BIGINT ou UNSIGNED INT para indexacao eficiente.
Contexto brasileiro: CGNAT e escassez de IPv4
Desde 2014 o LACNIC opera em fase de exaustao. Operadoras brasileiras compartilham um IPv4 público entre dezenas ou centenas de assinantes via CGNAT (RFC 6598, bloco 100.64.0.0/10). Isso explica por que muitos usuários residenciais não conseguem abrir portas para fora mesmo desativando NAT no roteador domestico: o NAT acontece também na borda da operadora, fora do controle do cliente. A solucao definitiva e migrar servicos publicados para IPv6, que tem espaço suficiente para cada interface ter endereço único globalmente roteável.
Ferramentas e artigos relacionados
Referencias técnicas oficiais
O protocolo IPv4 e definido pela RFC 791. Os blocos privados estao na RFC 1918. O CGNAT brasileiro segue a RFC 6598. O registro completo de blocos especiais e mantido em IANA IPv4 Special-Purpose Registry.
A calculadora IPv4 traduz qualquer endereço entre decimal, binário, hexadecimal e inteiro 32 bits e mostra classe histórica e bloco reservado de uma vez.