Cálculo de sub-redes IPv4

Já faz um tempo que entramos na era do IPv6, ou seja, vários provedores de Internet estão trabalhando com pilha dupla, onde os endereços IPv4 e IPv6 são utilizados simultaneamente nos equipamentos para manter a compatibilidade com quem ainda não está na versão 6. Mas ainda temos uma longa jornada até abolirmos a versão 4 do protocolo.

O Google coleta continuamente dados sobre usuários que utilizam IPv6, e acredite se quiser, apenas 7,18% das pessoas estão utilizando este protocolo. Isso nos leva a crer que ainda vamos precisar muito do IPv4 em nossas redes.

Como o IPv4 está escaço no mundo todo, é imprescindível que você faça cálculos corretamente para que não haja desperdício desnecessário. Por exemplo, se você tem uma rede onde 100 usuários vão se conectar, não é necessário utilizar a máscara de sub-rede clássica “255.255.255.0” (/24) que usaria 256 IPs da sua rede, deixando 156 IPs vagos, jogados ao vento.

No tutorial a seguir, você vai aprender a realizar cálculo de sub-redes IPv4 para dividir redes, descobrir IPs da rede e do broadcast, primeiro e último IP, máscara de sub-rede e mais um pouco. Pode ser um pouco confuso no início, porém, sugiro que você guarde este link nos favoritos para tirar suas dúvidas quando as tiver.

Então vamos lá.

Entendendo o protocolo IPv4 (de verdade)

O IPv4 é formado por 32 bits divididos em 4 octetos (8 bits cada). Eles são representados por números de 0 a 255, tal como 192.168.100.2, por exemplo. Além disso, o IPv4 precisa de algo chamado de máscara de sub-rede, que trata de definir qual parte do IP representa a rede e qual parte representa os hosts daquela rede.

Tome como exemplo os dados a seguir:

192.168.100.2
255.255.255.0

No caso acima, temos uma rede que contém 254 IPs utilizáveis, pois a máscara de sub-rede está utilizando 24 bits para a rede e sobramos com 8 bits (dos 32) para os hosts daquela rede. Os bits que determinam a parte da rede têm valor 1 (um) e os bits que determinam a parte dos hosts, valor 0 (zero).

O cálculo para descobrir quantos hosts podemos ter em uma rede é 2^b-2 (onde b é o número de bits com valor 0 – zero). No caso acima 2^8-2 igual a 254.

Mas como eu sei quantos bits a máscara de sub-rede está utilizando?

Isso é o que você vai aprender a seguir!

Decimal para binário e binário para decimal

Tanto para converter decimal para binário e binário para decimal, crie uma tabela dividindo 128 por 2 até que chegue ao número 1. Veja um exemplo:

Tabela para conversão de bits em decimal e vice-versa

Tabela para conversão de bits em decimal e vice-versa

Vamos escolher um número decimal que vai de 0 a 255, por exemplo, 252.

Na tabela, marque 1 no número mais próximo de 252, nesse caso 128.

128 é o número mais próximo de 252

128 é o número mais próximo de 252

Agora vá somando os números posteriores até chegar a 252 (sem passar). Por exemplo, 128+64=192, 192+32=224, 224+16=240, 240+8=248, 248+4=252. A cada número somado, acrescente um número 1 (um) e a cada número pulado, acrescente 0 (zero).

252 é igual a 11111100 em binário

252 é igual a 11111100 em binário

Vamos a outro exemplo, o número 11.

  • Qual o maior número da tabela que representa 11 sem passar? 8 (adicione 1)
  • Qual o maior número da tabela que somado a 8 se aproxima ou é igual a 11? 2 (adicione 1)
  • Qual o maior número da tabela que somado a 10 (8+2) da 11? 1 (adicione 1)

Ou seja 8+2+1=11.

8+2+1=11

8+2+1=11

Adicione zeros nas outras casas e você terá o valor de 11 em binários:

11 vale 00001011 em binários. Você pode eliminar os zeros à esquerda, ou seja, 1011.

11 vale 00001011 em binários. Você pode eliminar os zeros à esquerda, ou seja, 1011.

Assim chegamos à conclusão que 255.255.255.0 é o mesmo que:

255      255      255      0
11111111 11111111 11111111 00000000

