我们先假定一个环境,一个小小的公司中,目前有5个部门AE,其中:A部门有10台PC(Host,主机),B部门20台,C部门30台,D部门15台,E部门20台,然后CIO分配了一个总的网段192.168.2.0/24给你,作为ADMIN,你的任务是为每个部门划分单独的网段,你该怎样做呢?


解:


根据题目,提炼已知条件得:


子网数<=5;主机数<=30;网段为C类地址;


由此我们知道该地址段的默认子网掩码为:255.255.255.0


转换为二进制得:(11111111.11111111.11111111.00000000


而我们知道在进行子网划分时,是牺牲主机的数量来转换为子网数,


因此,根据已知条件,以子网进行计算


假设,我们将n为主机二进制数转换为子网,则得:


2n>=5


求得:n>=3,由此意味着我们将牺牲主机数量的三位二进制数转换为子网数:


子网掩码应为:(11111111.11111111.11111111.00000000


为求证该子网结构是否符合要求,计算当前子网主机数应为25-2=30>=30


符合网络的需求;所以依据所算子网掩码,进行排列组合得到以下8个自子网:


111111111.11111111.11111111.00000000 不能用


211111111.11111111.11111111.00100000


311111111.11111111.11111111.01000000


411111111.11111111.11111111.01100000


511111111.11111111.11111111.10000000


611111111.11111111.11111111.10100000


711111111.11111111.11111111.11000000


811111111.11111111.11111111.11100000 不能用


同时,在网络地址分配中,全为1和全为0的不用,则转换为十进制后得到6个子网,分别是:


1255.255.255.32


2255.255.255.64


3255.255.255.96


4255.255.255.128


5255.255.255.160


6255.255.255.192


同样,我们依据C类地址192.168.2.0可计算出在每个子网下的第一个IP地址和最后一个IP地址,它们分别是:


1255.255.255.32: 192.168.2.33~ 192.168.2.62


2255.255.255.64: 192.168.2.65~ 192.168.2.94


3255.255.255.96: 192.168.2.97~ 192.168.2.126


4255.255.255.128: 192.168.2.129~ 192.168.2.158


5255.255.255.160: 192.168.2.161~ 192.168.2.190


6255.255.255.192: 192.168.2.193~ 192.168.2.222





6 IP地址和子网掩码
不了解二进制的人请自己补习数学知识,我不在这里重复二进制了。稍微有点网络常识的人都知道IP地址其实是二进制的网络地址,换算成10进制是为了方便记忆。而如果想要理解子网掩码的原理我们必须把IP地址换算成二进制来研究。
首先,我们都知道与或非逻辑运算原理吧。(不知道的去补数学)。那么我们来简单的举个实例。IP地址192.168.1.8 子网掩码255.255.255.0 是什么意思呢,192.168.1.8换算成二进制是 11000000.10101000.00000001.00001000而子网掩码的二进制则是11111111.11111111.11111111.00000000,两者运算得到11000000.10101000.00000001.00000000,换算成十进制得到192.168.1.0。这样我们就得到了一个网络地址,也就是说192.168.1.0网络内包括了从192.168.1.1192.168.1.254这些地址的主机(.255作为广播地址不能分配到主机上),192.168.1.8仅仅是这其中的一台。注意192.168.1.0在这个例子中被称为网络地址,192.168.1.8则被称为主机地址。子网掩码有的时候也能用1所占总位数表示。比如这个例子中 192.168.1.8 255.255.255.0 也可以写为192.168.2.8/24/24就代表了子网掩码的位数
那么为什么要使用子网掩码呢?因为路由器在转发数据的时候是不检查主机位地址的,通过运算后得出网络地址,路由器就会按照网络地址发送数据,至于发送到哪台主机上路由器并不关心。另外说的复杂些,有些较大的网络内会包含若干个子网,如192.168.0.0 /16 会包含 192.168.1.0/24 192.168.2.0/24 等子网络。这里出现了一个包含和被包含的逻辑关系,路由器通过路由汇总等方法也可以根据这些逻辑关系来判断网络的层次结构,限于篇幅和专业性,不予介绍了,仅为说明子网掩码的重要意义。另外子网掩码也可以借位和退位,计算起来稍微麻烦点,限于篇幅也不介绍了。
附带说一句,原本有一种没有子网掩码的地址方案,这种方案明确的确定了主机地址和网络地址的部分,这就是大名鼎鼎的IPX分址方案,现在已经基本淘汰,我学习IPX也不多,估计是被淘汰是由于它不能动态的组成有层次的网络结构。




下面就来以实例来说明子网掩码的算法:

1
  对于无须再划分成子网的IP地址来说,其子网掩码非常简单,即按照其定义即可写出:如某BIP地址为 10.12.3.0,无须再分割子网,则该IP地址的子网掩码为255.255.0.0。如果它是一个C类地址,则其子网掩码为 255.255.255.0。其它类推,不再详述。下面我们关键要介绍的是一个IP地址,还需要将其高位主机位再作为划分出的子网网络号,剩下的是每个子网的主机号,这时该如何进行每个子网的掩码计算。


一、利用子网数来计算


  在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。


1)将子网数目转化为二进制来表示。


2)取得该二进制的位数,为N


3)取得该IP地址的类子网掩码,将其主机地址部分的的前N位置1 即得出该IP地址划分子网的子网掩码。


  如欲将BIP地址168.195.0.0划分成27个子网:


1)27=11011


2)该二进制为五位数,N = 5


3)B类地址的子网掩码255.255.0.0的主机地址前5位置1,得到255.255.248.0即为划分成27个子网的BIP地址168.195.0.0的子网掩码。




子网划分是通过借用IP地址的若干位主机位来充当子网地址从而将原网络划分为若干子网而实现的。划分子网时,随着子网地址借用主机位数的增多,子网的数目随之增加,而每个子网中的可用主机数逐渐减少。以C类网络为例,原有8位主机位,28次方即256个主机地址,默认子网掩码255.255.255.0。借用1位主机位,产生2个子网,每个子网有126个主机地址;借用2位主机位,产生4个子网,每个子网有62个主机地址……每个网中,第一个IP地址(即主机部分全部为0IP)和最后一个IP(即主机部分全部为1IP)不能分配给主机使用,所以每个子网的可用IP地址数为总IP地址数量减2;根据子网ID借用的主机位数,我们可以计算出划分的子网数、掩码、每个子网主机数,列表如下:


划分子网数 子网位数 子网掩码(二进制) 子网掩码(十进制) 每个子网主机数


12 1 11111111.11111111.11111111.10000000 255.255.255.128 126


34 2 11111111.11111111.11111111.11000000 255.255.255.192 62


58 3 11111111.11111111.11111111.11100000 255.255.255.224 30


916 4 11111111.11111111.11111111.11110000 255.255.255.240 14


1732 5 11111111.11111111.11111111.11111000 255.255.255.248 6


3364 6 11111111.11111111.11111111.11111100 255.255.255.252 2


  如上表所示的C类网络中,若子网占用7位主机位时,主机位只剩一位,无论设为0还是1,都意味着主机位是全0或全1。由于主机位全0表示本网络,全1留作广播地址,这时子网实际没有可用主机地址,所以主机位至少应保留2位。