计算机网络的划分子网知识点及部分习题
一、基础知识
1、为什么要划分子网?
首先我们先来了解一下:IP地址(32bit的二进制代码)的类型
这个图中我们可以清晰地看出:
1、此时我们IP的结构为:
IP地址 ::= {<网络号>,<主机号>}
2、判断IP地址的类型只需要看IP地址的前8位即可,即
A 类:0.xxx.xxx.xxx - 127.xxx.xxx.xxx
B类:128.xxx.xxx.xxx - 191.xxx.xxx.xxx
C类:192.xxx.xxx.xxx - 223.xxx.xxx.xxx
了解IP地址后,那为什么要划分子网呢?
因为二级IP地址(也就是上述的IP地址)存在不足:
(1)IP地址空间的利用率很低:从上面的IP地址可以看出,一个A类地址可连接的主机数量超过100万,而一个B类地址可连接的主机数量也超过了6万。而有些单位申请了比较A类或者B类,但是他们所连接得主机数很少,用不完但是又不愿意去申请主机数少的(考虑到以后发展要用)。而这就造成了大量的IP地址白白浪费了。
(2)使路由表变过大导致网络性能变差:我们每一个路由器都应能从路由表中查出怎么到达其他网络的下一跳路由器。而网络数越多,那么路由器中路由表的项目数就会变得越来越多,导致速度慢,性能差。
(3)不灵活:如果一个单位突然想申请一个新的网络,必须要去相关部门申请,十分麻烦。
而划分子网就是为了解决上述问题咯。
简单来说,划分子网就是为了
1、提高利用率,使每个IP地址都能充分利用(注意:子网划分并不增加也不减少可用IP地址数,只是提高利用率)。
2、减少广播所带来的负面影响,提高整体性能。
2、划分子网的方法与结果:
(1)方法:从网络的主机号借用若干位作为子网号。当然真正的主机号就相应地减少
(2)结果:变成了三级IP地址
IP ::={<网络号>,<子网号>,<主机号>}
3、子网掩码
(1)作用:子网划分的一个工具。若进行了子网划分,可以通过子网掩码将网络号、子网号和主机号分开。
当然,子网掩码不能单独存在,它必须结合IP地址一起使用。在路由器交换信息时,自身所在网络的子网掩码必须要已知。
(2)利用子网掩码得到网络地址:将子网掩码和IP地址进行【与】运算。
eg:已知某主机的IP地址为:145.13.3.10,子网掩码为:255.255.255.0,那么子网的网络地址为:145.13.3.0
(3)在没划分子网时,使用子网掩码方便查找路由表,此时的子网掩码就是默认子网掩码。
A类地址的默认子网掩码:255.0.0.0
B类地址的默认子网掩码:255.255.0.0
C类地址的默认子网掩码:255.255.255.0
(4)利用子网掩码来判断一个网络有没划分子网:
判断子网掩码是否为默认子网掩码。是默认的,则没有划分子网;若不是默认的,则有划分子网掩码。
4、使用子网时分组的转发
首先,划分子网后,路由表必须包括三部分:目的网络地址、子网掩码和下一跳的地址。
分组转发的算法如下:
(1)从收到的数据报的首部提取目的IP地址D。
(2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”,看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付,转发任务结束。否则就是间接交付,执行(3)。
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器。否则,执行(4)。
(4)对路由表中每一行,用其中的子网掩码和D逐位相“与”,其结果为N。若N与该行的目的网络地址相匹配,则把数据报传送给该行指明的下一跳路由器。否则,执行(5)。
(5)若路由表中有默认路由,则把数据报传送给路由表中所指明的默认路由器。否则,执行(6)。
(6)报告转发分组出错。
举个栗子,如下图1、当主机H1向主机H2发送数据时,主机H1会先怎样操作?
主机H1会先用自己的子网掩码与目的IP相与,若属于同一子网,就直接封装MAC帧,直接交付给主机H2。无需经过路由器。
2、当源主机H1向目的主机H2发送分组时,R1收到H1向H2发送的分组后查找路由表的过程是如何的?
(1)源主机H向目的主机H2发送的分组的目的地址是H2的IP地址128.30.33.138。
(2)源主机H1判断交付方式(直接?间接?):源主机H1把本子网的“子网掩码255.255.255.128” 与目的主机H2的“IP地址28.30.33.138” 逐位相“与”(即逐位进行AND操作),得出128.30.33.128, 它不等于H1的网络地址(128.30.33.0)。 这说明H2与H1不在同一个子网上。因此H不能把分组直接交付H2,而必须交给子网上的默认路由器R1,由R1来转发。
(3)路由器R在收到一个分组后,就在其路由表中逐行寻找有无匹配的网络地址。
1)先看R1路由表中的第一行。用这一行的“子网掩码255.255.255. 128”和收到的分组的‘目的地址128.30.33.138” 逐位进行【与】运算,得出128.30.33.128。 然后和这一行给出的目的网络地址128.30.33.0进行比较,结果不一 致。
2)用同样方法继续往 下找第二行。用第二行的“子网掩码255.255.255. 128”和该分组的目的地址128.30.33.138” 逐位进行【与】运算,结果是128.30.33.128。这个结果和第二行的目的网络地址128.30.33.128相匹配,说明这个网络就是收到的分组所要寻找的目的网络。
3)此时已不需要再继续查找下去。R1把分组从接口1直接交付主机H2 。
二、习题部分
-
划分子网能扩展IPv4地址空间吗?
答:不能,只是使得地址空间不浪费,提高利用率。 -
有什么办法解决IPV4地址空间不足的问题?
答:IPV6,CIDR,NAT -
划分子网后IP地址结构有何变化?
答:从二级IP地址变为三级IP地址结构{<网络号>,<子网号>,<主机号>} -
路由器收到分组会如何操作?
答:路由器将收到分组的目的IP地址取出,查找路由表第一条路由,将其子网掩码与目的IP相与,若符合第一条路由的目的网络地址(且是直连网络)就直接交付。若符合目的网络地址(不是直连网络)就转交给下一跳路由器。不符合就查找下一条路由。 -
某部门申请到一个C类IP地址,若要分成8个子网,其掩码应为( )。每个子网可包含( )台主机。
答:255.255.255.224,2^5-2=30台
需要借用3位作为子网划分位,2^3=8个子网;C类地址默认掩码为255.255.255.0,从第四个字节借用3位,掩码为:答:255.255.255.224 -
在172.16.8.159 255.255.255.192这个网络里,广播地址是( )
答:IP地址中159转换为二进制为:1001 1111;子网掩码中192转换为二进制为:1100 0000。【与】结果为1000 0000。又根据IP地址为B类地址,所以子网掩码中网络号为255.255,而子网号为255.192,因此子网号数量为10个。即向主机号借用了第三块和第四块的前两个。保持网络号和子网号不变,剩余主机号全变成1.因此,广播地址为:172.16.8.191 -
某单位申请到一个 B 类 IP 地址,其网络标识为 130.53 ,现进行子网划分,若选用的子网掩码为 255.255.224.0 ,
(1) 则可划分为多少个子网?
(2) 每个子网中的主机数最多为多少台?
(3) 请列出全部子网地址。
答:B类地址+网络标识为130.53 ==> IP地址:130.53.0.0
(1)由子网掩码可知,借用了第三块的前三个作主机号,因此,可划分子网数:2^3 = 8
(2)主机数 = 2 ^ 子网掩码中剩余的主机数 - 2
即2 ^ 13 - 2 = 8190
(3) 由子网掩码可知,有3位子网号,子网数为8(000-111),因此子网地址为:
130.53.0.0 / 130.53.32.0 / 130.53.64.0 / 130.53.96.0 / 130.53.128.0 / 130.53.160.0 / 130.53.192.0 / 130.53.224.0 -
划分一个B类子网.网络地址为130.44.0.0,按以下要求划分子网。(若子网号不能为全0或全1)其中A网中50主机,B中60,C中70,D中80主机,请给出:
1)子网掩码;
2)前三个子网地址;
3)第一个子网的广播地址
4)第一个子网的可用主机地址范围。
答:(1)分析:ABCD有4个子网,但是题目明确讲到子网号不能为全0和全1的。那如果我用两个子网号,只能有4个子网(00-11),而且00 和 11根据题目子网号是不能要的,因此用两个子网号的话,我最终只能有2个子网。所以我们要用3个子网号,最终出去全0全1,还有6个子网。注意这四个子网掩码都是相同的。
子网掩码:130.44.224.0
(2)子网地址(没有说子网号不能全0或全1的情况下):130.44.0000 0000.0 - 130.44.11100 0000.0
也就是说,我们需要的只是由000变为111,每一个就是一个子网地址
第一个子网地址:130.44.32.0(不能全0的原因)
第二个子网地址:130.44.64.0
第三个子网地址:130.44.128.0
(3)广播地址:IP地址与子网掩码【与】运算,得到网络地址:130.44.0.0,而子网号为3位,将主机号全部置1。
广播地址:130.44.31.255
(4)第一个可用的子网地址为:130.44.32.0
其广播地址为:130.44.31.255
所以,第一个子网的可用主机地址范围:
130.44.32.1 - 130.44.31.254
即子网地址范围:子网地址 + 1 ~ 广播地址 - 1 -
已知子网掩码,判断两个IP地址是否在同一子网上?
答:将两个IP地址分别和子网掩码做【与】运算,若两者的网络地址相同,则说明是同一子网上;不同,则说明不在同一子网上。 -
根据子网掩码和目的网络地址,要求写出下一跳信息。
来分析一下吧,首先定位路由器R1,我们先看第一个目的网络地址:172.31.33.128,也就是子网1,中间没有隔了路由之类的,直接一条线就可以传到,也就是可以从接口0直接投递出去。第二个目的地址同理。
第三个目的地址:也就是子网3,我们发现子网1不能直接通过线到达子网3,需要经过一个路由器R2,那么这个时候下一跳的信息就要是R1进R2端口的那个IP地址,也就是172.31.33.2 -
已知源IP地址和路由器的路由表信息,求源IP转发出去的方式。
方法:将源地址和从第一行的子网掩码开始进行【与】运算,结果与所在行的目的网络相同,则转发出去的方式即为所在行的下一跳信息。一直做完最后一行的【与】运算,若还不转发出去,就通过默认路由器转发。若没有默认路由器,则丢弃该分组。
答案为:接口0;R2对应接口的IP地址;R4对应接口的IP地址