Ou seja, 128+64+32+16+8+4+2+1=255 (todos os números que equivalem a 1 devem ser somados).

Onde estiverem os números 1 (um) é equivalente à rede, 0 (zeros) são os hosts da rede.

Dividindo nossa máscara temos o seguinte:

# REDE
11111111 = 255
11111111 = 255
11111111 = 255

#HOSTS
00000000 = 0

Para o nosso primeiro exemplo (192.168.100.2), a parte do IP onde a máscara de sub-rede é 1 (192.168.100) representa uma rede, a parte final (2) representa a identificação de um host da rede (um computador, um tablet, etc…).

Como sabemos que 2^8 (8 zeros) é igual a 256, eliminamos dois endereços IP que não devem ser utilizados, o primeiro e o último. O primeiro IP (192.168.100.0) representa o endereço da rede em si, o último endereço (192.168.0.255) representa o broadcast da rede. Sobramos com 254 IPs que podem ser utilizados por quaisquer equipamentos dentro dessa rede.

Parte do IP que representa a rede e a identificação de um host

Parte do IP que representa a rede e a identificação de um host

Observação: Endereços IP devem ser únicos dentro de uma mesma rede, você não pode utilizar o mesmo endereço em dois equipamentos diferentes.

A máscara de sub-rede acima é uma das mais utilizadas em redes locais, pois além de simples, ela possui 254 endereços disponíveis, ou seja, dá e sobra para você conectar todos os aparelhos da sua residência, até mesmo conectar todos os dispositivos de uma pequena empresa.

CIDR

Além da representação 255.255.255.0, máscaras de sub-rede também podem ser apresentadas no formato CIDR, mas não se assuste com este nome estranho, este método simplesmente indica quantos bits da máscara de sub-rede estão voltados para a rede (todos os bits com 1 – um).

Por exemplo, ao invés de escrever algo assim:

  • IP: 192.168.100.2 | Máscara de sub-rede: 255.255.255.0

Conforme o Windows faz, podemos escrever apenas o seguinte:

  • 192.168.100.2/24

Como os roteadores mais modernos fazem. Nesse caso estamos falando que a máscara de sub-rede está utilizando 24 bits para a rede (conte os números 1 na imagem anterior que você vai entender melhor).

Um exemplo um pouco mais complexo

E se eu te disser que os exemplos que você viu até aqui nesse tutorial são os mais simples possíveis? Não desista de ler agora, eu prometo que você vai entender tudo até o final do artigo.

Vamos sair um pouco do padrão de máscara de sub-rede e ver o que acontece com o nosso endereço. Vamos supor que agora nosso endereço IP é o mesmo 192.168.100.2, porém a máscara de sub-rede agora é um /28.

Agora, ao invés de dar algo preciso, vamos ter que pegar parte dos bits da outra parte da máscara de sub-rede, veja:

28 bits ao invés de 24

28 bits ao invés de 24

Como você pode perceber na imagem acima, ao invés de utilizar 24 bits, agora temos uma máscara de 28 bits. Isso vai mudar muita coisa na rede do exemplo. Agora ela é menor, pois, estamos utilizando mais bits para a rede e menos para os hosts.

De cara você pode perceber que temos 4 bits para os hosts (zeros), portanto, se fizermos nosso cálculo de 2^b-2, agora temos apenas 14 endereços IP disponíveis para hosts.

Certo, então vamos descobrir algumas informações sobre essa rede.

Qual é a máscara de sub-rede?

Vamos os bits em nossa tabela para descobrir qual será a máscara de sub-rede. Já sabemos que a primeira parte vai dar 255.255.255, pois até o último ponto não temos nenhum zero, lembra? Estamos utilizando 28 bits, sendo que 24 bits completariam todos os três primeiros octetos com 1 bit.

Para o último octeto faríamos o seguinte:

Some todos os números que têm 1 (um) e terá o valor

Some todos os números que têm 1 (um) e terá o valor

Quanto fica 128+64+32+16?

Correto, agora sabemos a primeira parte – 255.255.255 – e a última que é a soma acima. Logo nossa máscara será 255.255.255.240.

Qual o IP da rede?

Para saber qual é o IP da rede, simplesmente passe os bits para identificação dos hosts e converta-os para 0 (zero), exemplo:

