Home > IPv4, TCP/IP > Blocos, prefixos e máscaras em IPv4

Blocos, prefixos e máscaras em IPv4

Introdução

Um IPv4 é usualmente repreentado como quatro números decimais separados por um “.“:

v.x.y.z

onde cada um dos v, x, y, z acima podem assumir valores de 0 a 255. Entretanto, internamente, cada v, x, y e z é representado em binário de 8 bits (1 byte), que agrupados possuem 4 x 8 = 32 bits. Então, o IPv4 168.66.0.30 é a representação decimal do binário:

10101000.01000010.00000000.00011110

Onde o ponto é um mero efeito didático para ilustrar cada um dos bytes do IPv4, do exemplo. Eventualmente podemos representar em hexadeximal:

A8.42.00.1E

onde o ponto continua mantendo o efeito didático, neste caso, também. Para nós é muito melhor a representação decimal.

Blocos, prefixos e máscaras

Quando um sistema autônomo recebe números IPv4 associados ao seu AS (Autonomous System), recebe-os na forma de um ou mais blocos, isto é, um conjunto de números IPsv4 organizados sequencialmente. Os blocos são caracterizados por um número precedido por uma /, no final do IPv4, chamado prefixo. Assim:

168.66.0.0/22

O prefixo identifica a quantidade de números na sequência que começa com o IPv4 168.66.0.0. O prefixo, também, caracteriza a máscara do bloco IPv4 recebido. Mais claramente, o prefixo informa o número de bits que a máscara possui. Assim, o prefixo /22 indica que a máscara possui 22 bits, isto é:

11111111.11111111.11111100.00000000

que em decimal é:

255.255.252.0

Tamanho dos blocos

A tabela abaixo representa o número de IPsv4 possue cada bloco formado pelos respectivos prefixos, até o prefixo /16.

Tabela de blocos IPv4 (parcial)

O prefixo /24 está com sua linha e sua coluna em vermelho. O /24 é um prefixo muito interessante pois ele representa a máscara 255.255.255.0, a qual indica que o bloco tem 256 IPsv4! Adicionalmente, o prefixo /24 é interessante para determinar o tamanho dos outros prefixos. Na linha do /24 é possível ver que ele possui 256 x /32, 128 x /31, 64 x /30, …, 1 x /24 (claro!). Na coluna, temos que o /24 possui 1 x /24, o /23, 2 x /24 (512 IPsv4), o /22 possui 4 x /24 e assim sucessivamente!

Divisão dos blocos

Suponha que um AS tenha recebido um bloco /20. E que um cliente deste AS solicite um bloco /28 para sua rede. Quais IPsv4 devemos entregá-lo? Somente dividindo o /20 em prefixos maiores podermos responder a esta questão. Existem muitas formas de dividir um bloco /20. Vamos seguir aquela que divide os blocos pela metade e usar uma ferramenta como o XMind (https://www.xmind.net/), para apresentar esta divisão.

Um bloco /20 possui 16 blocos /24, segundo a tabela acima. Se o dividirmos em dois blocos /21, cada um deles terá 8 x /24. O primeiro bloco é o 168.66.0.0/21 e o segundo é o primeiro, mais 8 x /24: 168.66.8.0/21. Temos, então, a primeira divisão:

Divindindo o /20 em 2 x /21

Vamos ao primeiro bloco /21 e dividí-lo em dois blocos /22. Um /22 possui 4 x /24, e continuar sucessivamente até /32, sempre focando no primeiro bloco da sequência. Então, o resultado final será:

Divindo o primeiro bloco /21 até 2 x /30

Para melhorar a visibilidade, sem uso de qualquer ferramenta:

A aparência é de uma flecha…

Respostas a questões úteis

  • A Internet fica sabendo que o bloco 168.66.0.0/20 é seu, através do anúncio deste bloco via o protoloco BGP (Border Gateway Protocol).
  • Você pode anunciar o bloco /20 inteiro ou fazê-lo em blocos menores (i.e., prefixos maiores). A Internet, quando enviar um pacote para um de seus IPsv4, a entrada será por onde o anúncio de prefixos maiores foram feitos.
  • O maior prefixo aceitável para anúncio é o /24. Você até pode tentar anunciar blocos com prefixos maiores, mas as boas práticas recomendam que anúncios de prefixos maiores do que /24 sejam bloqueados.
  • Falando em boas práticas, vale a pena ver o Mutually Agreed Norms for Routing Security (MANRS => https://www.manrs.org), uma iniciativa da Internet Society (https://www.internetsociety.org).
  • Cada bloco tem dois IPsv4 reservados: o primeiro IPv4 do bloco é aquele que identifica a rede e, o último bloco reservado para o broadcast.
  • Se você precisa entregar, por exemplo, 497 IPsv4 para seus clientes precisará de um bloco /23 ou dois blocos /24. Se os blocos /24 forem contíguos, ótimo pois eles representam um /23 e perderá somente dois IPsv4. Se os dois /24 não forem contíguos perderá quatro IPsv4! Planejar sua divisão de blocos é uma tarefa essencial, portanto!
  • Claro que terá de documentar a divisão de seu bloco IPv4 com seus respectivos destinatários. Existem diversas aplicações para lhe ajudar nisto, como uma planilha, por exemplo.
  • Usar o /24 para pensar na divisão dos blocos foi uma estratégia baseada no fato de que em cada uma das quatro divisões da representação decimal do IPv4 pode-se fazer operações aritméticas, no limite de 0 a 255. Mas, podemos fazer operações aritméticas sobre todo o IPv4, se o transformamos em um número inteiro. Por exemplo, o IPv4 168.66.10.123 é representado pelo inteiro 2.822.900.347. As operações aritméticas devem estar no limite de 0 (0.0.0.0) a ‭4,294,967.295‬ (255.255.255.255). Existem diversas ferramentas que ajudam nas tarefas de conversões. O app DeadBeef é uma ótima opção, como mostra a figura abaixo:
Calculadora DeadBeef
  • O /24 ajuda bastante. Suponha o bloco 168.66.128.0/21, que algumas vezes é apresentado como 168.66.128/21. Este bloco tem 8 x /24. O primeiro é 168.66.128/24. o segundo é 168.66.129/24, o terceiro é 168.66.130/24, …, o oitavo é 168.66.135/24.
Categories: IPv4, TCP/IP
  1. No comments yet.
  1. No trackbacks yet.

Leave a comment