255.255.255.0: A matemática das máscaras de rede

Você sabe o que significam matematicamente as máscaras de rede? Um /24, /25? Um 255.255.128.0 define o quê? No iptables um 10.1.0.0/28 tem qual finalidade? E o que isto tem a ver com as classes de IPs? Para quem não for alérgico à escovação de bits...

[ Hits: 582.982 ]

Por: Elgio Schlemer em 28/11/2007 | Blog: https://profelgio.duckdns.org/~elgio


Cálculo do número de rede e de broadcast



Define-se como número de rede o primeiro endereço da faixa e como número de broadcast o último. Se tivermos, por exemplo, o IP 10.1.0.5/24 (24 bits para rede):

   (10)       (1)        (0)        (5)
0000 1010  0000 0001  0000 0000  0000 0101
<------  24 bits para rede ----->   <- HOST->

O número de rede seria 00001010 00000001 00000000 00000000, ou 10.1.0.0, primeiro IP que seria para host da seqüência.

O número de broadcast seria 0001010 00000001 00000000 11111111, ou 10.1.0.255, último número de host permitido.

Mas como uma máquina calcula este número?

Usando operações binárias, pois elas são rápidas e eficientes. Para calcular o número da rede, faz-se um AND bit a bit do número IP com os números destinados a rede em 1. Se um IP é /24, quer dizer que devem ser usados 24 bits para rede, restando oito para host. Para calcular a rede faz-se um AND com os primeiros 24 bits em 1 e os demais em zero:

   (10)       (1)        (0)        (5)
0000 1010  0000 0001  0000 0000  0000 0101
1111 1111  1111 1111  1111 1111  0000 0000 (24 bits em 1)
0000 1010  0000 0001  0000 0000  0000 0000 (resposta do AND)

Ao realizar este AND bit a bit, chega-se ao número 10.1.0.0 (número da rede).

Agora observe esta fato: se eu fosse ler de forma decimal estes bits que usei para o AND, que número eu tenho?

1111 1111   1111 1111   1111 1111   0000 0000
   (255)       (255)      (255)        (0)

255.255.255.0 lhe soa mais familiar? Por isto o nome “máscara de bits” pois é uma máscara que será usada em uma operação AND para determinar qual a rede.

Para determinar qual é o meu endereço de broadcast, se faz um OR bit a bit com a máscara complementada (invertida, números destinados a rede em ZERO):

   (10)       (1)        (0)        (5)
0000 1010  0000 0001  0000 0000  0000 0101
0000 0000  0000 0000  0000 0000  1111 1111 (24 bits em 0)
0000 1010  0000 0001  0000 0000  1111 1111 (resposta do OR)

Sendo agora um OR, o resultado matemático disto será 10.1.0.255.

É isto que acontece nos bastidores, envolvendo a máscara para determinar que rede sou e qual o meu endereço de broadcast. Uma máscara equívoca pode significar o isolamento de uma máquina do resto do mundo, pois ela pode não rotear pacotes corretamente, não usando o gateway quando deveria, por exemplo.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Tudo é uma questão de roteamento
   3. Seu IP é Classe A, Classe B ou Classe C?
   4. Roteamento baseado em Classes de IP
   5. Classe CIDR
   6. Cálculo do número de rede e de broadcast
   7. Roteamento baseado em máscara de rede
   8. Conclusão
Outros artigos deste autor

Armazenamento de senhas no Linux

Túneis cifrados com SSH

Estrutura do Iptables

Cuidado com números em Ponto Flutuante

Fundamentos da criptografia assimétrica

Leitura recomendada

Internet no Linux através de celular HTC TYTN II

Instalando o Apache + PHP + MySQL no Slackware

Instalação do Apache 2 no OpenSuSE 10.2

Conceitos de Acesso Remoto

Hugo - Gerador de Site Estático

  
Comentários
[1] Comentário enviado por elgio em 28/11/2007 - 10:33h

O endereço CORRETO da página que calcula a máscara é:
http://gravatai.ulbra.tche.br/~elgio/calcmasc.php

Mas coloquei um redir no endereço publicado para não haver problemas.

[2] Comentário enviado por m4tri_x em 28/11/2007 - 10:37h

Olá, agradeço antes mesmo de ler completamente o artigo, tive uma prova sobre isso na faculdade ontem, eu não tinha encontrado nenhum artigo interessante como esse, vlw kra, continua assim...
[]´s