# Máscara de sub-rede
11111111 11111111 11111111 1111[0000]
255      255      255      240

# IP que temos
11000000 10101000 01100100 0000[0010]
192      168      100      2

# IP da rede
11000000 10101000 01100100 0000[0000]
192      168      100      0

 

Os bits que estão dentro dos colchetes são os que representam os hosts. Lembre-se que nossa máscara tem 28 bits.

Um fato interessante aqui é que como sabemos que o IP da rede é 192.168.100.0, nosso primeiro IP utilizável da rede é sempre IP da rede + 1, logo 192.168.100.1.

Observação: Normalmente utilizamos o primeiro IP da rede como “gateway”, ou seja, IP do roteador principal da rede. Isso não é uma regra.

Qual o IP de broadcast?

Para broadcast, basta pegarmos o endereço da rede e adicionarmos 1 (um) em todos os IPs que seriam para hosts, por exemplo:

# Máscara de sub-rede
11111111 11111111 11111111 1111[0000]
255      255      255      240

# IP que temos
11000000 10101000 01100100 0000[0010]
192      168      100      2

# IP da rede
11000000 10101000 01100100 0000[0000]
192      168      100      0

# Broadcast
11000000 10101000 01100100 0000[1111]
192      168      100      15

Outro fato interessante aqui, o último IP válido da rede sempre é o broadcast menos um, ou seja, nosso broadcast é 192.168.100.15, o último IP válido da rede é 192.168.100.14.

Veja os dados que descobrimos até aqui sem precisar de nenhum software.

  • IP: 192.168.100.2
  • IP em bits: 11000000 10101000 01100100 00000010
  • Rede: 192.168.100.0
  • Rede em bits: 11000000 10101000 01100100 00000000
  • Máscara de sub-rede: 255.255.255.240
  • Máscara de sub-rede em bits: 11111111 11111111 11111111 11110000
  • CIDR: /28
  • Broadcast: 192.168.100.15
  • Broadcast em bits: 11000000 10101000 01100100 00001111
  • IPs em toda a rede: 16 (com rede e broadcast)
  • IPs disponívels para uso: 14 (sem rede e broadcast)
  • Primeiro IP utilizável: 192.168.100.1
  • Último IP utilizável: 192.168.100.14

Pronto, como agora você sabe onde essa rede começa (0) e onde ela termina (15), pode começar a criar novas rede. Por exemplo, se você quiser dividir toda sua rede em vários blocos de 16 IPs (/28), a primeira rede começa em 0, a próxima em 16, 32, 48… até 240, que será a última rede dentro da faixa que estamos utilizando (192.168.100).

Dividindo redes /24

A maior parte das redes que você vai dividir será /24, ou seja, pegar 256 IPs e dividir em quantas partes forem necessários.

Para dividir redes /24 você não precisa de realizar tantos cálculos, basta fazer o seguinte:

Dividindo redes /24

Dividindo redes /24

Por exemplo, se você pegar uma rede /24 e quiser dividir em um /26, é possível criar 4 redes com 64 IPs cada, assim você pode calcular onde cada uma das redes começa e termina, por exemplo:

192.168.100.0/26   -  192.168.100.63/26
192.168.100.64/26  -  192.168.100.127/26
192.168.100.128/26 -  192.168.100.191/26
192.168.100.192/26 -  192.168.100.255/26

Claro que você pode fazer divisões diferentes, por exemplo, dentro de um /26, dividir em mais duas redes /27.

# Um /26 dividido em dois /27
192.168.100.0/27   -  192.168.100.31/27
192.168.100.32/27  -  192.168.100.63/27

# E continuamos com os /26
192.168.100.64/26  -  192.168.100.127/26
192.168.100.128/26 -  192.168.100.191/26
192.168.100.192/26 -  192.168.100.255/26

Você pode fazer milhões de divisões desse tipo.

Utilizando programas para facilitar sua vida

Você também pode utilizar programas para facilitar sua vida na divisão de redes, claro que isso foge ao contexto aqui, mas segue os links:

Vídeo tutorial

O vídeo tutorial abaixo complementa o texto acima.

Link do vídeo: https://www.youtube.com/watch?v=GGmhv1Wz6fc

Espero ter ajudado!