Entendendo IP, CIDR Blocks e Subnets

Ricardo Pedroni
RPEDRONI
Published in
5 min readFeb 9, 2021

Fala, galera! Aqui é o Professor Ricardo Pedroni e vamos juntos para mais uma uma aula fantástica 🎉 (e veja mais aulas como essa no meu canal do YouTube)!

Nos primórdios da internet, quando tudo era mato e troca de email entre universidades, o número de interessados em se conectar na rede mundial era bastante limitado. Agências de governo, universidades e entusiastas eram a grande base de usuários dessa nova rede e ninguém imaginava que um dia, essa rede criadas para troca de documentos e informação hospedaria os bilhões de usuários e dispositivos e fotos de planking que temos na rede mundial moderna.

Isso foi moda um dia. O ser humano é incrivel…mente estranho.

Quando falamos em redes de internet, normalmente estamos falando de redes que adotam o Internet Protocol (IP), que diz que que qualquer dispositivo que queira se conectar à rede deve ser dado um número único e inconfundível, conhecido como endereço ou número IP. A versão 4 do protocolo (IP4) determina que esses endereços são formados por 32 bits ou 4 bytes (4 x 8 = 32bits) mas visualmente, geralmente mostramos o IP como 4 números decimais, como por exemplo 127.10.38.250

Teoricamente, com 32 bits, é possível criar 4.294.967.295 endereços diferentes, ou seja, aproximadamente 4,2 bilhões de dispositivos conectados nessa tal de internet.

Em 1980, você precisava ser uma pessoa muito visionária para achar que um dia, essa ideia maluca de compartilhamento de documentos e informação teria a presença onipresente nas nossas vidas, onde fotos de pessoas deitadas parecendo uma tábua seria normal e que teríamos nossa cueca conectada a essa tal de internet.

Uma vez que vimos que 32 bits não seria suficiente para conectar todas as cuecas inteligente e dispositivos que criamos e usamos no nosso dia a dia (fato curioso: o pessoal já se espertou a esse detalhe lá na década de 90), algumas medidas foram necessárias. Uma delas, mais atual, é o uso da versão mais nova do protocolo, o IP6, que determina endereços IP de 128 bits, possibilitando um total de 2¹²⁸ endereços, que equivale a um número grande pra cacete. Inclusive, é bem provável que o seu IP que você está usando nesse momento lendo esse artigo já é um IP6 — escreva whats my ip no google e talvez você veja algo estranho como isso: 2804:14b:8482:8316:94f8:16bf:8c39:7a92

A outra medida tomada foi desacelerar a exaustão de todos os números IPs com a ideia de usar subredes (subnets). De forma simplificada, a ideia de subredes é criar redes onde os dispositivos conectados não tem um IP único. Invés disso, um dispositivo central (por exemplo um roteador) tem um IP público único mas todos os dispositivos conectados na rede ganham apenas um IP privado. Para um dispositivo dessa subnet privada poder se comunicar com o mundo externo, o dispositivo precisa se comunicar com o dispositivo central e ele é capaz de fazer essa chamada ao mundo externo. Quando houver uma resposta do mundo externo para a chamada feita, esse mesmo dispositivo é responsável de repassar essa resposta ao dispositivo na rede interna que iniciou a chamada.

E quando falamos de redes e subredes, um termo que aparece muitas vezes junto é o CIDR (Classless Inter-Domain Routing). O CIDR apareceu para substituir o Classful Network justamente para dar “poder” às redes de criar subnets e desacelerar a exaustão de IPs que mencionamos antes. O CIDR, muitas vezes chamado de bloco CIDR (CIDR block) serve para identificar como a rede vai ser segmentada para criar uma subnet dentro dela.

O formato de um CIDR block é algo como 10.0.1.0/24 , visto em mais detalhes abaixo:

O CIDR block parece um IP normal, junto com um /XX no final (um número de 0 a 32). Esse número no final define a máscara de rede (net mask) do bloco. Pense na net mask como uma sequência de 1s, começando da primeira posição da esquerda, com um tamanho igual ao número XX (ex: /24 = vinte quatro1 seguidos).

Usando essa máscara, é possível definir qual parte da rede vai ser usada para criar a subnet. Usando nosso exemplo, a máscara de /24define qual parte que vai ser igual para todos os endereços da subnet — nesse caso a primeira parte,10.0.1 — e qual parte vai poder ser diferente para definir os possíveis endereços. No nosso caso, os últimos 8 bits são variáveis, significando que qualquer endereço dessa subnet vai cair na faixa 10.0.1.0 até 10.0.1.255 , num total de 256 endereços únicos.

Repare que para qualquer endereço do exemplo, a parte inicial é igual e somente a parte do IP que não vai dentro dos 1s (a net mask) que pode mudar, criando os possíveis endereços. Seguindo essa lógica, um CIDR block no formato 172.15.8.0/21 define endereços de 172.15.8.0 até 172.15.15.255 , ou seja, 2048 endereços diferentes (repare que 21 não é um múltiplo de 8 então parte do terceiro byte do endereço pode mudar também).

VPC e Subnets na AWS

Quando trabalhamos com redes virtuais privadas, localmente ou na nuvem (VPC), normalmente precisamos definir os endereços de toda nossa VPC, como por exemplo 10.0.0.0/16 ), dando em torno de 64 mil endereços para nossa rede inteira, e podemos quebrar ela em diversas subnets usando CIDR blocks, como uma subnet com10.0.1.0/24 e outra subnet com 10.0.2.0/24 , totalizando 256 endereços para cada uma dessa subnets. Repare que existem inúmeros endereços que ainda não foram usados fora dessas subnets que podem ser usados em outras subnets criadas posteriormente.

Para muitos recursos da AWS, você precisa adicioná-los a alguma subnet dentro de alguma VPC. Você pode criar tanto uma VPC customizada sua e adicionar inúmeras subnets dentro dela, adicionando regras de acesso, assim criando subnets públicas e privadas.

Veja um post aprofundado sobre VPCs e Subnets na AWS aqui

Calculadora de CIDR

E aí, aprendeu? Ótimo! (assumindo que você falou sim, se falou não, pode ler de novo o post, é de graça). Se quiser brincar com CIDR blocks e testar suas habilidades recém adquiridas, veja essa incrível calculadora de CIDR blocks e tira qualquer dúvida restante.

E fechamos por aqui, espero que esse post tenha ajudado!

Ficou com dúvida ou quer mandar uma real? Deixa nos comentários!

Ah, e me acompanhe também no YouTube: https://bit.ly/3q0TIAU!

Aqui é o Professor Ricardo saindo, fique na paz e até a próxima!

--

--

Ricardo Pedroni
RPEDRONI

O Professor Ricardo Pedroni ensina conceitos importantes e boas práticas de desenvolvimento de projetos em software. YouTube https://bit.ly/3q0TIAU