Calculadora IPv4: estrutura 32 bits, classes historicas e blocos reservados
O IPv4 segue o desenho original de 1981 definido pela RFC 791: um endereco de 32 bits dividido em quatro octetos de 8 bits, escrito em notacao decimal pontuada (dotted-decimal). Apesar de IPv6 ja transportar mais de metade do trafego brasileiro, o IPv4 continua presente em quase toda rede em producao por causa do legado de equipamentos, regras de firewall, ACLs e documentacao acumulada. Esta calculadora atende quem precisa converter um IPv4 entre representacoes, identificar a classe historica 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 numero total de combinacoes e 2^32 = 4.294.967.296 enderecos, espaco esgotado oficialmente em fevereiro de 2011 quando o IANA delegou os ultimos blocos /8 aos RIRs. No LACNIC, o ultimo /10 do pool regional acabou em 2020.
A conversao entre formatos e direta. O octeto decimal 192 corresponde ao binario 11000000 e ao hexadecimal C0. O endereco 192.168.0.1 inteiro fica 11000000.10101000.00000000.00000001 em binario, 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 historico: nenhum roteador moderno faz roteamento classful, e nenhuma alocacao recente segue o limite de classe. Mas o vocabulario sobrevive em provas de certificacao, documentacao antiga e discussao sobre por que certos blocos (como 10.0.0.0/8) tem o tamanho que tem.
| Classe | Faixa do 1o octeto | Mascara 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 tipica |
| D | 224 a 239 | nao aplicavel | multicast | Grupos multicast (RFC 5771) |
| E | 240 a 255 | nao aplicavel | reservado | Experimental, nao roteado |
O bloco 127.0.0.0/8 ficou reservado para loopback fora das classes. Hoje toda alocacao 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 nao 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 operacao 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 nao 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 | Documentacao TEST-NET-1 |
Por que existe RFC 1918?
O escasseamento iminente de IPv4 nos anos 1990 motivou a reserva de tres blocos para uso interno em qualquer rede privada, sem coordenacao com IANA. Esses blocos nao sao roteados na internet publica e dependem de NAT na borda. Em IPv6 o conceito equivalente sao 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 mascaras de 8, 16 ou 24 bits fixas, qualquer prefixo entre /0 e /32 passou a ser valido. Isso permitiu alocacoes mais eficientes (um cliente que precisa de 60 hosts recebe /26 com 62 utilizaveis, 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.
Conversao decimal, binario e hexadecimal
A conversao manual e mecanica. Para passar 192 para binario, 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 (atencao 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 publico entre dezenas ou centenas de assinantes via CGNAT (RFC 6598, bloco 100.64.0.0/10). Isso explica por que muitos usuarios residenciais nao conseguem abrir portas para fora mesmo desativando NAT no roteador domestico: o NAT acontece tambem na borda da operadora, fora do controle do cliente. A solucao definitiva e migrar servicos publicados para IPv6, que tem espaco suficiente para cada interface ter endereco unico globalmente roteavel.
Ferramentas e artigos relacionados
Referencias tecnicas 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 endereco entre decimal, binario, hexadecimal e inteiro 32 bits e mostra classe historica e bloco reservado de uma vez.