How to calculate if a given host is in the same subnet as another
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Variables: |
IPA |
Address of Host A |
|
TMP |
temporary variable |
|
|
|
|
|
|
|
|
NMA |
Netmask of Host A |
|
CGU |
Result |
|
|
|
|
|
|
|
|
|
IPB |
Address of Host B |
|
|
If zero: |
Hosts are in same subnet |
|
|
|
|
|
|
NMB |
Netmask of Host B |
|
|
If not zero: |
Hosts are not in same subnet |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Operations: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Host A |
|
|
|
|
|
|
Host B |
|
|
|
|
|
|
|
TMP |
= IPA xor IPB |
|
|
|
|
TMP |
= IPA xor IPB |
|
|
|
|
|
CGU |
= TMP and NMA |
|
|
|
|
CGU |
= TMP and NMB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"xor" and "and" are binary operations that mask one binary number with another |
|
|
|
|
|
|
|
Xor: |
Sets all positions to "1" that are different in the two numbers and all positions to "0" that are equal. |
|
|
|
|
|
|
Example: 0101 xor 0011 = 0110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
And: |
Sets all positions to "0" in the two numbers except for those where both are "1" |
|
|
|
|
|
|
|
Example: 0101 and 0011 = 0001 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Examples |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Host A |
|
|
|
|
|
|
Host B |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IPA |
192.168.1.1 (=10000000.10101000.00000001.00000001) |
|
IPB |
192.168.1.2 (=10000000.10101000.00000001.00000010) |
NMA |
255.255.255.0 (=11111111.11111111.11111111.00000000) |
|
NMB |
255.255.255.0 (=11111111.11111111.11111111.00000000) |
|
TMP |
= IPA xor IPB |
|
|
|
|
|
|
|
|
|
|
|
|
|
= 192.168.1.1 xor 192.168.1.2 = 0.0.0.3 (=00000000.00000000.00000000.00000011) |
|
|
|
|
|
|
CGU |
= TMP and NMA = 0.0.0.3 and 255.255.255.0 = 0.0.0.0 |
|
|
|
|
|
|
|
|
|
|
The hosts are in the same subnet |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IPA |
192.168.1.1 |
|
|
|
|
|
IPB |
192.168.5.2 |
|
|
|
|
NMA |
255.255.255.0 |
|
|
|
|
|
NMB |
255.255.255.0 |
|
|
|
|
|
TMP |
= IPA xor IPB |
|
|
|
|
|
|
|
|
|
|
|
|
|
= 192.168.1.1 xor 192.168.5.2 = 0.0.4.3 |
|
|
|
|
|
|
|
|
|
|
CGU |
= TMP and NMA = 0.0.4.3 and 255.255.255.0 = 0.0.4.0 |
|
|
|
|
|
|
|
|
|
|
The hosts are not in the same subnet |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IPA |
192.168.1.1 |
|
|
|
|
|
IPB |
192.168.5.2 |
|
|
|
|
NMA |
255.255.0.0 |
|
|
|
|
|
NMB |
255.255.255.0 |
|
|
|
|
|
TMP |
= IPA xor IPB |
|
|
|
|
|
TMP |
= IPA xor IPB |
|
|
|
|
|
= 192.168.1.1 xor 192.168.5.2 = 0.0.4.3 |
|
|
|
|
= 192.168.1.1 xor 192.168.5.2 = 0.0.4.3 |
|
|
CGU |
= TMP and NMA = 0.0.4.3 and 255.255.0.0 = 0.0.0.0 |
|
|
CGU |
= TMP and NMB = 0.0.4.3 and 255.255.255.0 = 0.0.4.0 |
|
|
For Host A, the hosts are in the same subnet |
|
|
|
For Host B, the hosts are not in the same subnet |