Total de visualizações de página

domingo, 27 de março de 2016

Descobrindo se um pc de origem esta na mesma rede que um pc de destino

Descobrindo se um pc de origem esta na mesma rede que um pc de destino

Para saber se um pc de origem esta na mesma rede que um pc de destino é necessário fazer um And bit a bit( coloca-se o ip em cima da máscara e onde for 1 no ip e na mascara o bit da rede é 1, qualquer outra combinação o bit da rede é 0). Para quem não sabe o que é isso não precisa se assustar, é algo fácil de se fazer vamos ao primeiro exemplo:

Exemplo A: origem e destino estão na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.120 (ela não sabe a máscara do destino).

Máquina A primeiro determina a sua rede aplicando um AND do seu IP com sua máscara, sendo que ela agora é 255.255.255.128, pois um /25 significa 25 bits em 1, para quem não entendeu, no total são 32 bits, sendo que os primeiros 25 vc preenche com o número 1, ficando assim:
11111111 11111111 11111111 10000000
(255) (255) (255) (128)

Fazendo and bit a bit:
(10) (1) (0) (5)
00001010 00000001 00000000 00000101 = ip de origem
(255) (255) (255) (128)
11111111 11111111 11111111 10000000 = sua mascara
00001010 00000001 00000000 00000000 = ip da rede (10.1.0.0)

Ela chega a conclusão 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 MÁSCARA (única que ela tem):
(10) (1) (0) (120)
00001010 00000001 00000000 01111000
11111111 11111111 11111111 10000000 (25 bits em 1)
00001010 00000001 00000000 00000000 = ip da rede (10.1.0.0)

Como resultado deste AND, chega-se ao cálculo de 10.1.0.0. Como o número calculado para rede é o mesmo, a conclusão é que o destino está aqui, local, basta realizar um ARP e endereçar diretamente o MAC do destino. Nada de gateway.

Exemplo B: origem e destino não estão 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 máquina A pertence é 10.1.0.0 (veja, pode não ser se a máquina A estiver com a máscara errada).

Ela faz o mesmo com o IP de destino, aplicando um AND do IP de destino COM A SUA MÁSCARA (única que ela tem):
(10) (1) (0) (129)
00001010 00000001 00000000 10000001 = ip de destino
11111111 11111111 11111111 10000000 (25 bits em 1, é a sua mascara)
00001010 00000001 00000000 10000000 (RESULTADO AND)

Como resultado deste AND, chega-se ao cálculo de 10.1.0.128, que não é mesma rede da máquina A. A conclusão é que o destino não está aqui e preciso repassar o pacote para outro roteador até chegar a rede onde esta a máquina de destino.


Bônus: se for dado uma máscara de ip 200.15.144/22 para saber qual é o o ip inicial e o ip final, basta fazer 24(total de bits q vc conhece) - 22(mascara), ficando assim 2²=4. Desse modo o último octeto conhecido irá variar 4 vezes (na verdade 3 porque o 144 conta, fazendo a soma fica 144+3=147.
ficando assim: ip inicial200.15.144.01 -> ip final 200.15.147.255
Detlhe que o 255 sempre é o broadcast.
E para saber o total de hosts, se faz 32 (total de bits no ip) - 22(mascara), ficando 2¹º = 1024 hosts.

Nenhum comentário:

Postar um comentário