为什么需要子网划分?
1、我们知道,Internet组织机构定义了五种IP地址用于主机的有A、B、C三类地址。其中A类网络有126个,每个A类网络可能有
16 777 214台主机,它们处于同一广播域。而在同一广播域中有这么多结点是不可能的,网络会因为广播通信而饱和,结果造成16 777 214个地址大部分没有分配出去,形成了浪费。
2、随着互连网应用的不断扩大,IP地址资源越来越少。为了实现更小的广播域并更好地利用主机地址中的每一位,可以把基于类的IP网络进一步分成更小的网络,每个子网由路由器界定并分配一个新的子网网络地址,子网地址是借用基于类的网络地址的主机部分创建的。划分子网后,通过使用掩码,把子网隐藏起来,使得从外部看网络没有变化,这就是子网掩码。
子网掩码概念:
子网掩码是一个32位的2进制数,其对应网络地址的所有位都置为1,对应于主机地址的所有位都置为0。
由此可知,
A类网络的缺省的子网掩码是255.0.0.0,
B类网络的缺省的子网掩码是255.255.0.0,
C类网络的缺省的子网掩码是255.255.255.0。
将子网掩码和IP地址按位进行逻辑“与”运算,得到IP地址的网络地址,剩下的部分就是主机地址,
从而区分出任意IP地址中的网络地址和主机地址。子网掩码常用点分十进制表示,
我们还可以用网络前缀法表示子网掩码,即“/<网络地址位数>”。
如138.96.0.0/16表示B类网络138.96.0.0的子网掩码为255.255.0.0。
基于子网掩码的分组转发规则:
上一篇我们学习了“路由表,分组转发算法”知道了路由转发分组的规则。
但是当引入了子网掩码概念之后,路由表相应的内容就需要增加“子网掩码”这一项。如下:
子网掩码告知路由器,地址的哪一部分是网络地址,哪一部分是主机地址,使路由器正确判断任意IP地址是否是本网段的,从而正确地进行路由。
当进行子网划分之后,新的分组转发规则如下:(结合上面的路由表图分析)
(1) 从收到的分组的首部提取目的 IP 地址D。
(2) 先用各网络的子网掩码和D
逐位相“与”,看是否和
相应的网络地址匹配。若匹配,则将分组直接交付。
否则就是间接交付,执行(3)。
(3) 若路由表中有目的地址为D 的特定主机路由,则将
分组传送给指明的下一跳路由器;否则,执行(4)。
(4) 对路由表中的每一行的子网掩码和D 逐位相“与”,
若其结果与该行的目的网络地址匹配,则将分组传送
给该行指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表
中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
对以上6条总结如下:直接交付 ≥ 特定路由 ≥匹配路由 ≥
默认路由
基于子网掩码的分组转发规则的一个实例:
(1) 从收到的分组的首部提取目的 IP 地址D。
D:128.30.33.138
(2) 先用各网络的子网掩码和D 逐位相“与”。
255.255.255.128转化为2进制为:
255.255.255.10000000(前3个255表示为2进制时是全1,在此就简写)
而目的地址D表示为2进制为:
128.30.33.10001010(当子网掩码前3位均为255时,无论目的地址前3位是什么,都不改变。)
二者&(与)的结果为:
128.30.33.10000000
写成十进制为:
128.30.33.128
很明显 128.30.33.128 ≠ 128.30.33.0
故不是直接交付(接口0与主机不在同一子网内)
(3) 判断路由表中是否有目的地址为D 的特定主机路由
没有。
(4) 对路由表中的每一行的子网掩码和D 逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;
由(2)可知,当子网掩码为255.255.255.128时,目的地址与子网掩码与的结果是:
128.30.33.128 == 接口1的网络地址。故转发分组到接口1对应的路由器.
本文由Cout_Sev 搜集整理并修改
转载请注明出处
谢谢!
【网络基础】子网划分、基于子网掩码的分组转发,布布扣,bubuko.com