[3] Comentário enviado por julianopiedade em 28/11/2007 - 12:31h

Muito bom o artigo.
É bom quando encontramos um artigo que vale à pena investir um tempo pra ler.

Parabéns, e se possível, continue a série, com outros elementos de rede. Terei prazer em ler.

Att.
Juliano Soares

[4] Comentário enviado por scoob em 28/11/2007 - 12:43h

Mais um excelente artigo!! Parabéns, Elgio

[5] Comentário enviado por TSM em 28/11/2007 - 14:13h

Muito bom cara, execelente artigo, valeu a pena ter lido seu artigo.

[6] Comentário enviado por capitainkurn em 28/11/2007 - 14:41h

Ótimo artigo!

[7] Comentário enviado por Iron Fist em 28/11/2007 - 15:26h

Elgio, você já ouviu falar em ips não roteaveis?

Eu acredito que os ips não roteaveis sejam os da família de redes 10.0.0.0, 127.0.0.1 e 192.168.0.0.
sabe onde eu posso achar alguma informação "segura" (isto é, consistente) sobre elas?

Ah, e uma pergunta. Eu tive algumas aulas de redes, mas depois de ler seu artigo, fiquei com uma dúvida.
Por acaso estes ips pertencem à classe A B ou C?
10.0.0.0 = Classe A
127.0.0.0 = Classe B
192.168.0.0 = Classe C?

É possível também a mascara permitir que um ip seja transformado em uma família de IP de Classe A? Por exemplo:
192.0.0.0/8 é possível?

Desde já, agradeço pela atenção.

PS: Artigo muito bom!
Parabéns!

[8] Comentário enviado por elgio em 28/11/2007 - 15:47h

"Não roteáveis" é um termo muito ruim, não deve ser usado. Quem diz "não roteáveis" quer dizer "não válidos na Internet", ou seja, roteadores bem configurados da Internet NÃO IRÃO ROTEÁ-LOS, mas não que o Ip tem um "problema no seu DNA" que não permite serem roteados... :-D

O termo correto é Ips PRIVADOS, para uso somente interno, INTRANET.
Os ips "válidos" na Internet são chamados ips Públicos.

Os Privados são:

10.0.0.0/8: isto abrange desde 10.0.0.0 até 10.255.255.255. O 9.X.X.X e o 11.X.X.X são PÚBLICOS, ou seja, possuem DONO.

172.16.0.0/12: isto vai de 172.16.0.0 até 172.31.255.255. Erro COMUM: o 172.15. e o 172.32. SÃO PÚBLICOS!!

192.168.0.0/16: isto vai de 192.0.0.0 até 192.168.255.255

Além destes ips PRIVADOS tem os reservados e que não podem ser usados. O 0.0.0.0 por exemplo está reservado (usado como origem em requizições DHCP por exemplo). O 127.X.X.X é para localhost e assim vai com outros.

Quanto a 192.0.0.0/8, CASUALMENTE este exemplo invade a área de ips PÜBLICOS e deve ser evitado. NÃO que não funcione, veja bem... mas com esta máscara (/8) estarias definindo uma rede que começa em 192.0.0.0 (que não é PRIVADA) e termina em 192.255.255.255 (que também não é PRIVADA).

No mais, liberte-se das classes. Só porque um IP é classe A não quer dizer que tu não possa usar um /24 nele!

[9] Comentário enviado por elgio em 28/11/2007 - 16:04h

Em tempo: quem define estas faixas é o IANA:

http://www.iana.org/

Lá é o lugar "quente" para ver atribuições de ips e portas.
Sobre os ips, mais especificamente:
http://www.iana.org/assignments/ipv4-address-space

Veja que o Iana diz as GRANDES alocações.
para ver como cada país redistribuiu, ai tem que se ir no gestor de ips de cada um dos países. (eles só dizem de quem é o /8)

Veja o exemplo:
010/8 Jun 95 IANA - Private Use See [RFC1918]

Tem uma RFC que define o seu uso!

Veja que tem muito "Varius Registers" inclusive para alguns privados.

[10] Comentário enviado por kalib em 28/11/2007 - 16:30h

Parabéns Elgio...excelente artigo...além de ser um conteúdo de grande importância para qualquer profissional da área de redes, foi abordado com qualidade.
Parabéns. ;]

[11] Comentário enviado por isaque_alves em 28/11/2007 - 16:54h

