通配符掩码|通配符掩码、正掩码及反掩码之间的重大误区

通配符掩码(通配符掩码、正掩码及反掩码之间的重大误区)

【通配符掩码|通配符掩码、正掩码及反掩码之间的重大误区】

今天小编为大家整理了通配符掩码、正掩码及反掩码之间的本质区别,很多小白在学习网络技术过程中,对这几个概念常常模糊不清,通过这篇文章,我相信大家一定对这几个概念更加清晰,也解决了自学路上的一个小坎坷 。之后的学习之后,会越来越顺利 。现在,就一起来看看通配符掩码、正掩码及反掩码都是怎么回事吧(TIPs:文中有很多栗子,更方便大家理解)
通配符掩码|通配符掩码、正掩码及反掩码之间的重大误区



通配符掩码和反掩码与正掩码的根本区别
重大误区
首先纠正一个误区,反掩码和通配符掩码根本不是一个概念,它们有着本质的区别 。反掩码不等于通配符掩码,记住了哦!这是很多小白们在学习中会容易遇到的一个误区!
01
正掩码
正掩码:在正掩码中,二进制的1表示精确匹配,0表示任意;
这个正掩码指的就是我们的子网掩码,比如255.255.255.0,在正掩码中的二进制1表示精确匹配,0表示任意,1和0永远不交叉;1永远在左边,0永远在右边,也就是1和0必须是连续的(连续百思特网的1和连续的0),比如
11111111111111111111111100000000,这就是合法的正掩码,1和0是连续的,没有交叉 。

11111111000000001111111100000000,这样的正掩码是不合法的,1和0不是连续的,并且1和0是交叉的 。
我们在配置IP地址以及路由的时候,会经常使用到正掩码!
02
反掩码
反掩码:在反掩码中,二进制的0表示精确匹配,1表示任意;
这个反掩码我们在动态路由协议的配置中,经常会使用到,通过network命令进行网段宣告时,就会使用到,比如network 192.168.1.0 0.0.0.255 area 0
反掩码中的二进制的0和1永远不交叉;0永远在左边,1永远在右边,0和1必须是连续的(连续的0和连续的1),比如
00000000000000000000000011111111,这样的反掩码是合法的,0和1是连续的,没有交叉 。

11111111000000001111111100000000这样的就是不合法的反掩码,0和1不是连续的,并且0和1是交叉的 。
03
通配符掩码
通配符掩码:在通配符掩码中,二进制的0表示精确匹配,1表示任意;
二进制的0和1的位置,没有任何的固定限制!
可以连续,百思特网也可以是不连续的,可以交叉,也可以不交叉 。
没有任何限制,可以根据自己的匹配范围自行DIY!
在ACL访问控制列表中我们使用的就是通配符掩码
(通配符掩码作为ACL中必不可少的重要组件)
通配符掩码的扩展
通配符掩码在ACL访问控制列表中可以进行灵活的运用,根据自己的业务需求,配置不同的通配符掩码来匹配不同的范围;反正可以随意DIY哈,想怎么玩就怎么玩,没有任何的限制!接下来我们来看看通配符掩码可以怎么玩吧 。。。。。。
01
通配符掩码在ACL访问控制列表中的应用
ACL(Access Control List)访问控制列表的作用是啥,这个我们就不用多说了吧?相信大家都知道吧,在CCNA中都有学习过,ACL我们就不过多介绍了哈,感兴趣或者不懂的兄弟们可以自行baidu一下,我们这里着重来看一下DIY的通配符掩码和ACL能碰撞出怎样的火花?
那我们来看一些例子吧:
通配符掩码中,可以用255.255.255.255(也就是32个二进制1)表示所有IP地址,因为全为1说明32位中所有位都不需检查,此时可用any替代 。
而0.0.0.0 (也就是32个二进制0) 的通配符掩码则表示32位中所有位都必须要进行匹配,它只表示一个IP地址,可以用host表示 。
举例来说:192.168.1.0 0.0.0.255
这个例子中,通配符掩码是0.0.0.255,前面24位是0,最后8位是1,也就是前面24位必须精确匹配,最后8位是什么都没关系 。将这个通配符和前面的IP地址192.168.1.0 结合起来意思就是,匹配从192.168.1.0到192.168.1.255的所有IP地址
(这和OSPF或EIGRP中的反掩码有点相同,应该迷惑了不少小白)
再来一个栗子:
192.168.0.0 0.0.255.255
这个例子匹配的IP地址范围就是
192.168.0.0-192.168.255.255 。
再来一个有挑战的栗子:
192.168.16.0 0.0.7.255
这个例子中,通配符掩码的第三个八位组是7,IP地址的第三个八位组是16,对他们进行分解转化成二进制就是:
16 = 00010 000
7 = 00000 111
前面说过,通配符掩码中0的部分必须精确匹配,1的部分什么都可以,也就是说16的二进制表示法前面的5位 (00010) 必须精确匹配, 最后3位的取值范围可以是任意any (000-111),那么就是:00010000-百思特网00010111,转化成十进制就是16-23 。