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.978 ]

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


Seu IP é Classe A, Classe B ou Classe C?



Na verdade isto já não importa mais para efeitos de roteamento, mas até 1993 era a forma usada para realizar roteamento IP.

Nesta técnica os ips foram catalogados em Classes, para determinar o roteamento. O objetivo do roteamento por classes era disponibilizar uma forma muito rápida (matematicamente) dos roteadores calcularem o destino. Basicamente determinou-se que dos 32 bits de um número IP, parte dele (alguns bits iniciais) diriam qual a rede de destino e outra parte dele (bits finais) diriam qual o número do host dentro desta rede. Se apenas 8 bits iniciais disserem qual rede é, um roteador só precisa analisar estes 8 bits para determinar o destino e não todos os 32. Sempre visando o menor custo, ainda mais em uma época onde o hardware não é o que temos hoje!

A pergunta importante é: quantos bits dizem qual rede é e quantos bits dizem qual host? Nesta decisão é que entraram as classes:

Classe A: sempre que um número IP começar com 0, é classe A. Genericamente pode-se dizer que um classe A possui o formato:

0XXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX


Observe o quanto isto facilitava (não se usa mais ISTO, lembre-se!) as operações de roteamento: se eu sou um roteador classe A e o primeiro bit do IP que devo rotear NÃO FOR ZERO, pronto, pra que olhar os demais bits se já sei que o destino não é aqui? (novamente o CEP: pra que olhar os demais dígitos do CEP se o 9 me diz que é RS e eu sou uma agência de correios de SP?)

Como o primeiro bit será sempre ZERO, isto obriga o primeiro octeto do IP a ser 0XXXX XXXX, o que restringe as possibilidades deste octeto a ser de 0 a 127. Por isto que popularmente se diz que um IP Classe A é o que vai de 0.0.0.0 até 127.255.255.255. Mas isto no popular, pois os roteadores não fazem if (if octeto UM maior que zero e menor que 127, então é classe A), eles fazem operações bit a bit! Se primeiro bit for ZERO, é um classe A.

Sendo um Classe A (primeiro bit em ZERO), os próximos SETE bits dizem qual é a rede e os demais qual o HOST dentro desta rede:

0RRRRRRR HHHHHHHH HHHHHHHH HHHHHHHH


Veja, a definição da classe determina a quantidade de bits para rede. No caso de um classe A, tem-se sete bits para rede e 24 para host. Quem adquiria uma faixa Classe A para si (grandes empresas) podia suprir até 2^24 hosts, algo próximo de 16 milhões de máquinas. Coisa para poucos, pois existiam apenas 127 redes deste tipo no mundo (novamente, estou simplificando para não fugir do foco, embora os números não sejam exatamente estes por conta de reservas de ips, números de rede e broadcast).

Classe B: sempre que um número IP começar com 10, é classe B e sendo desta classe, os próximos 14 bits é que dizem que rede é, sobrando os últimos 16 para determinar qual a host:

10RRRRRR RRRRRRRR HHHHHHHH HHHHHHHH


Com 16 bits para host, cada rede poderia ter até 65536 hosts (simplificando!!) e um total de 16384 redes classe B existem (2 elevado na 14).

Classe C: sempre que um número IP começar com 110, é classe C e sendo desta classe, os próximos 21 bits é que dizem que rede é, sobrando os últimos 8 para determinar qual a host:

110RRRRR RRRRRRRR RRRRRRR HHHHHHHH


Com isto cada rede pode ter até 256 ips e muitas redes deste tipo existiram (em torno de 2 milhões).

Ainda existe o Classe D (começa com 1110) reservado para tráfego multicast (ainda usado) e o Classe E (1111) reservado para uso futuro. Como para uso normal, unicast, tem-se apenas o classe A, B e C, o último ip válido ainda hoje é o que começa com 223 (224 já é classe D).

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

A mágica do dc

Mecanismo de firewall e seus conceitos

Túneis cifrados com SSH

Guerra Infinita, uma análise da Ciência da Computação

Iptables protege contra SYN FLOOD?

Leitura recomendada

1º Fórum da Internet no Brasil

SFTP Server com SSH, Chroot e Rsyslog

Compartilhando a internet com apenas uma placa de rede e um hub/switch

Instalando o Gaim + Gaim Encryption no Slackware 10

DownThemAll: O melhor gerenciador de downloads no Linux

  
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