Excelente. Um dos melhores artigos que já li aqui no vo. vai pra lista de favoritos...

[12] Comentário enviado por cassimirinho em 28/11/2007 - 17:20h

Parabéns, me fez relembrar os dias de aula de redes I e II.

[13] Comentário enviado por FelipeAbella em 29/11/2007 - 11:33h

Ótimo artigo.

[14] Comentário enviado por ChilesIT em 29/11/2007 - 13:39h

Isso sim é um artigo pra se guardar nos favoritos !!!

[15] Comentário enviado por pink em 29/11/2007 - 14:53h

10! Excelente artigo, meus parabéns.... já foi para os favoritos... rsrs
Um grande abraço, Michele

[16] Comentário enviado por forkd em 29/11/2007 - 19:21h

Bom artigo!
Em 2005 eu fiz um programa pra exibir os dados de um endereço IP e sua máscara (este último é opcional). A primeira versão foi feita em C, mas depois eu refiz o código em Java, como um applet. Os códigos-fonte estão na minha página de scripts do VOL e a versão em Java pode ser acessada a partir de www.freewebs.com/jlojunior (necessário JRE para executar).
Infelizmente eu não usei métodos muito eficientes para trabalhar com os dados passados (manipulação direta de bits), mas o funcionamento é perfeito.
Abraço!

[17] Comentário enviado por rodrigom em 30/11/2007 - 00:48h

Gostaria de entender assim de mascara, parabens...

[18] Comentário enviado por gersonraymond em 30/11/2007 - 08:10h

Maravilha de artigo !!! como é bom refrescar a memória com algo de tamanha importância, um grande abraço.

[19] Comentário enviado por royrocha em 30/11/2007 - 17:53h

Excelente artigo, aprendi muito!

[20] Comentário enviado por cytron em 14/02/2008 - 02:06h

Legal heim! Eis um artigo q pode ter 50 páginas que ainda não cansa de ler. Ficou muito bem escrito. Reaprendi bastante sobre máscaras. Estava tudo enferrujado kkkkk!!!

elgio... vou dar uma sugestão e aposto que a comunidade em peso vai apoiar, ou pelo menos quem passar por aqui:

Faça um novo artigo sobre máscaras, mas dessa vez um modo avançado, aprofundando mais nas entranhas do IP e seu roteamento. Não é todo mundo que domina com tanta naturalidade o assunto e escreve tão bem.

Vamos lá galera! Quem sabe ele se comove eheheheh!!!

Valeu elgio.

[21] Comentário enviado por elgio em 21/02/2008 - 09:56h

Me comover?

hehehehehe.

Idéia anotada.
Irei escrever assim que tiver um tempo extra.

Obrigado pelas sugestões.

[22] Comentário enviado por marciadepaula em 27/02/2008 - 19:57h

apoio a idéia do rapaz acima: artigo sobre máscaras - modo avançado. Já!

=)

M.

[23] Comentário enviado por agl77 em 26/03/2008 - 18:24h

eh eu precisava mesmo do cauculo das mascaras, muito bom artigo, parabéns!

[24] Comentário enviado por cogumas em 24/04/2008 - 12:02h

Parabenss !!!
Exelente Artigo!!
Muita gente precisa saber disso, eu tambem !!! kkkkkk !!!
abraçoss !!

[25] Comentário enviado por kassilenevrb em 27/04/2008 - 14:50h

Adorei os artigos, mas tire-me uma duvida???

Qual o proposito do NAT E do PAT???

..b.jussss...desde ja agradeço

[26] Comentário enviado por carlosdias98 em 29/10/2008 - 00:12h

Cara que aula, parabéns !!!

[27] Comentário enviado por edipo.magrelo em 12/11/2008 - 14:54h

Ótimo Artigo...estou quebrando a cabeça com isso..por isso vamos logo rumo ao IPv6!!!

[28] Comentário enviado por Osirix em 28/11/2008 - 23:37h

Otimo artigoo !!!!!!!!!!!!!

ja quebrei muita cabeça com isso ...

mais esse artigo tirou todas as minhas duvidas !!!!

[29] Comentário enviado por anarco2002 em 07/12/2008 - 10:50h

Ótimo artigo, parabéns!
Gostaria de saber o porquê de se usar uma máscara /16 numa rede com ip classe A... Exemplo: 10.45.0.0/16..
Grato,
Antonio A. Correia

