Escolar Documentos
Profissional Documentos
Cultura Documentos
Mascara Rede e Seus Calculos
Mascara Rede e Seus Calculos
Mesmo aqueles que não são familiarizados com redes, número IP, já se
depararam com este item de configuração: máscara de rede.
Se você é do tipo que sente arrepios quando ouve falar de operações bit a
bit, como AND, OR ou XOR, prepare-se: as máscaras de rede tem tudo a
ver com escovação de bits. Leitura não recomendada para alérgicos
binários.
Esta frase soa estranha, mas vou explicar o seu contexto: sempre uma
máquina conversa com outra ela usa o endereço de enlace dela. Sim, enlace
(referência ao modelo TCP/IP de quatro camadas, não o OSI)!
Mas e quando o meu destino não está na mesma rede que eu e não posso
colocar o MAC de destino no pacote? É aí que entra o que se chama de
roteamento IP.
Analisando o número IP do destino minha máquina verifica que precisa
repassá-lo ao gateway, pois o destino não é local. O gateway, por sua vez,
compara o Ip de destino com sua tabela de rotas para determinar para onde
o pacote vai agora, e assim sucessivamente até que o pacote chegue na
rede local do destino, onde finalmente o último gateway irá enviar o pacote
para o "MAC ADDRESS do destino". Cada etapa do roteamento envolve o
MAC address do gateway de saída (este artigo é uma introdução e procura
descrever apenas as máscaras e não as tarefas de um roteador).
Costumo aplicar em aula a seguinte analogia: como o CEP dos correios. Ele
não serve para determinar a entrega, pois a carta será entregue para a Rua
e número de uma determinada cidade. Serve apenas para roteamento, pois
analisando o número sabe-se o que fazer com ele. Se estou no RS e o CEP
não começa com o dígito 9, então o destino não é RS, pois "9" no início do
CEP determina que é algum lugar no RS.
Logo, entendam o contexto quando digo que o número IP não serve para
que uma máquina se comunique com outra. Quero dizer que a comunicação
é sempre de endereço MAC para endereço MAC e que o número IP serve
para determinar o próximo passo de roteamento (esta descrição está
incompleta e focada ao objetivo deste artigo. Entender bem a participação
dos números IP em uma comunicação envolve compreender a tarefa de
cada uma das quatro camadas do modelo TCP/IP. Quem sabe em um
próximo artigo?).
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.
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:
Com isto cada rede pode ter até 256 ips e muitas redes deste tipo existiram
(em torno de 2 milhões).
OK, certo. Mas para que servia esta divisão por classes, que REPITO, não se
usa mais?
Sem dúvida uma forma de roteamento muito otimizada, tanto que foi
ressuscitada no Ipv6 (a idéia, não o modelo de classes). Só que esta técnica
amenizou o trabalho dos roteadores que sem muito esforço determinavam o
que fazer com o pacote, mas trouxe um gravíssimo problema: a falta de
números IPs.
O fato é que uma faixa Classe C possibilita apenas 256 ips, o que é pouco
para a maioria das instituições que desejam entrar na Internet. Já um
classe A com seus 16 milhões de ips é muito. Logo a preferida da torcida foi
a classe B, que rapidamente esgotou-se.
Aliado a este fato, imagine uma instituição que tinha 300 máquinas para
por na Internet. Um Classe C não lhe serve. Logo, ele adquire um classe B
(se ainda houver). Só que com suas míseras 300 máquinas e um classe B
que pode ter 65536 máquinas, ele estaria desperdiçando pouco mais de 65
mil endereços ips!!! Imagine uma empresa que adquiriu um Classe A que
permite 16 milhões de ips!
Não precisa ser muito esperto para perceber que isto rapidamente gerou
um caos, pois rapidamente esgotou-se os números de ips disponíveis ao
passo que se tinha um imenso e lastimável desperdício dos mesmos, mas
era o efeito colateral da classificação por classes.
Classe CIDR
Como o nome sugere, roteamento livre de classe. Adeus, bye bye classes.
Foi uma furada, um tiro no pé. Em 1993 este padrão substitui as classes.
Antes a própria definição de Classe dizia quantos bits era rede e quantos
eram host. O que o CIDR fez foi libertar-se desta restrição: não importa de
qual classe o IP é, o número de bits de rede não é fixo. Posso ter agora um
IP "CLASSE A", mas usando não sete, mas 24 bits para rede e os demais 8
para host, como seria um classe C.
Uma sutil mudança, mas com impactos profundos: o roteador já não sabe,
através da análise do IP, quantos bits deve analisar para determinar a rede
de destino. Adeus otimização dos cálculos. Roteador vai sofrer um pouco
mais com cálculos mais onerosos. Ganha-se em um lado, perde-se em
outro.
A pergunta é: se agora o número de bits que determinam qual rede sou não
é fixo, como era no modelo por classes, como sei quantos bits devo usar?
Resposta: não sei, preciso sempre ter esta informação. Neste modelo cada
máquina precisa saber que ip eu sou e deste meu IP quantos bits são
usados para rede e quantos para host.
O /24 determina que são usados os primeiros 24 bits para rede, e que os
últimos 8 (o que sobrou) são para host. Cada definição de uma rede IP
possui ainda dois números especiais, que não podem ser usados:
a definição do número da rede;
e a definição do número de broadcast.
Isto já era assim mesmo no modelo de classes, mas naquela época estes
números eram fixos, pois o número de bits para rede era amarrado a qual
classe ele pertencia. Agora não, agora estes dois números precisam ser
calculados!
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:
Agora observe esta fato: se eu fosse ler de forma decimal estes bits que
usei para o AND, que número eu tenho?
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):
Cada máquina sabe seu IP, sua máscara e o IP do gateway. A máquina não
sabe as máscaras e os ips de outras máquinas, apenas a sua. Logo, ao
necessitar comunicar-se com uma máquina cujo o IP é X.Y.K.Z a máquina
não tem como saber qual rede este IP é, mas tem como saber se é a
mesma rede sua. Isto é suficiente para ela saber se pode enviar
diretamente (mesma rede) ou se precisa acionar o gateway para jogar para
fora (eu, estando no RS, posso não saber onde é um CEP que começa com
"4", mas sei que não é RS, pois estou no RS e aqui ele começa com "9".
Basta para eu enviar para outra agência de correio).
Alguns exemplos:
Ela chega a conclusão que pertence a rede 10.1.0.0. Ela faz o mesmo com o
IP de destino, aplicando um AND do IP de destino COM A SUA MÁSCARA
(única que ela tem):
(10) (1) (0) (120)
0000 1010 0000 0001 0000 0000 0111 1000
1111 1111 1111 1111 1111 1111 1000 0000 (25 bits em 1)
Se a máquina A estiver com a máscara errada (um /24 quando deveria ser
um /25) ela pode ficar isolada de parte da rede, por achar que o destino é
rede local quando não é (deveria ter usado o gateway). Da mesma forma se
ela é um /25 quando deveria ser um /24 poderá usar o gateway quando
não era necessário. A correta configuração de máscara é extremamente
importante.
Conclusão
Por envolver operações binárias e conceitos de redes, este artigo pode não
ter sido do interesse de muitos leitores. Mas tenho observado nos fóruns
que muita gente não sabe o que são máscaras de rede e se perdem quando
este conceito é empregado, por exemplo, em configurações de firewall.
Ainda resta dizer que o uso de máscaras de forma apropriada é usado para
subdividir uma faixa de ips públicos que determinada instituição recebeu em
várias redes. Se eu tenho um /24, sei que posso montar uma rede com até
254 máquinas (sim, 254, pois tem o endereço de rede e de broadcast que
não posso usar em máquina). Uma rede! Mas se eu quero DUAS, cada uma
com 100 máquinas, posso quebrar este /24 em dois /25. Ou em quatro
/26... Ou ainda em três redes, uma /25 e duas outras /26.
Claro que para isto ai tem que ir mais a fundo no conceito de máscaras,
pois pode não parecer, mas este artigo procurou fornecer apenas uma
introdução ao assunto.
Referências
Este conceito de máscaras é bastante técnico e na Internet geralmente se
encontram simplificações populares, como receitas de bolo. Nada como
bons livros, principalmente os que descrevem o protocolo TCP/IP ou direto
na veia, lendo as RFCs. Não seria ético da minha parte tornar público aqui
minha preferência por este ou aquele livro, em detrimento de outro, mas se
alguém se interessar pelo assunto, envie-me um email que terei maior
prazer em responder.