255.255.255.0: A matemática das máscaras de rede
Você sabe o que significam matematicamente as máscaras de rede? Um /24, /25? Um 255.255.128.0 define o quê? No iptables um 10.1.0.0/28 tem qual finalidade? E o que isto tem a ver com as classes de IPs? Para quem não for alérgico à escovação de bits...
Parte 6: Cálculo do número de rede e de broadcast
Define-se como número de rede o primeiro endereço da faixa e como número de broadcast o último. Se tivermos, por exemplo, o IP 10.1.0.5/24 (24 bits para rede):
O número de broadcast seria 0001010 00000001 00000000 11111111, ou 10.1.0.255, último número de host permitido.
Mas como uma máquina calcula este número?
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?
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):
É isto que acontece nos bastidores, envolvendo a máscara para determinar que rede sou e qual o meu endereço de broadcast. Uma máscara equívoca pode significar o isolamento de uma máquina do resto do mundo, pois ela pode não rotear pacotes corretamente, não usando o gateway quando deveria, por exemplo.
(10) (1) (0) (5) 0000 1010 0000 0001 0000 0000 0000 0101 <------ 24 bits para rede -----> <- HOST->O número de rede seria 00001010 00000001 00000000 00000000, ou 10.1.0.0, primeiro IP que seria para host da seqüência.
O número de broadcast seria 0001010 00000001 00000000 11111111, ou 10.1.0.255, último número de host permitido.
Mas como uma máquina calcula este número?
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:
(10) (1) (0) (5) 0000 1010 0000 0001 0000 0000 0000 0101 1111 1111 1111 1111 1111 1111 0000 0000 (24 bits em 1) 0000 1010 0000 0001 0000 0000 0000 0000 (resposta do AND)Ao realizar este AND bit a bit, chega-se ao número 10.1.0.0 (número da rede).
Agora observe esta fato: se eu fosse ler de forma decimal estes bits que usei para o AND, que número eu tenho?
1111 1111 1111 1111 1111 1111 0000 0000 (255) (255) (255) (0)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):
(10) (1) (0) (5) 0000 1010 0000 0001 0000 0000 0000 0101 0000 0000 0000 0000 0000 0000 1111 1111 (24 bits em 0) 0000 1010 0000 0001 0000 0000 1111 1111 (resposta do OR)Sendo agora um OR, o resultado matemático disto será 10.1.0.255.
É isto que acontece nos bastidores, envolvendo a máscara para determinar que rede sou e qual o meu endereço de broadcast. Uma máscara equívoca pode significar o isolamento de uma máquina do resto do mundo, pois ela pode não rotear pacotes corretamente, não usando o gateway quando deveria, por exemplo.
http://gravatai.ulbra.tche.br/~elgio/calcmasc.php
Mas coloquei um redir no endereço publicado para não haver problemas.