网上有人提问:

以下地址中是合法主机 IP地址的是()?
A 152.178.132.95/27
B 152.179.39.223/26
C 219.72.294.80/25
D 61.139.144.0/22

答案是B

题目解决思路:

1、检查ip地址四段的合法性

       ip地址是32位,为方便记录分成四段,每段8位,用十进制加.来表示,如11.12.135.148,四段中每段取值范围在0-255间。ip地址的32位又分为网络地址部分和主机地址部分。用掩码表示网络地址部分的长度。如同一个电话号码86255128,前四位8625是交换机局的编号,后面的5128是用户号码,上层把有一条被叫号码截取4位符合8625就送到特定一个交换机去,表示86250000-86259999这一万个号码的归属地。而在该交换机上,分析被叫号码,截取4位,符合8625就是本地号码,落地处理,不符合就继续分析处理。

       网络部分来确定终端是不是在同一个网段;主机部分用来确定节点终端的容量大小;(这个网段最多可以容纳多少台主机)。同一个部门应该要确保其所有的终端在同一个网段;规划的主机的数量应该在你的主机部分可容纳的范围内;

        用掩码表示网络地址的长度,如8,16,24,32,27(类似被叫号码截取的位长),掩码也可以用ip的十进制加.来表示,网络位全为1,主机位全为0,如192.168.10.0/24255.255.255.0,172.102.201.18/27,255.255.255.224。

0到172.102.201.31这32个ip地址。

2、因为网络地址和广播地址不能作为设备地址进行配置,所以必须排除网络地址和广播地址,算法就是下面三步:
1,确定ip地址四段中既有网络位又有主机位的是ip地址的那一段
2、步骤1确定的ip地址四段中第几段的主机位数n的数值,一个网络地址就代表主机位为全0到全1的2^n个ip地址,确定的这块大小。确定方法是掩码值=256-2^n,为啥是这个,因为主机位全1,数值为2^n-1,掩码就是网络位全1,主机位全0,255-主机位最大值,就是255-(2^n-1)=256-2^n,该段掩码值就是网络位最大值时的十进制值,就是网络位全1时,这段ip的最大值。

a、掩码值为长度形式的,小于8,在第一段,大于8,小于16在第二段,大于16小于24在第三段,大于24,小于32,在第四段。如123.113.251.15/26,明显是在第四段变化。是8的倍数8,16,24,32这是一个标准abc地址,没有子网。第一步中确定在第几段变化,令掩码长度为y,在第一段就8-y,第二段就是16-y,第三段就是24-y,第四段就是32-y。

b、掩码是ip形式的,四段的。看是否有非0和255的数字,而且是128,192,224,240,248,252,254中的一个这些数字出现在ip第几段?这些数字出现在那一段,这段就是要找的变化段。因为,ip某一段,全主机位,掩码就是0,全网络位就是255,而变化段,肯定是偶数,而且大于等于128.   若掩码是ip四段形式,就用确定的那一段的非0和255的数字令为y=256-2^n,来求n

3、网络地址算法就是把网络位看成一个整体,计算出一个值k,k*2^n就是该段的值,广播地址就是(k+1)x2^n-1,因为网络位看成一个整体,权值就是2^n,而所有的主机位为0,所以网络的就是所有网络位算出的值就是该段网络地址的值。广播地址加1,后主机地址变成全0,网络位+1,所以广播地址就是(k+1)x2^n-1。

所以主机位为n,可用的ip个数就2^n-2个。

就是用这个值去除2^n,商取整得到一个值k,则这个ip在这段的网络地址就是kx2^n。

如一个ip112.13.11.209/27,255.255.255.224的ip,求网络地址,32-27=5,209/32取整是6,余17,网络地址该段就是6*32=192。判断是否ip是否在同一子网,就通过判断k值是否相等,相等就是,不相等就不是。如另一个ip112.13.11.232,232/32取整7,余9,所以和112.13.11.209不是同一子网。
4、已知ip地址求网络地址就是该段ip/2^n,若是商是整数,余数为0该值就是该值符合网络地址,若有余数且余数为2^n-1该值符合广播地址,若有余数且不是2^n-1,该值就是合法可用地址。再结合整个主机位其他段的值确定是否是网络地址或者广播地址。如变化段在第四段,直接接判断了,若变化段在1,2,3段,就要结合主机位段234,34,4整个主机位的所有段来判断。主机位其他段为全0,网络地址,全1,广播地址。非全0全1就是正常地址。

排查过程:

A 152.178.132.95/27,确定在第四段,n为32-27=5,主机位ip有2^5=32种取值,95/32取整为2,余31,余数符合2^n-1。95的二进制为0101 1111,网络位是3位,010,主机位是1 1111,显然是广播地址,a不符合

D 61.139.144.0/22   掩码为22,小于24, 确定变化在第三段,n为24-22=2,主机位ip有2^2=4种取值,144/4=36,余数为0,该段值符合网络地址。因为ip地址第四段是0,144的二进制为1001 0000,网络位为6位,主机位为2位,是00,ip第四段为0,显然所有主机位为00 0000 0000,所以是网络地址。d不符合。

C 选项的ip地址第三段294,ip地址四段十进制值不能大于255,排除掉C。
B 152.179.39.223/26,26位掩码,子网块主机大小64,因为主机位长度32-26=6,2^6=64,223/64取整是3,余数是31,不是2^n-1,所有这端符合正常的ip地址。3x64=192,所以网络地址第四段是192,主机ip范围是192-255,223的二进制是1101 11111,前两位是网络地址位,后面是主机,01 1111,主机位不是全0,全1,所以B是合法地址。

所以答案是B