[30] Comentário enviado por agl77 em 12/12/2008 - 10:10h

Meus parabéns, ja tive aulas e aulas sobre isso, mas teu artigo matou todas elas

vlw
Andre George Lauer

[31] Comentário enviado por maran em 02/03/2009 - 14:25h

Muito bom Elgio, hoje consigo interpretar perfeitamente este seu artigo,
pois estou realizando um curso voltado a estes aspectos.
Este mundo de bits é muito louco, VLSM, subnetar as redes, dividir o que já esta dividido.
Muito facinante, e o melhor é você depois de conhecer um pouco deste mundo, é ir em uma empresa e perguntar para alguem, porque você usa 255.255.255.0
Ai a pessoa responde :

É o padrão!!

Além de que é por ai que começa a segurança de uma rede, alem de sua performance, uma rede bem subnetada, pode evitar inasões, alem de que ganha em potencial, pois o broadcast é menor, assim consiguimos um menor delay!

Você poderia mostrar alguns outros exemplos um pouco diferentes na parte onde , explicou esta parte de /24 /28 /30, enfim!
Alguns exemplos de como é possivel descobrir qual é o host 900 da tal rede e em qual subrede o mesmo se encontra, enfim, para mostrar pra galera o quão longe podemos ir neste mundo.

Show de Bola, abraços

[32] Comentário enviado por jrassuncao em 23/03/2009 - 18:22h

Gostei muito do seu artigo, 100%
Parabens
Sergio Junior

[33] Comentário enviado por xerxeslins em 24/03/2009 - 21:40h

Gostei muito do artigo. Ajudou-me a entender um pouco mais sobre máscaras de rede.

Porém, fiquei com uma dúvida. Quebrei a cabeça tentando resolver, mas não consegui.

minha rede local possui um roteador com o seguinte IP:

192.168.2.1.

e tem 4 máquinas que recebem os seguintes IPs:

192.168.2.2
192.168.2.3
192.168.2.4
192.168.2.5

Como seria a notação da máscara da minha rede, supondo que eu não poderia acrescentar outras máquinas? (ou seja, não poderia existir o 192.168.2.6).

Se eu disser que é 192.168.2.0/24

eu estarei dizendo que o último octeto está livre para determinar vários hosts (mais de 5 inclusive), mas o que eu deveria colocar depois da barra ao invés de 24, se o intervalo máximo de hosts fosse de 192.168.2.1 até 192.168.2.5 apenas?

Obrigado


[34] Comentário enviado por elgio em 24/03/2009 - 22:11h

Olá.

Bem, as máscaras de rede permitem dividir uma rede apenas em potência de 2. Não tem como definires uma máscara que lhe dê 3 máquinas, ou 5.

No seu caso específico, se usares um /29:

192.168.2.0/29
Rede: 192.168.2.0
Broadcast: 192.168.2.7

Ips válidos: de 192.168.2.1 até 192.168.2.6

192.168.2.8 já seria fora da rede!

De 192.168.2.1 até 192.168.2.5 NÃO TEM COMO.
Assim como se quisesse ter 9 máquinas (de 192.168.2.1 até 192.168.2.9) terias que puxar para um /28 criando uma rede com 16 ips!! 8, 16, 32, 64, 128, 256,... sempre potência de 2.

[35] Comentário enviado por cytron em 24/03/2009 - 22:20h

Ou seja.... esqueça números ímpares! ;)

Quem quiser é só brincar nesta calculadora IP online:

http://www.subnet-calculator.com/

[36] Comentário enviado por xerxeslins em 24/03/2009 - 22:21h

muito obrigado pela resposta!

[37] Comentário enviado por unixgeek em 15/04/2009 - 17:32h

Existe a ferramenta "ipcalc" que provavelmente está nos repositórios de sua distribuição. Caso não esteja, http://jodies.de/ipcalc/

Meus 2 centavos.

[38] Comentário enviado por franciscosouza em 16/04/2009 - 16:11h

Parabéns pelo artigo, não li inteiro. Li apenas algumas partes.

Parabéns por enfatizar que não é a máscara que define a classe, como as pessoas pensam.

[39] Comentário enviado por hunz em 06/05/2009 - 13:41h

Achei muito bom o artigo, eu sou um desses que sempre dizia que a máscara de rede era 255.255.255.0 porque era padrão! rs...

