Академический Документы
Профессиональный Документы
Культура Документы
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.
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. ]
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).
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: 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!
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. 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.
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) 0000 1010 1111 1111 0000 1010 (1) 0000 0001 1111 1111 0000 0001 (0) 0000 0000 1111 1111 0000 0000 (129) 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. Exemplo : http://gravatai.ulbra.tche.br/~elgio/calcmasc.php