分类: C/C++
2015-07-21 11:22:29
知道IP地址和子网掩码后可以算出:
1、 网络地址
2、 广播地址
3、 地址范围
4、 本网有几台主机
例1:下面例子IP地址为192·168·100·5
子网掩码是255·255·255·0。算出网络地址、广播地址、地址范围、主机数。
一)分步骤计算
1) 将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址。 虚线前为网络地址,虚线后为主机地址
2)IP地址和子网掩码进行与运算,结果是网络地址
3) 将上面的网络地址中的网络地址部分不变,主机地址变为全1,结果就是广播地址。
4) 地址范围就是含在本网段内的所有主机
网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,由此可以看出
地址范围是: 网络地址+1 至 广播地址-1
本例的网络范围是:192·168·100·1 至 192·168·100·254
也就是说下面的地址都是一个网段的。
192·168·100·1、192·168·100·2 。。。 192·168·100·20 。。。 192·168·100·111 。。。 192·168·100·254
5) 主机的数量
主机的数量=2二进制的主机位数-2
减2是因为主机不包括网络地址和广播地址。本例二进制的主机位数是8位。
主机的数量=28-2=254
二)总体计算
我们把上边的例子合起来计算一下过程如下:
例2: IP地址为128·36·199·3 子网掩码是255·255·240·0。算出网络地址、广播地址、地址范围、主机数。
1) 将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址, 虚线前为网络地址,虚线后为主机地址
2)IP地址和子网掩码进行与运算,结果是网络地址
3)将运算结果中的网络地址不变,主机地址变为1,结果就是广播地址。
4) 地址范围就是含在本网段内的所有主机
网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,由此可以看出
地址范围是: 网络地址+1 至 广播地址-1
本例的网络范围是:128·36·192·1 至 128·36·207·254
5) 主机的数量
主机的数量=2二进制位数的主机-2
主机的数量=212-2=4094
减2是因为主机不包括网络地址和广播地址。
从上面两个例子可以看出不管子网掩码是标准的还是特殊的,计算网络地址、广播地址、地址数时只要把地址换算成二进制,然后从子网掩码处分清楚连续1以前的是网络地址,后是主机地址进行相应计算即可。
三)例子
第一例:
我的主机IP是:10.100.253.69
网段的掩码是:255.255.255.248
这种情况下广播包的IP应该是多少?
以主机IP=10.100.253.69
子网掩码=255.255.255.248为例,子网掩码转换成2进制为11111111.11111111.11111111.11111000,它表明在最后一个8位中前面5位被用作网络位,后面3位是主机位;而IP地址转换成2进制(省去前面24位,只写出最后8位)为01000101,所以根据子网掩码可以判断该IP地址所处的网段以及该子网的网络地址及广播地址,判断方法是把子网掩码的最后8位(11111000)和IP地址最后8位(01000101)做与(&)操作这样得出该子网的网络地址为01000000(完整的地址为10.100.253.64),广播地址就是把主机位(最后3位)全部换成1(01000111),完整的地址10.100.253.71。所以最后的结论是网络地址为10.100.253.64,广播地址为10.100.253.71。
第二例:
一个公司有10个部门,要求给每个部门划分不同的网段,但是都在192.168.1.0这个大网内,并且每个部门要容纳20台计算机。请为这个公司选择子网掩码。
选项:A)255.255.255.192
选项:B)255.255.255.224
选项:C)255.255.255.240
选项:D)不能实现
分析:首先看关键数据,10个部门共要10个网段的子网,也就是说采用的子网掩码要支持10个有效的子网,而且还要求每个子网容纳100个有效的主机地址。
根据2的N次方减2的公式,10介于2的3次方和2的4次方之间,因此应该从主机位借4位来作为子网位,二进制就是11111111.11111111.11111111.11110000,即255.255.255.240。有些人就毫不犹豫地选择了255.255.255.240地子网掩码。
但是真的就这样计算结束了吗?其实不然。我们知道,C类地址主机位本来就只有8位,现在已经借去4位,剩下4位,因此每个子网能够允许的主机数量为2的4次方减2,即14台计算机。而题目要求每个子网容纳主机20台,看来是无法达到目的。同样如果我们先从主机数量着手计算,应该采用255.255.255.224的子网掩码,但是这个掩码只能允许有6个有效的子网,因此同样无法满足10个子网的要求。因此计算这种题目千万要多留一个心眼,否则一不留神就被欺骗了!