CerberusBH
(usa Slackware)
Enviado em 14/03/2011 - 15:07h
Olá nielsenyuri!
Tentarei explicar da forma mais simples possível, pois de repente pode ser útil para mais alguém.
Os endereços IP que nós "vemos", os computadores vêem como endereços binários. Então todo o processo de cálculo deve ser feito convertendo os valores para binário.
Primeiramente, quero apresentar a seguinte tabela, com as máscaras convertidas para binário:
10000000.00000000.00000000.00000000 = 128.0.0.0
11000000.00000000.00000000.00000000 = 192.0.0.0
11100000.00000000.00000000.00000000 = 224.0.0.0
11110000.00000000.00000000.00000000 = 240.0.0.0
11111000.00000000.00000000.00000000 = 248.0.0.0
11111100.00000000.00000000.00000000 = 252.0.0.0
11111110.00000000.00000000.00000000 = 254.0.0.0
11111111.00000000.00000000.00000000 = 255.0.0.0
11111111.10000000.00000000.00000000 = 255.128.0.0
11111111.11000000.00000000.00000000 = 255.192.0.0
11111111.11100000.00000000.00000000 = 255.224.0.0
11111111.11110000.00000000.00000000 = 255.240.0.0
11111111.11111000.00000000.00000000 = 255.248.0.0
11111111.11111100.00000000.00000000 = 255.252.0.0
11111111.11111110.00000000.00000000 = 255.254.0.0
11111111.11111111.00000000.00000000 = 255.255.0.0
11111111.11111111.10000000.00000000 = 255.255.128.0
11111111.11111111.11000000.00000000 = 255.255.192.0
11111111.11111111.11100000.00000000 = 255.255.224.0
11111111.11111111.11110000.00000000 = 255.255.240.0
11111111.11111111.11111000.00000000 = 255.255.248.0
11111111.11111111.11111100.00000000 = 255.255.252.0
11111111.11111111.11111110.00000000 = 255.255.254.0
11111111.11111111.11111111.00000000 = 255.255.255.0
11111111.11111111.11111111.10000000 = 255.255.255.128
11111111.11111111.11111111.11000000 = 255.255.255.192
11111111.11111111.11111111.11100000 = 255.255.255.224
11111111.11111111.11111111.11110000 = 255.255.255.240
11111111.11111111.11111111.11111000 = 255.255.255.248
11111111.11111111.11111111.11111100 = 255.255.255.252
11111111.11111111.11111111.11111110 = 255.255.255.254
11111111.11111111.11111111.11111111 = 255.255.255.255
Observe que os bits de valor 1 "seguem" preenchendo cada um dos quatro octetos.
Caso quem mais leia esta resposta ainda não saiba, quando nos referimos a uma sub-rede usando a notação "CIDR" (Classless Inter-Domain Routing), nada mais é do que a quantidade de bits de valor "1" existentes na máscara, contados a partir da esquerda.
Trocando em miúdos, um endereço de exemplo como 200.219.17.15/17 corresponde a 200.219.17.15/255.254.0.0, porque o número 17 indica dezessete bits de valor "1", contados a partir da esquerda, e que por sua vez correspondem à mascara 255.254.0.0.
O número de bits de valor "1" na máscara indicam a quantidade de sub-redes que "cabem" no endereço, e o número de bits de valor "0" indicam a quantidade de nós, ou computadores na rede. Para isso utilizamos os seguintes cálculos:
* considerando a variável x para o número de bits 1, e y para o número de bits 0 (zero)
-> Número de redes = 2^x
-> Número de nós = (2^y)-2
Um exemplo de cálculo:
Tomaremos o endereço: 147.28.120.200/255.255.255.240.
Em notação CIDR: 147.28.120.200/28
Quantos computadores podem ser endereçados nesta rede?
Reposta:
Esta máscara tem 4 bits de valor "0", então:
Número de computadores = (2^4)-2 => 16-2 = 14
Quatorze computadores "cabem" nesta rede.
Mas por quê subtraímos 2? Porque não se pode endereçar um computador com o endereço mínimo, nem o endereço máximo da rede (ou sub-rede). O endereço mínimo é reservado para a rede em si, e o máximo para o "broadcast".
Então agora eu quero saber qual é o endereço de rede e qual é o broadcast da minha rede.
Para isso, vamos usar o mesmo exemplo de endereço acima: 147.28.120.200/255.255.255.240.
Temos que converter tudo para binário.
10010011.00011100.01111000.11001000 = 147.28.120.200
11111111.11111111.11111111.11110000 = 255.255.255.240
Agora, "separamos" a parte onde só há bits "1" da parte onde só há bits "0" na máscara, assim:
10010011.00011100.01111000.1100|1000
11111111.11111111.11111111.1111|0000
Agora, pra calcular a rede e os nós, partimos do seguinte raciocínio: onde tem bit "1" na máscara, eu mantenho os bits do meu endereço IP. Onde tem bit "0", eu vou alterar. Para saber o endereço de rede, eu troco tudo para zero. Para calcular o broadcast, eu troco tudo para um. Dessa maneira:
Endereço:
10010011.00011100.01111000.1100|1000 = 147.28.120.200
11111111.11111111.11111111.1111|0000 = 255.255.255.240
Rede:
10010011.00011100.01111000.1100|0000 = 147.28.120.192
11111111.11111111.11111111.1111|0000 = 255.255.255.240
Broadcast:
10010011.00011100.01111000.1100|1111 = 147.28.120.207
11111111.11111111.11111111.1111|0000 = 255.255.255.240
Sub-redes
Agora, vamos imaginar a seguinte situação: o IP que usei de exemplo é meu IP dedicado, e eu tenho duas redes ligadas por um roteador, que ficarão "debaixo" deste IP. Como vou endereçar as duas?
Resposta: Quebrando a máscara!
Eu preciso dividir esta rede principal em duas. Que expoente eu posso elevar 2 para que o resultado seja 2? Ou seja, qual o valor de x para 2^x=2? A reposta é "1". Então vamos somar 1 à máscara atual, que é 28. Passaremos a ter então o seguinte:
Antes: 147.28.120.200/28 - Depois: 147.28.120.200/29
Antes:
10010011.00011100.01111000.1100|1000 = 147.28.120.200
11111111.11111111.11111111.1111|0000 = 255.255.255.240
Depois:
10010011.00011100.01111000.11001|000 = 147.28.120.200
11111111.11111111.11111111.11111|000 = 255.255.255.248
Eu alterei apenas um bit da máscara. E é este bit que vai fazer a diferença nos cálculos.
10010011.00011100.01111000.11000|000 = 147.28.120.192 = Rede
10010011.00011100.01111000.11000|111 = 147.28.120.199 = Broadcast
10010011.00011100.01111000.11000|001 = 147.28.120.193 = Mínimo
10010011.00011100.01111000.11000|110 = 147.28.120.198 = Máximo
Nós: 6
10010011.00011100.01111000.11001|000 = 147.28.120.200 = Rede
10010011.00011100.01111000.11001|111 = 147.28.120.207 = Broadcast
10010011.00011100.01111000.11001|001 = 147.28.120.201 = Mínimo
10010011.00011100.01111000.11001|110 = 147.28.120.206 = Máximo
Nós: 6
E assim eu posso endereçar duas sub-redes "debaixo" do meu IP dedicado, tendo cada uma das redes seis computadores.
Espero, sinceramente, ter conseguido explicar de forma simples, e que eu tenha conseguido responder à sua dúvida.
Abraços!