子网划分

子网划分定义

Internet组织机构定义了五种IP地址,有A、B、C三类地址。A类网络有126个,每个A类网络可能有16777214台主机,它们处于同一广播域。而在同一广播域中有这么多结点是不可能的,网络会因为广播通信而饱和,结果造成16777214个地址大部分没有分配出去。可以把基于每类的IP网络进一步分成更小的网络,每个子网由路由器界定并分配一个新的子网网络地址,子网地址是借用基于每类的网络地址的主机部分创建的。划分子网后,通过使用掩码,把子网隐藏起来,使得从外部看网络没有变化,这就是子网掩码。


定义

当我们对一个网络进行子网划分时,基本上就是将它分成小的网络。比如,当一组IP地址指定给一个公司时,公司可能将该网络“分割成”小的网络,每个部门一个。这样,技术部门和管理部门都可以有属于它们的小网络。通过划分子网,我们可以按照我们的需要将网络分割成小网络。这样也有助于降低流量和隐藏网络的复杂性。


子网掩码

RFC 950定义了子网掩码的使用,子网掩码是一个32位的2进制数,其对应网络地址的所有位置都为1,对应于主机地址的所有位置都为0。
由此可知,A类网络的默认子网掩码是255.0.0.0,B类网络的默认子网掩码是255.255.0.0,C类网络的默认子网掩码是255.255.255.0。将子网掩码和IP地址按位进行逻辑“与”运算,得到IP地址的网络地址,剩下的部分就是主机地址,从而区分出任意IP地址中的网络地址和主机地址。
子网掩码常用点分十进制表示,我们还可以用CIDR的网络前缀法表示掩码,即“/<网络地址位数>;”。如138.96.0.0/16表示B类网络138.96.0.0的子网掩码为255.255.0.0。

IP判断

子网掩码告知路由器,IP地址的前多少位是网络地址,后多少位(剩余位)是主机地址,使路由器正确判断任意IP地址是否是本网段的,从而正确地进行路由。
例如,有两台主机,主机一的IP地址为222.21.160.6,子网掩码为255.255.255.192,主机二的IP地址为222.21.160.73,子网掩码为255.255.255.192。现在主机一要给主机二发送数据,先要判断两个主机是否在同一网段。
主机一
222.21.160.6即:11011110.00010101.10100000.00000110
255.255.255.192即:11111111.11111111.11111111.11000000
按位逻辑与运算结果为:11011110.00010101.10100000.00000000
十进制形式为(网络地址):222.21.160.0
主机二
222.21.160.73 即:11011110.00010101.10100000.01001001
255.255.255.192即:11111111.11111111.11111111.11000000
按位逻辑与运算结果为:11011110.00010101.10100000.01000000
十进制形式为(网络地址):222.21.160.64
C类地址判断前三位是否相同,即可确定2个IP地址是否在同一网段内,但本例中的222.21.160.6与222.21.160.73不在同一网段,因为这两个C类IP地址已经做了子网划分就不能只判断前三位是否相同就确认这两个IP是否在同一网段。其中222.21.160.6在222.21.160.1-222.21.160.62 段,222.21.160.73在222.21.160.65-222.21.160.126 段,所以不在同一网段 ,如果要通信需要通过路由器转发。


计算方法

2进制跟10进制的计算方式:

这个是ip上换算的一个小技巧,因为每个段都是对应的8个2进制位数,因此可以这样计算,例如:一个C类地址,192.168.1.1

        128.64.32.16.8.4.2.1|128.64.32.16.8.4.2.1|128.64.32.16.8.4.2.1|128.64.32.16.8.4.2.1

         1    1   1   1  1 1 1 1|1     0   1   0 1 0  0 0|  0   0   0  0  0 0 0 1|  0   0   0   0  0 0 0 1

C类:192.                                  168.                            1.                             1

        128.64.32.16.8.4.2.1|128.64.32.16.8.4.2.1|128.64.32.16.8.4.2.1|128.64.32.16.8.4.2.1

           1   1   1  1  1 1 1 1| 1   1   1   1  1 1 1 1|  1    1  1   1  1 1 1 1| 0   0    0   0  0 0 0 0

掩码255                        .255                          .255                        .0

从128开始到1,2进制的,因此每个间隔都是2,每一段里面是8位,因为网络上的是8bit。

单看子网掩码,从后面往前面看,从第一个不为零的开始,是网络位;第一个0开始是主机位,全为0或全为1的为广播位;

几个ip是否属于同一网段,需要看ip+子网掩码,具体可以用AND运算:

比如刚刚举例的C类ip:192.168.1.1和192.168.0.1,它们的子网掩码都是255.255.255.0即24位掩码,

通过刚刚的换算方式将ip和掩码换算成二进制,然后把ip和子网掩码的二进制相加,规则是:0+1=0;0+0=0;1+1=1,最简单的记法,即是两个都为1,相加才为1,否则都为0;

我们单独看这两个ip的中间的0和1段,0段的and运算结果不用说,都是0了;1段的and运算则为1,前面相同,从这里开始不同,因此从这里开始,它们就不是一个段了;

我们再来看一下“超网”,比如刚刚那两个C类ip,把子网掩码改成23位掩码,即255.255.255.254.0;

这时,0段的and运算,前面的还是相同的,从第三段开始,0段的计算是0;1段的计算还是0,为什么呢?1段的ip二进制是00000001,掩码是11111110,and运算后还是0,因此0和1是一段,而192.168.2.1,就不是了,2段的ip是00000010,子网掩码是11111110,计算出来是1,跟前面的不同,因此不是一个网段的,对于主机位较多的时候,但是又不需要用到B类网段的时候,这个划分方法很实用,比如网吧使用。

发表评论

电子邮件地址不会被公开。 必填项已用*标注