网段的划分,主要有IP和子网掩码两个因素控制。
IP由四段数字组成,一般情况下,我们将IP分为三类:
A类IP段 0.0.0.0 到127.255.255.255
B类IP段 128.0.0.0 到191.255.255.255
C类IP段 192.0.0.0 到223.255.255.255
换算为二进制,其实质就是:一个IP段由四段二进制数组成,每八位为一段,共四段。
XP默认分配的子网掩码每段只有255或0
A类的默认子网掩码 255.0.0.0 一个子网最多可以容纳1677万多台电脑(其实就是256*256*256)
B类的默认子网掩码 255.255.0.0 一个子网最多可以容纳6万台电脑
C类的默认子网掩码 255.255.255.0 一个子网最多可以容纳254台电脑
具体算法:
若要判断两个IP地址是否在同一网段,则分别用这两个IP与子网掩码相与,若结果(网络标识)相同,则说明这两个IP
在同一网段(注意:两个IP的子网掩码要相同,若不相同,就算网络标识相同,也不是在一个网段内)
例如:IP:192.168.0.111,192.168.5.222,子网掩码都设为255.255.254.0,在同一网段吗?
先将这些转换成二进制
192.168.0.111 11000000.10101000.00000000.01101111
192.168.5.222 11000000.10101000.00000101.11011010
255.255.254.0 11111111.11111111.11111110.00000000
分别相与,得
11000000.10101000.00000000.00000000
11000000.10101000.00000100.00000000
网络标识不一样,即不在同一网段。
另外:如果上面的方法是正确的话,那么以下的例子怎么解释:
IP1:192.168.1.1/30
IP2:192.168.1.10/24
进行“与”的结果都是:192.168.1.0,那么IP1和IP2是属于同一个网段的。
这怎么解释?
事实上:192.168.1.1/30和192.168.1.10/24不能说在同一个网段里!因为这两个子网是被包含与包含的一个关系。
应该说192.168.1.1/30是192.168.1.10/24的一个子网,或者说192.168.1.1/30在192.168.10/24的网段里。
这就是为什么前边我要说“两个IP的子网掩码要相同,若不相同,就算与之后结果相同,也不是在一个网段内,而是包含与被包含的关系"了。
转载于:https://my.oschina.net/u/2564478/blog/667541