近段时间在一些网络技术QQ群中许多朋友对子网划分的方法还是不了解,经常单独向我请教。现从我今年出版的新作《深入理解计算机网络》中摘录该部分内容,做一次集中解答,希望对这些朋友有用。可点击这里,了解几百名真实读者对本书的评价:http://winda.blog.51cto.com/55153/1205295
8.2.3 VLSM子网划分方法
许多读者朋友,一谈到子网划分好像就觉得非常难,非常怕,总也搞不清楚。其实子网划分很简单,真的,不信请继续看下去。
在子网划分类试题或者具体工网络程中不外乎两种情形:
已知要划分的子网数和最大地址数,求子网掩码、子网地址范围、网络地址和广播地址;
其基本计算步骤如下:
(1)根据所需的子网数和最大地址数确定划分子网后的新“网络ID”长度和新“主机ID”长度;
(2)根据新“主机ID”长度确定子网划分后各子网的地址块大小,由此可进一步确定各子网的地址范围、网络地址和广播地址;
(3)根据下面的公式得出划分子网后各子网共同的子网掩码。
新子网掩码=原“网络ID”.新“主机ID”中各字节分别用256-各子地址块(各字节的值之间以小圆点分隔)
具体将在下面介绍。
已知子网地址前缀或子网掩码,求子网地址范围、网络地址和广播地址。
其基本计算步骤如下:
(1)根据子网的地址前缀或子网掩码确定该子网地址块大小;
(2)根据地址块大小,可进一步确定该子网的地址范围、网络地址和广播地址;
从以上这两种情形的计算步骤中可以看出,最关键的步骤都是要确定子网的地址块大小(也就是子网中的IPv4地址数,也肯定是2n,n代表“主机ID”位数)。知道了地址快大小就知道了包括“主机ID”部分各字节的子地址块大小,因为总的地址块大小等于包括“主机ID”部分的各字节(也就是各个八位组)中2的对应二进制位数次方相乘。如“主机ID”中包括IPv4地址第三个字节的后面4位和第四个字节,则所划分的子网的两个子地址块分别是24(16)和28(256)。
下面通过一个具体的示例来解释一下上面给出的新子网掩码计算公式。
现假设已知一个C类标准网络经子网划分后的地址块大小为64。经分析可知,新“主机ID”部分仅在最后一个字节(因为一个完整字节的地址块大小256,而64小于256),又因原“网络ID”为255.255.255(因为原网络中一个C类网络)。根据上面的公式可以得出子网的子网掩码=255.255.255.(256-64),即255.255.255.192。
再例如,已知一个B类网络经子网划分后的地址块大小为1024。经分析可知,新“主机ID”分布在最后两个字节中(因为这里的地址块大小1024,大于一个字节的地址块大小256,而小于两个字节的地址块大小65536)。再因1024=4×256(之所以要乘256,那是因为在这种情况下IPv4地址中最后一个字节肯定全部属于“主机ID”部分,它的大小就是256),所以可以得知这个子网地址中的两个子地址大小分别是4、256。又因原“网络ID”为255.255(因为原网络中一个B类网络),这样根据以上公式就可以很快得出子网的子网掩码=255.255.(256-4).(256-256),即255.255.252.0。
下节将结合具体的示例对以上这两种情形下划分子网的方法进行具体介绍。
本节要针对上节介绍的两种典型情形下介绍一些具体的VLAM子网划分示例,同时在后还将介绍一个二级子网划分的示例,以说明多级子网划分的方法。
1.已知所需子网数和最大地址数情形下的子网划分示例
【示例1】一公司原来使用的是192.168.1.0/24这个标准网络,现想为公司中每个部门(共6个)单独配置一个子网,其中最大一个部门要分配IPv4地址的数量不超过25个。求每个子网的子网掩码、地址范围、网络地址和广播地址。
这个示例是已知要划分的子网数和最大地址数。具体的划分方法很简单,先结合所需的子网数和最大地址数确定子网的“网络ID”和“主机ID”,然后根据“主机ID”确定子网的地址块大小,其它的就自然确定了。
下面是具体的计算步骤:
(1)本示例中,部门数为6个,但我们知道VLSM所划分的子网数都必须是2n数,可以看到与6最接近的就是划分成8个子网。而划分8个子网需要向“主机ID”借3位,这样子网的“主机ID”位数就仅有5位(8-3)了,则每个子网可使用的IPv4地址数为30个(25=32,再减去每个子网中不可分配给节点使用的网络地址和广播地址),恰好符合该公司中各部门的最大地址数要求。
(2)知道了新“主机ID”大小,也就是知道了各子网的地址块大小。本示例中新“主机ID”共5位,大小为32(25)。
(3)根据以上得出的地址块大小,再根据以上节介绍的公式可得出子网掩码为:原“网络ID”(255.255.255).(256-32),即255.255.255.224。
(4)同样,知道了地址块大小,也就是知道了每个子网的地址范围。本示例的地址块大小为32,也就是把整个原来C类网络中256个地址按每块32地址划分成8等份(要注意的是,第一个地址要从0开始计算),得到的8个子网的地址范围如下:192.168.1.0~192.168.1.31、192.168.1.32~192.168.1.63、192.168.1.64~192.168.1.95、192.168.1.96~192.168.1.127、192.168.1.128~192.168.1.159、192.168.1.160~192.168.1.191、192.168.1.192~192.168.1.223、192.168.1.224~192.168.1.225。
各子网的地址范围知道了,自然就知道了它们的网络地址和广播地址了。每个子网的网络地址是对应地址段中的第一个地址,每个子网的广播地址是对应地址段中的最后一个地址。然后随便选择其中5个子网使用即可,最好是5个连续的子网,这样方便进行路由汇总。同时如果你的设备不支持全0子网和全1子网的话,则不要选择第一个和最后一个子网。
【示例2】一公司想把原来使用的172.16.0.0/8标准网络分成12个子网,其中一个最大的子网节点数在4000个左右。求每个子网的子网掩码、地址范围、网络地址和广播地址。
这个示例同样是已知要划分的子网数和最大地址数,具体的划分方法很简单与上示例一样。下面是具体的计算步骤:
(1)本示例中要划分成12个子网,与12最接近的可划分子网数就是16,由此可见要向原来的“主机ID”借4位(24=16),也就是第三个八位组的高四位。这样一来子网的“主机ID”位数就仅有12(16-4)位了,则每个子网可使用的IPv4地址数为4094(212-2)(同样是因为要减去每个子网中不可分配给节点使用的网络地址和广播地址)个,恰好符合该公司中最大子网地址数4000的要求。
(2)知道了新“主机ID”大小,也就是知道了各子网的地址块大小。本示例中新“主机ID”共12位,总地址块大小为4096(212)。但这个地址块是分布在第三个字节和第四个字节中,第三个字节有最低的4位,对应的子地址块大小为16,而第四个字节包括了全部了8位,对应的子地址块大小为256。
(3)根据以上得出的两个子地址块大小,根据上节介绍的公式可以得出子网掩码为:原“网络ID”(255.255).(256-16).(256-256),即255.255.240.0。
(4)同样知道了总地址块大小,也就是知道了每个子网的地址范围。本示例的地址块大小为4096,也就是把整个原来B类网络中65536个地址按每块4096地址划分成16等份,得到的16个子网的地址范围如下:
172.16.0.0~192.16.15.255(172.16.0.0/20)、172.16.16.0~172.16.31.255(172.16.16.0/20)、172.16.32.0~172.16.47.255(172.16.32.0/20)、172.16.48.0~172.16.63.255(172.16.48.0/20)、172.16.64.0~172.16.79.255(172.16.64.0/20)、172.16.80.0~172.16.95.255(172.16.80.0/20)、172.16.96.0~172.16.111.255(172.16.96.0/20)、172.16.112.0~172.16.127.225(172.16.112.0/20)、172.16.128.0~172.16.143.225(172.16.128.0/20)、172.16.144.0~172.16.159.225(172.16.144.0/20)、172.16.160.0~172.16.175.225(172.16.160.0/20)、172.16.176.0~172.16.191.225(172.16.176.0/20)、172.16.192.0~172.16.207.225(172.16.192.0/20)、172.16.208.0~172.16.223.225(172.16.208.0/20)、172.16.224.0~172.16.239.225(172.16.224.0/20)、172.16.240.0~172.16.255.225(172.16.240.0/20)。
同样,各子网的地址范围知道,自然就知道了它们的网络地址和广播地址了。然后随便选择其中12个子网使用即可,最好是12个连续的子网,这样方便进行路由汇总。同时如果你的设备不支持全0子网和全1子网的话,则不要选择第一个和最后一个子网。
【示例3】每个子网有不超过58个节点要分配IPv4地址,最合适的子网掩码是()。
A.255.255.255.192B.255.255.255.248 C.255.255.255.224D.255.255.255.240
这道题很简单,也是给出了子网中的最大地址数,那就是58个。由此可见,最恰当的方式是对一个C类标准网络进行子网划分,因为58小于一个字节的地址数256。而地址块中与58最接近的一个就是64(注意,地址块都是2n,n代表“主机ID”的位数),即26。这样一来立即可得出它的子网掩码为:255.255.255.(256-64),即255.255.255.192。
2.已知子网地址前缀或子网掩码的情形下的子网划分示例
这种情形下,子网掩码的相关计算就更容易了,可以直接通过地址前缀或子网掩码得出地址块大小,然后算出其它方面,如地址范围、网络地址和广播地址。
【示例4】IPv4地址为10.32.0.0,子网掩码为255.224.0.0的子网中最大可分配给主机的IPv4地址是什么。
这道题也是属于上节介绍的第二种情形,已知了子网的子网掩码。这时可根据子网掩码255.224.0.0很快得出该子网中的“主机ID”分布在IPv4地址后面三个字节中,各自的子地址块大小分别是:32(256-224)、256(256-0)、256(256-0)。
在这种“主机ID”分布在多个字节的情形中,起关键作用的就是包含“主机ID”中的第一个字节,如这里IPv4地址中第二个字节的“224”,相当于告知了该字节中的子地址块大小就是32(256-224),由此很快可以得出各子网的该字节取值范围就依次是0~31、32~63、64~95,……。题中给出的10.32.0.0恰好在第二个子网中,它的IPv4地址段为10.32.0.0~10.63.255.255,因为广播地址不能分配给主机使用,所以该子网中可分配给主机使用的最大IPv4地址就是10.63.255.254。
【示例5】IPv4地址为202.112.14.137,子网掩码为255.255.255.224所在子网的网络地和广播地址各是什么。
这道题也是属于上节介绍的第二种情形,已知了子网的子网掩码。这时可根据子网掩码255.255.255.224得出其地址块大小为32(256-224)。因为它是一个C类标准网络地址,所以“主机ID”仅在IPV4地址中第四个字节。根据地址块大小32,可以把第四个字节的值划分为:0~31、32~63、64~95、96~127、128~159、……。由此可见202.112.14.137是在第五个子网中,网络地址就是202.112.14.128,广播地址是202.112.14.159。
3.多级子网划分示例
上面介绍的全是单级子网划分的示例,多级子网划的方法与单级子网划分的方法是一样,只不过是在子网的基础上进行再次划分。下面也举一个示例。
【示例6】把IPv4子网10.32.0.0/11划分成8个子网,求重新划分子网后的子网掩码和第3个子网的网络地址和广播地址。
这属于上节介绍的第二种情形,也就是已知了地址前缀,也就相当于已知了子网掩码。本示例是地址前缀为11,也就是原子网中的子网掩码中前11位全为1,后21位全为0,得到子网掩码为255.224.0.0。
现要对10.32.0.0/11子网进行二次子网划分,且划分的子网数是8个,也就是再要向“主机ID”借3位,由此可知新划分的子网中“网络ID”一共有14位(11+3),得到新子网掩码为255.252.0.0。
得出了新子网掩码后就可以得出属于 “ 主机 ID” 部分的字节的子地址块大小(分别用 256 去减即可)。从 新子网掩码为 255.252.0.0 可以得出, “ 主机 ID” 分布在第二个、第三个和第四个字节中,各自的子地址块大小分别为 4 ( 256-252 )、 256 ( 256-0 )、 256 ( 256-0 )。同样关键是第一个属于 “ 主机 ID” 的字节的子地址块大小,即 4 。所以 10.32.0 .0/11 重新划分子网后的第二个字节的值是以 4 为单位进行划分的。从第一个新子网开始,第二个字节的值依次是 32 、 35 、 39 、 43 、 47 、 51 、 55 、 59 、 63 。题中所求的第三个子网就是第二个字节值为 39 的子网,它的地址段范围为 10.39.0.0~10.43.255.255 ,其网络地址和子网地址自然就分别为 10.39.0.0/14 和 10.43.255.255/14 。