quinta-feira, 1 de março de 2012

Máscara de sub rede




Essa semana tive que criar um validador de sub rede para um dispositivo que foi criado na empresa em que trabalho. As regras de validação é um pouco complexa a primeira vista, mas não é um "monstro de sete cabeças".

 A máscara de rede é usado para determinar a qual sub rede um determinado IP pertence:

Classe A - 255.0.0.0 -         11111111.00000000.00000000.00000000 -ff:00:00:00
Classe B - 255.255.0.0 -     11111111.11111111.00000000.00000000 - ff:ff:00:00
Classe C - 255.255.255.0 - 11111111.11111111.11111111.00000000 - ff:ff:ff:00

 Com um IP e a máscara de sub rede podemos determinar o range de IP's.
 Ex: Temos o IP: 192.168.0.10 e subnet: 255.255.255.0

Vamos converter nosso IP e subnet que está em formato decimal para binário:

 | Decimal           | Binário                                                         |
 | 192.168.0.10   | 11000000.10101000.00000000.00001010 |
 | 255.255.255.0 | 11111111.11111111.11111111.00000000 |

 Para saber qual o primeiro Ip fazemos um AND entre o IP e SubNet:

 | Decimal           | Binário                                                         | Resultado Decimal |
 | 192.168.0.10   | 11000000.10101000.00000000.00001010 |
 | 255.255.255.0 | 11111111.11111111.11111111.00000000 |
 | AND                 | 11000000.10101000.00000000.00000000 | 192.168.0.0         |

 Nosso primeiro IP é 192.168.0.0.

Para saber o último ip fazemos um OR entre IP e o SubNet com os bit's invertidos:

 | Decimal           | Binário                                                         | Resultado Decimal |
 | 192.168.0.10   | 11000000.10101000.00000000.00001010 |
 | 255.255.255.0 | 00000000.00000000.00000000.11111111 | bit's invertidos
 | OR                  | 11000000.10101000.00000000.11111111 | 192.168.0.255      |

Pronto, nosso range de IP será 192.168.0.0 até 192.168.0.255.

 Alem disso os números binários precisam ser continuo.
 Por exemplo a sub rede "255.0.255.0" não é válida, pois não os números não é contínuo.

                                                                      (255)          (0)            (255)         (0)
Transformando essa sub rede em binário: 11111111.00000000.11111111.00000000,  observe que o terceiro byte(255) não dá continuidade ao segundo byte. Para corrigir o erro temos que alterar os bytes:
255.255.255.0 - 11111111.11111111.11111111.00000000 ou
255.255.0.0 - 11111111.11111111.00000000.00000000 ou
255.248.0.0 - 11111111.11111000.00000000.00000000 etc...

Fonte: http://eri-pai-eri-filha.blogspot.com/2010/11/mascara-de-sub-rede.html

Nenhum comentário:

Postar um comentário