Só não entendi em "como" a máscara pode ajudar a otimizar a distribuição de pacotes.

O que ele faz não é um IF/ELSE (mais ou menos)?
Se for da minha rede, envio direto pro endereço MAC, senão, envio pra fora...

Parabéns pelo artigo.

Att,
Thiago.

[40] Comentário enviado por blueshark em 12/05/2009 - 11:03h

Otimo artigo

[41] Comentário enviado por cl2b2r em 16/03/2010 - 13:54h

Excelente! Me fez relembrar muitas coisas que não usamos no dia-a-dia. Parabéns pelo artigo!

[42] Comentário enviado por eletrorei em 17/04/2010 - 18:46h

parabens exelente

[43] Comentário enviado por spyke em 10/01/2012 - 16:42h

amigo, estudei 1 semestre disso na escola, e demorei muito mais tempo pra aprender o que aprendi aqui, obrigado por essa aula, e continue a fazer artigos desse nível.

[44] Comentário enviado por piratex em 13/02/2012 - 02:22h

Excelênte !! Estava com umas dúvidas, já faz 3 anos que me formei em Analise de Sistemas, lá paguei Redes básico e avançado, mas já havia esquecido de alguns conceitos e seu artigo me fez relembrar tudo =D Achei melhor inclusive do que abrir o Kurose ou o Tanenbaum !!! Muito obrigado !!

[45] Comentário enviado por ramon_01 em 01/08/2013 - 09:55h

Quando se deseja comunicar com uma máquina em outra rede e o gateway destino possui 3 pcs com ip em NAT! como posso enviar algo pro pc destino??

[46] Comentário enviado por cytron em 01/08/2013 - 12:28h


[45] Comentário enviado por z3r0_hide em 01/08/2013 - 09:55h:

Quando se deseja comunicar com uma máquina em outra rede e o gateway destino possui 3 pcs com ip em NAT! como posso enviar algo pro pc destino??


Usando roteamento avançado. Existem várias maneiras, pode ser baseado no source ou redirecionamento de portas por exemplo.

Veja aqui no VOL sobre IPTABLES REDIRECT ou dport.

[47] Comentário enviado por guasca em 13/12/2013 - 13:51h

Baaaah, olhei por cima aqui no trabalho, este artigo será foco dos estudos no final de semana!!!!!

[48] Comentário enviado por MAPOGOS em 10/02/2014 - 13:52h

ótimo artigo, tem que term um tempo com muita atenção para ler isto ja que estou no horário de trabalho.
Minha dúvida é os cálculos de maskarades e gateway e Ip com por exemplo 192.168.0.1/24...
Eu esqueci esta aula.
Como posso fazer estes cálculos

[49] Comentário enviado por MAPOGOS em 04/04/2014 - 23:48h

legal seu artigo terei de revisar e estudar isso porque estou na duvida ...

[50] Comentário enviado por ricardoifc em 27/06/2014 - 10:42h

Muito bom......... bem mastigadinho hehehehe, gostaria de deixar como dica para um próximo assunto o IPV6, até mais abraço.

[51] Comentário enviado por z3br0id3 em 15/10/2014 - 14:39h

Uau...ótimo artigo ! :D


[52] Comentário enviado por paulojhon em 03/12/2014 - 14:47h

Artigo Muito bom!

[53] Comentário enviado por MAPOGOS em 27/04/2015 - 13:12h


Eu ja li sobre esta escovação de bits muito interessante.
E tenho um Modem/Hub/Roterador com Ip 192.168.0.1 e outro 10.0.0.1.
Esta Classe de rede 192 é uma e 10 ´outra classe.
Não podem dar conflitos?

[54] Comentário enviado por removido em 26/03/2017 - 23:26h


Muito bom o artigo.

Questão para os alunos:

Dada uma rede 200.200.200.0, calcule as máscaras de forma que sejam criadas sub-redes com 10 hosts por sub-rede. Mostre as possíveis sub-redes criadas e seus respectivos ranges de endereços (sub-rede, broadcast e hosts).

Use papel e lápis, não use o comando ipcalc ou site.

[55] Comentário enviado por brunobill em 17/05/2017 - 15:44h

A Sub-rede da minha distribuidora de internet está assim 255.255.255.255 . é está correto ?

[56] Comentário enviado por Hgfs em 30/01/2018 - 15:40h

Excelente artigo. Parabéns!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts