Вы находитесь на странице: 1из 8

255.255.255.

0: A matemtica das mscaras de rede [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7477

255.255.255.0: A matemtica das mscaras de rede


Autor: Elgio Schlemer <elgio.schlemer at gmail.com> Data: 28/11/2007 Introduo Mesmo aqueles que no so familiarizados com redes, nmero IP, j se depararam com este item de configurao: mscara de rede. Sem dvida que a mais usada, mais conhecida, a mscara 255.255.255.0, tanto que muitos nem se quer sabem que ela pode ser outro valor e no apenas este. Poucos tambm sabem o que este nmero "mgico" significa, o que ele representa e quo importante ele para uma rede. E mais, o quo desastroso pode ser se ele estiver errado, no em conformidade com a real configurao de uma rede local. Neste artigo procuro descrever tecnicamente o princpio existente na composio da mscara de rede, o que ele representa e para que serve. Fao um comparativo com o antigo roteamento baseado em Classes de IP e porque isto ele abandonado. Se voc do tipo que sente arrepios quando ouve falar de operaes bit a bit, como AND, OR ou XOR, prepare-se: as mscaras de rede tem tudo a ver com escovao de bits. Leitura no recomendada para alrgicos binrios.

Tudo uma questo de roteamento Voc sabia que um nmero IP no serve para realizar a comunicao entre uma mquina e outra? Esta frase soa estranha, mas vou explicar o seu contexto: sempre uma mquina conversa com outra ela usa o endereo de enlace dela. Sim, enlace (referncia ao modelo TCP/IP de quatro camadas, no o OSI)! Considerando a rede Ethernet, com a atual Fast Ethernet (100Mbps) como sua maior representante, os endereos de hardware das placas de rede so constitudos de 48 bits (sendo que os primeiros 24 dizem qual o fabricante da placa de rede). o nmero em HEXA que voc v quando executa um ifconfig, algo como 00:50:56:C0:00:06. Claro que todo mundo que j configurou um servidor DHCP sabe bem o que este nmero. Pois bem, a comunicao realizada colocando-se o endereo de hardware do destino no pacote, determinando que este pacote deve ser entregue a mquina cujo endereo de placa de rede o 00:50:56:C0:00:06. O problema que isto s funciona em rede local, pois a origem precisa antecipadamente conhecer o MAC ADDRESS do destino e para isto que serve o protocolo ARP (que no irei descrever aqui). Mas e quando o meu destino no est na mesma rede que eu e no posso colocar o MAC de destino no pacote? a que entra o que se chama de roteamento IP. Analisando o nmero IP do destino minha mquina verifica que precisa repass-lo ao gateway, pois o

1 de 8

21/04/2013 04:19

255.255.255.0: A matemtica das mscaras de rede [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7477

destino no 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 sada (este artigo uma introduo e procura descrever apenas as mscaras e no as tarefas de um roteador). Costumo aplicar em aula a seguinte analogia: como o CEP dos correios. Ele no serve para determinar a entrega, pois a carta ser entregue para a Rua e nmero de uma determinada cidade. Serve apenas para roteamento, pois analisando o nmero sabe-se o que fazer com ele. Se estou no RS e o CEP no comea com o dgito 9, ento o destino no RS, pois "9" no incio do CEP determina que algum lugar no RS. Logo, entendam o contexto quando digo que o nmero IP no serve para que uma mquina se comunique com outra. Quero dizer que a comunicao sempre de endereo MAC para endereo MAC e que o nmero IP serve para determinar o prximo passo de roteamento (esta descrio est incompleta e focada ao objetivo deste artigo. Entender bem a participao dos nmeros IP em uma comunicao envolve compreender a tarefa de cada uma das quatro camadas do modelo TCP/IP. Quem sabe em um prximo artigo?). Resumindo: IP serve para rotear. A surge, evidentemente, a necessidade de que os nmeros IPS sejam organizados atravs de uma tcnica determinstica, que permita a qualquer um saber onde est o destino ou pelo menos, para que lado est. Como na analogia que fiz, o CEP tem esta funo, pois se o CEP comea com 9 Rio Grande do Sul e os demais dgitos do uma maior preciso sobre a cidade, bairro e at a rua. Com os nmeros IPs da verso 4 (IPv4) mais ou menos assim e a primeira organizao de IPs foi a organizao por classes.

Seu IP Classe A, Classe B ou Classe C? Na verdade isto j no importa mais para efeitos de roteamento, mas at 1993 era a forma usada para realizar roteamento IP. Nesta tcnica os ips foram catalogados em Classes, para determinar o roteamento. O objetivo do roteamento por classes era disponibilizar uma forma muito rpida (matematicamente) dos roteadores calcularem o destino. Basicamente determinou-se que dos 32 bits de um nmero IP, parte dele (alguns bits iniciais) diriam qual a rede de destino e outra parte dele (bits finais) diriam qual o nmero 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 no todos os 32. Sempre visando o menor custo, ainda mais em uma poca onde o hardware no o que temos hoje! A pergunta importante : quantos bits dizem qual rede e quantos bits dizem qual host? Nesta deciso que entraram as classes: Classe A: sempre que um nmero IP comear com 0, classe A. Genericamente pode-se dizer que um classe A possui o formato:
0XXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX

Observe o quanto isto facilitava (no se usa mais ISTO, lembre-se!) as operaes de roteamento: se eu sou um roteador classe A e o primeiro bit do IP que devo rotear NO FOR ZERO, pronto, pra que olhar os demais bits se j sei que o destino no aqui? (novamente o CEP: pra que olhar os demais dgitos do CEP

2 de 8

21/04/2013 04:19

255.255.255.0: A matemtica das mscaras de rede [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7477

se o 9 me diz que RS e eu sou uma agncia 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 no fazem if (if octeto UM maior que zero e menor que 127, ento classe A), eles fazem operaes bit a bit! Se primeiro bit for ZERO, um classe A. Sendo um Classe A (primeiro bit em ZERO), os prximos SETE bits dizem qual a rede e os demais qual o HOST dentro desta rede:
0RRRRRRR HHHHHHHH HHHHHHHH HHHHHHHH

Veja, a definio 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 prximo de 16 milhes de mquinas. Coisa para poucos, pois existiam apenas 127 redes deste tipo no mundo (novamente, estou simplificando para no fugir do foco, embora os nmeros no sejam exatamente estes por conta de reservas de ips, nmeros de rede e broadcast). Classe B: sempre que um nmero IP comear com 10, classe B e sendo desta classe, os prximos 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 nmero IP comear com 110, classe C e sendo desta classe, os prximos 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 milhes). Ainda existe o Classe D (comea com 1110) reservado para trfego 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 vlido ainda hoje o que comea com 223 (224 j classe D).

Roteamento baseado em Classes de IP OK, certo. Mas para que servia esta diviso por classes, que REPITO, no se usa mais? Como o nmero de bits, que determinam o que rede, variava, a Classe determinava quantos bits o roteador deve avaliar. Observe que o roteador precisa saber a rede de destino para determinar a quem ele envia, assim como uma agncia de correio precisa saber a cidade de destino. Assim, o roteador testava o primeiro bit, se for zero, Classe A, isola os prximos sete bits e joga em sua tabela de rotas. Mas se os primeiros bits fossem 10, ento so os prximos 14 bits que devem ser isolados e comparados com a tabela de rotas. Operaes binrias agilizam esta operao em muito.

3 de 8

21/04/2013 04:19

255.255.255.0: A matemtica das mscaras de rede [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7477

Sem dvida uma forma de roteamento muito otimizada, tanto que foi ressuscitada no Ipv6 (a idia, no o modelo de classes). S que esta tcnica amenizou o trabalho dos roteadores que sem muito esforo determinavam o que fazer com o pacote, mas trouxe um gravssimo problema: a falta de nmeros IPs. O fato que uma faixa Classe C possibilita apenas 256 ips, o que pouco para a maioria das instituies que desejam entrar na Internet. J um classe A com seus 16 milhes de ips muito. Logo a preferida da torcida foi a classe B, que rapidamente esgotou-se. Aliado a este fato, imagine uma instituio que tinha 300 mquinas para por na Internet. Um Classe C no lhe serve. Logo, ele adquire um classe B (se ainda houver). S que com suas mseras 300 mquinas e um classe B que pode ter 65536 mquinas, ele estaria desperdiando pouco mais de 65 mil endereos ips!!! Imagine uma empresa que adquiriu um Classe A que permite 16 milhes de ips! No precisa ser muito esperto para perceber que isto rapidamente gerou um caos, pois rapidamente esgotou-se os nmeros de ips disponveis ao passo que se tinha um imenso e lastimvel desperdcio dos mesmos, mas era o efeito colateral da classificao por classes. Algo precisou ser feito e a classificao CIDR reorganizou os ips e nela que existem as tais mscaras de rede.

Classe CIDR CIDR: Classless Inter-Domain Routing Como o nome sugere, roteamento livre de classe. Adeus, bye bye classes. Foi uma furada, um tiro no p. Em 1993 este padro substitui as classes. Lembre-se que o nmero IP verso 4 dividido em duas partes: alguns bits iniciais dizem qual rede ; outros bits finais dizem qual a mquina dentro desta rede. Antes a prpria definio de Classe dizia quantos bits era rede e quantos eram host. O que o CIDR fez foi libertar-se desta restrio: no importa de qual classe o IP , o nmero de bits de rede no fixo. Posso ter agora um IP "CLASSE A", mas usando no sete, mas 24 bits para rede e os demais 8 para host, como seria um classe C. Uma sutil mudana, mas com impactos profundos: o roteador j no sabe, atravs da anlise do IP, quantos bits deve analisar para determinar a rede de destino. Adeus otimizao dos clculos. Roteador vai sofrer um pouco mais com clculos mais onerosos. Ganha-se em um lado, perde-se em outro. A pergunta : se agora o nmero de bits que determinam qual rede sou no fixo, como era no modelo por classes, como sei quantos bits devo usar? Resposta: no sei, preciso sempre ter esta informao. Neste modelo cada mquina precisa saber que ip eu sou e deste meu IP quantos bits so usados para rede e quantos para host. Cada roteador igualmente tem em sua nova tabela de rotas a informao de rede de destino, quantos bits devem ser usados para rede, e para onde vai. Mais oneroso, como disse (e, claro, suscetvel a falhas). No modelo CIDR a informao de quantos bits so usados para rede simplesmente representada colocando-se este nmero ao lado do IP:

4 de 8

21/04/2013 04:19

255.255.255.0: A matemtica das mscaras de rede [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7477

Meu IP: 10.1.0.5/24 O /24 determina que so usados os primeiros 24 bits para rede, e que os ltimos 8 (o que sobrou) so para host. Cada definio de uma rede IP possui ainda dois nmeros especiais, que no podem ser usados: a definio do nmero da rede; e a definio do nmero de broadcast. Isto j era assim mesmo no modelo de classes, mas naquela poca estes nmeros eram fixos, pois o nmero de bits para rede era amarrado a qual classe ele pertencia. Agora no, agora estes dois nmeros precisam ser calculados!

Clculo do nmero de rede e de broadcast Define-se como nmero de rede o primeiro endereo da faixa e como nmero 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 nmero de rede seria 00001010 00000001 00000000 00000000, ou 10.1.0.0, primeiro IP que seria para host da seqncia. O nmero de broadcast seria 0001010 00000001 00000000 11111111, ou 10.1.0.255, ltimo nmero de host permitido. Mas como uma mquina calcula este nmero? Usando operaes binrias, pois elas so rpidas e eficientes. Para calcular o nmero da rede, faz-se um AND bit a bit do nmero IP com os nmeros 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) 0000 1010 1111 1111 0000 1010 (1) 0000 0001 1111 1111 0000 0001 (0) 0000 0000 1111 1111 0000 0000 (5) 0000 0101 0000 0000 (24 bits em 1) 0000 0000 (resposta do AND)

Ao realizar este AND bit a bit, chega-se ao nmero 10.1.0.0 (nmero da rede). Agora observe esta fato: se eu fosse ler de forma decimal estes bits que usei para o AND, que nmero eu tenho?
1111 1111 (255) 1111 1111 (255) 1111 1111 (255) 0000 0000 (0)

255.255.255.0 lhe soa mais familiar? Por isto o nome mscara de bits pois uma mscara que ser usada em uma operao AND para determinar qual a rede.

5 de 8

21/04/2013 04:19

255.255.255.0: A matemtica das mscaras de rede [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7477

Para determinar qual o meu endereo de broadcast, se faz um OR bit a bit com a mscara complementada (invertida, nmeros destinados a rede em ZERO):
(10) 0000 1010 0000 0000 0000 1010 (1) 0000 0001 0000 0000 0000 0001 (0) 0000 0000 0000 0000 0000 0000 (5) 0000 0101 1111 1111 (24 bits em 0) 1111 1111 (resposta do OR)

Sendo agora um OR, o resultado matemtico disto ser 10.1.0.255. isto que acontece nos bastidores, envolvendo a mscara para determinar que rede sou e qual o meu endereo de broadcast. Uma mscara equvoca pode significar o isolamento de uma mquina do resto do mundo, pois ela pode no rotear pacotes corretamente, no usando o gateway quando deveria, por exemplo.

Roteamento baseado em mscara de rede Cada mquina sabe seu IP, sua mscara e o IP do gateway. A mquina no sabe as mscaras e os ips de outras mquinas, apenas a sua. Logo, ao necessitar comunicar-se com uma mquina cujo o IP X.Y.K.Z a mquina no 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 no saber onde um CEP que comea com "4", mas sei que no RS, pois estou no RS e aqui ele comea com "9". Basta para eu enviar para outra agncia de correio). Alguns exemplos: Caso A: origem e destino esto na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.120 (ela no sabe a mscara do destino!!!). Mquina A primeiro determina a sua rede aplicando um AND do seu IP com sua mscara, sendo que ela agora 255.255.255.128, pois um /25 significa 25 bits em 1:
1111 1111 (255) 1111 1111 (255) 1111 1111 (255) 1000 0000 (128)

Ela chega a concluso 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 MSCARA (nica que ela tem):
(10) 0000 1010 1111 1111 (1) 0000 0001 1111 1111 (0) 0000 0000 1111 1111 (120) 0111 1000 1000 0000 (25 bits em 1)

Como resultado deste AND, chega-se ao clculo de 10.1.0.0. Como o nmero calculado para rede o mesmo, a concluso que o destino est aqui, local, basta realizar um ARP e enderear diretamente o MAC do destino. Nada de gateway. Caso B: origem e destino no esto na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.129. J sabemos que a rede que a mquina A pertence 10.1.0.0 (veja, pode no ser se a mquina A estiver com a mscara errada!!!) Ela faz o mesmo com o IP de destino, aplicando um AND do IP de destino COM A SUA MSCARA (nica que ela tem):
(10) (1) (0) (129)

6 de 8

21/04/2013 04:19

255.255.255.0: A matemtica das mscaras de rede [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7477

0000 1010 1111 1111 0000 1010

0000 0001 1111 1111 0000 0001

0000 0000 1111 1111 0000 0000

1000 0001 1000 0000 (25 bits em 1) 1000 0000 (RESULTADO AND)

Como resultado deste AND, chega-se ao clculo de 10.1.0.128, que no mesma rede da mquina A. A concluso que o destino no est aqui e preciso repassar o pacote para o gateway (o que o gateway faz deixamos para um prximo artigo). Se a mquina A estiver com a mscara errada (um /24 quando deveria ser um /25) ela pode ficar isolada de parte da rede, por achar que o destino rede local quando no (deveria ter usado o gateway). Da mesma forma se ela um /25 quando deveria ser um /24 poder usar o gateway quando no era necessrio. A correta configurao de mscara extremamente importante.

Concluso Por envolver operaes binrias e conceitos de redes, este artigo pode no ter sido do interesse de muitos leitores. Mas tenho observado nos fruns que muita gente no sabe o que so mscaras de rede e se perdem quando este conceito empregado, por exemplo, em configuraes de firewall. O que significa dizer que estou executando um DROP no IP 10.1.0.0/28? # iptables -A FORWARD -s 10.1.0.0/28 -j DROP Quem est realmente sendo bloqueado? A resposta agora tem explicao: esto sendo bloqueados todos os ips que ao se realizar AND bit a bit com /28 resulte em 10.1.0.0. Na prtica todos entre 10.1.0.0 e 10.1.0.15, pois este ser o IP da rede e de broadcast que um /28 determina. Ainda resta dizer que o uso de mscaras de forma apropriada usado para subdividir uma faixa de ips pblicos que determinada instituio recebeu em vrias redes. Se eu tenho um /24, sei que posso montar uma rede com at 254 mquinas (sim, 254, pois tem o endereo de rede e de broadcast que no posso usar em mquina). Uma rede! Mas se eu quero DUAS, cada uma com 100 mquinas, posso quebrar este /24 em dois /25. Ou em quatro /26... Ou ainda em trs redes, uma /25 e duas outras /26. Claro que para isto ai tem que ir mais a fundo no conceito de mscaras, pois pode no parecer, mas este artigo procurou fornecer apenas uma introduo ao assunto.

Referncias
Este conceito de mscaras bastante tcnico e na Internet geralmente se encontram simplificaes populares, como receitas de bolo. Nada como bons livros, principalmente os que descrevem o protocolo TCP/IP ou direto na veia, lendo as RFCs. No seria tico da minha parte tornar pblico aqui minha preferncia por este ou aquele livro, em detrimento de outro, mas se algum se interessar pelo assunto, envie-me um email que terei maior prazer em responder. Possuo em minha pgina pessoal um script em PHP para realizar o clculo de mscara de redes, com um diferencial que ele mostra o nmeros em seu formato binrio, dentro do conceito que descrevi aqui. O mesmo pode ser encontrado em: Clculo de mscara de rede em PHP

7 de 8

21/04/2013 04:19

255.255.255.0: A matemtica das mscaras de rede [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7477

http://www.vivaolinux.com.br/artigo/255.255.255.0-A-matematica-das-mascaras-de-rede Voltar para o site

8 de 8

21/04/2013 04:19

Вам также может понравиться