O caso (exemplo): um estudante precisa achar a rede do IP 192.168.10.37 com máscara /26 numa prova, sem calculadora. Ele sabe a regra ("comparar o IP com a máscara bit a bit"), mas trava no primeiro passo: passar o IP para binário.
Resposta curta: converta um octeto por vez, comparando com as potências 128, 64, 32, 16, 8, 4, 2 e 1. O 192.168.10.37 vira 11000000.10101000.00001010.00100101. Comparando com a máscara /26, a rede é 192.168.10.0.
Por que o IP tem pontos
O endereço IPv4 tem 32 bits, ou seja, 32 zeros e uns em sequência (RFC 791). Escrever 32 dígitos é difícil de ler, então o costume é cortar em quatro pedaços de 8 bits, os octetos, e escrever cada pedaço em decimal, separado por pontos.
Cada octeto tem 8 bits e vai de 00000000 (0) a 11111111 (255). É por isso que nenhum número de um IP passa de 255.
As potências de 2 de um octeto
Cada posição de um octeto vale uma potência de 2. Da esquerda para a direita:
| Posição | 1ª | 2ª | 3ª | 4ª | 5ª | 6ª | 7ª | 8ª |
|---|---|---|---|---|---|---|---|---|
| Vale | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Um octeto em binário diz quais dessas colunas estão "ligadas". O número em decimal é a soma das colunas ligadas. Somando todas, 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255.
O método das subtrações
Para converter um número de 0 a 255, percorra as colunas da maior para a menor. Em cada uma, pergunte: o que sobrou é maior ou igual ao valor da coluna?
- Se sim, escreva 1 e subtraia o valor da coluna.
- Se não, escreva 0 e siga com o mesmo número.
Vamos fazer com o último octeto, 37:
| Coluna | Sobrou antes | Cabe? | Bit | Sobra depois |
|---|---|---|---|---|
| 128 | 37 | não | 0 | 37 |
| 64 | 37 | não | 0 | 37 |
| 32 | 37 | sim | 1 | 5 |
| 16 | 5 | não | 0 | 5 |
| 8 | 5 | não | 0 | 5 |
| 4 | 5 | sim | 1 | 1 |
| 2 | 1 | não | 0 | 1 |
| 1 | 1 | sim | 1 | 0 |
Lendo a coluna "Bit" de cima para baixo: 00100101. Conferindo: 32 + 4 + 1 = 37.
Outro jeito: dividir por 2
Há um segundo método, que muita gente aprende na escola. Divida o número por 2, anote o resto (0 ou 1) e repita com o resultado da divisão, até chegar a zero. Os restos, lidos de baixo para cima, formam o binário.
Com o mesmo 37:
| Divisão | Resultado | Resto |
|---|---|---|
| 37 ÷ 2 | 18 | 1 |
| 18 ÷ 2 | 9 | 0 |
| 9 ÷ 2 | 4 | 1 |
| 4 ÷ 2 | 2 | 0 |
| 2 ÷ 2 | 1 | 0 |
| 1 ÷ 2 | 0 | 1 |
Lendo os restos de baixo para cima: 100101. Para completar o octeto, acrescente zeros à esquerda até ter 8 dígitos: 00100101. O resultado é o mesmo do método das subtrações.
Qual usar? O das subtrações costuma ser mais rápido para IPs, porque as colunas são sempre as mesmas oito e você já sai com os 8 dígitos. O das divisões é bom para conferir.
Os quatro octetos
Repetindo o método para os outros três:
| Octeto | Decimal | Binário | Colunas ligadas |
|---|---|---|---|
| 1º | 192 | 11000000 | 128 + 64 |
| 2º | 168 | 10101000 | 128 + 32 + 8 |
| 3º | 10 | 00001010 | 8 + 2 |
| 4º | 37 | 00100101 | 32 + 4 + 1 |
Juntando com pontos:
Dois atalhos ajudam a ganhar tempo:
- 192 aparece em quase toda rede de casa e vale sempre
11000000(128 + 64). 168 vale10101000. Os dois juntos são o começo da faixa privada192.168.0.0/16da RFC 1918. - 0 é
00000000e 255 é11111111. Não precisa fazer conta.
O caminho de volta: binário para decimal
Voltar é ainda mais fácil: some os valores das colunas onde há 1. Exemplo com 10110010:
| Coluna | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| Bit | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
Para que serve: achar a rede de um IP
Agora o uso prático. A máscara /26 quer dizer 26 uns seguidos de 6 zeros (RFC 4632). Para achar a rede, compare o IP com a máscara bit a bit: onde a máscara tem 1, o bit do IP fica; onde tem 0, vira 0. A barra | marca onde termina a rede:
| Binário | Decimal | |
|---|---|---|
| IP | 11000000.10101000.00001010.00|100101 | 192.168.10.37 |
| Máscara /26 | 11111111.11111111.11111111.11|000000 | 255.255.255.192 |
| Rede | 11000000.10101000.00001010.00|000000 | 192.168.10.0 |
Só o último octeto muda, porque nos três primeiros a máscara é toda de uns. No último, a máscara 11000000 guarda os dois primeiros bits de 00100101 e zera o resto: sobra 00000000, que é 0.
Essa comparação é a ideia da máscara de sub-rede descrita na RFC 950. Com o mesmo raciocínio dá para achar o broadcast: troque por 1 todos os bits depois da barra.
| Binário | Decimal | |
|---|---|---|
| Broadcast | 11000000.10101000.00001010.00|111111 | 192.168.10.63 |
Então o IP 192.168.10.37/26 está na rede 192.168.10.0, que vai de 192.168.10.1 a 192.168.10.62 e tem 62 vagas.
Segundo exemplo: a barra no meio do terceiro octeto
No exemplo acima, a barra caía no último octeto. Quando ela cai antes, o raciocínio é o mesmo, só que a mudança aparece mais cedo. Vamos achar a rede de 172.16.85.200/20, um endereço da faixa privada 172.16.0.0/12:
| Binário | Decimal | |
|---|---|---|
| IP | 10101100.00010000.0101|0101.11001000 | 172.16.85.200 |
| Máscara /20 | 11111111.11111111.1111|0000.00000000 | 255.255.240.0 |
| Rede | 10101100.00010000.0101|0000.00000000 | 172.16.80.0 |
| Broadcast | 10101100.00010000.0101|1111.11111111 | 172.16.95.255 |
Os dois primeiros octetos passam inteiros, porque a máscara ali é toda de uns. O quarto octeto zera inteiro na rede e vira tudo um no broadcast, porque a máscara ali é toda de zeros. A conta de verdade acontece só no terceiro octeto: 85 é 01010101, e a máscara 11110000 guarda só os quatro primeiros bits, que valem 80.
Resultado: o IP 172.16.85.200 está na rede 172.16.80.0/20, que vai de 172.16.80.1 a 172.16.95.254 e tem 4.094 vagas. Esse tipo de conta, com a barra no meio de um octeto, é onde o binário mais ajuda: de cabeça, em decimal, é fácil errar.
Binário e wildcard
A máscara wildcard, usada nas listas de acesso dos roteadores, é a máscara com os bits trocados: onde havia 1 fica 0, e vice-versa. Em binário, isso salta aos olhos:
| Binário | Decimal | |
|---|---|---|
| Máscara /26 | 11111111.11111111.11111111.11000000 | 255.255.255.192 |
| Wildcard | 00000000.00000000.00000000.00111111 | 0.0.0.63 |
Em decimal, a regra vira "255 menos cada octeto da máscara": 255 − 192 = 63. O guia Como ler uma máscara wildcard em uma ACL mostra como o roteador usa essa máscara invertida para decidir quais IPs uma regra pega.
O IP como um número só
Os 32 bits também podem ser lidos como um único número inteiro. Cada octeto vale 256 vezes mais que o seguinte:
Esse formato aparece em alguns programas e bancos de dados. A calculadora de IP para binário aceita IP com pontos, binário, hexadecimal ou esse número inteiro, e converte entre todos.
Erros comuns
- Esquecer os zeros à esquerda. O octeto 10 é
00001010, com oito dígitos, não1010. Sem os zeros, os bits saem do lugar e a comparação com a máscara dá errado. - Começar pela coluna errada. O método começa no 128 e desce até o 1.
- Trocar a ordem dos octetos. O primeiro octeto do IP é o primeiro grupo de 8 bits.
- Comparar com a máscara em decimal. A comparação bit a bit só funciona com os dois em binário.
Treine com estes
Tente converter antes de olhar a resposta:
| Decimal | Binário |
|---|---|
| 1 | 00000001 |
| 63 | 00111111 |
| 100 | 01100100 |
| 127 | 01111111 |
| 128 | 10000000 |
| 200 | 11001000 |
| 224 | 11100000 |
| 254 | 11111110 |
Repare em alguns padrões: 127 é tudo 1 menos o primeiro bit; 128 é só o primeiro; 224 é o último octeto da máscara /27.
Perguntas frequentes
Por que o maior número do IP é 255?
Porque cada octeto tem 8 bits, e com 8 bits o maior número é 11111111, a soma de todas as colunas: 255.
Preciso saber binário para configurar uma rede?
Para o dia a dia, não: as calculadoras fazem a conta. Mas o binário explica por que as máscaras terminam em 128, 192, 224, 240, 248, 252 e 254, e por que as redes têm tamanhos de potência de 2.
Dá para converter o IP inteiro de uma vez, sem separar os octetos?
Dá, usando o número inteiro de 3.232.238.117 e dividindo por 2 muitas vezes, mas é bem mais trabalhoso. Separar em quatro octetos de 8 bits transforma uma conta grande em quatro contas pequenas, todas com as mesmas oito colunas. É por isso que o método por octeto é o mais usado.
O que é o "/26" em binário?
São 26 uns seguidos de 6 zeros: 11111111.11111111.11111111.11000000, que em decimal é 255.255.255.192. Veja a máscara /26.
Converta qualquer IP na calculadora de IP para binário, que já vem preenchida com 192.168.10.37 logo abaixo.