子网掩码的定义与计算[原创总结]


按IP协议的子网标准规定,每一个使用子网的网点都选择一个32位的位模式,若位模式中的某位置1,则对应IP地址中的某位为网络地址(包括网络部分和子网掩码号)中的一位;若位模式中的某位置0,则对应IP地址中的某位为主机地址中的一位。

例如二进制位模式:11111111 11111111 11111111 00000000中,前三个字节全1,代表对应IP地址中最高的三个字节为网络地址;后一个字节全0,代表对应IP地址中最后的一个字节为主机地址。为了使用的方便,常常使用“点分整数表示法”来表示一个IP地址和子网掩码,例如C类地址子网掩码(11111111 11111111 11111111 00000000)为:255.255.255.0。

IP协议关于子网掩码的定义提供一定的灵活性,允许子网掩码中的 “0”和“1”位不连续。但是,这样的子网掩码给分配主机地址和理解寻径表都带来一定困难。并且,极少的路由器支持在子网中使用低序或无序的位,因此在实际应用中通常各网点采用连续方式的子网掩码,像255.255.255.64和255.255.255.160等一类的子网掩码不推荐使用。

所以,一般可用来使用的掩码数值就只有以下了:
256-(128 64 32 16 8 4 2 1)=128,192,224,240,248,252,254,255。

这里面的(1 2 4 8 16 32 64 128)是我们的8个不同位数的1所计算出来的数值,可以用来作为主机数区间,意思就是,如果你需要60个IP,那么你就必须选择32-64的区间,那么掩码就是256-64=192,就是8+8+8+2=26位掩码了,即前24位+192的(11 00 0000 )的2位1。

关于位数的计算有个简单的方法,通过按照下面的排列来计算:
128 64 32 16 8 4 2 1
192就是128+64,那么就是2位1了咯,同样224=128+64+32,所以224就是3位1了咯,依次推理240就是4位1了。

通过上面的方法,可以根据所需的IP个数来快速的选择所需的掩码。

另外,很多时候需要通过已知的掩码,来计算IP所在的子网范围,方法其实也很简单:
比如,已知网络地址是 10.10.10.90/28,那么它的子网掩码就8+8+8+4,对应的掩码地址就是 256 - 16(2的4次方) = 240。
将0-255以每16个地址来划分出区块,90这个IP位于 16*5=80 与 16*6=96之间。
而80为全0子网地址,95为全1广播地址,因此IP范围就是 10.10.10.81 - 10.10.10.94。

这里,再给大家分享一个Windows上的图形小工具,可以完成上面的计算。
下载地址:http://heylinux.com/wp-content/uploads/2009/12/SubnetMask.zip
subnetmask

  1. #1 by 索唯 on 2012/05/08 - 18:24

    这个我也会,不过你先写成来的,归你原创总结。

    • #2 by mcsrainbow on 2012/05/10 - 17:04

      那谢谢了哦。

(will not be published)
*