浅谈为何需要反掩码inverse-mask wildcard-mask
反掩码,英文名
wildcard-mask
,也直译成inverse-mask
在介绍反掩码之前,我们先回顾一下掩码 mask
的相关知识点
1.掩码
,
掩码中有1有0,其中连续的
1表示网络号,而连续的
0表示主机范围,
举例:
255.255.255.0
转成二进制形式:
1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
其中的1有24个,说明这个掩码有24位的网络号,也可以用 /24
表示
/24
是网络位,24个 比特(bit )位,且为连续的
24个1,
子网掩码长度一共32个bit,由两部分组成,网络位
+主机位
,本例中,网络位有24bit,剩下的8个bit就是主机位,用二进制形式表示,其范围是:
0000 0000 ~ 1111 1111
转成十进制形式:
0~255,
主机编号从0到255,共256个
/24
的网段里, 0用来表示本网段,作为网段地址使用,255用于表示网段中的广播地址,所以可用于表示主机的主机地址有254个,
这就是子网掩码的作用,
请注意,子网掩码中的1是连续的,不能出现一堆1里面夹着0的情况,
子网掩码中的0也同理,不能出现一堆0里面夹着1的情况。
比如,
1111 1111.1111 0000.1111 1111.0000 1100
,这样的子网掩码是不合法的,
请注意,下面的斜线模式指的是连续的1
和连续的0
,1是连续的,0也是连续的,不能出现断开的情况,
比如,/16
指的是连续的16个1再接着16个连续的0,是这样的 11111111.11111111.00000000.00000000
而不能出现类似 11111111.00000000.11111111.00000000,这样的虽然也是16个1和16个0,但是,1不连续了,0也不连续了,所以是错误的子网掩码,
所以子网掩码
只能是如下的列表中的一个:
/1 128.0.0.0
1
0000000.0.0.0
/2 192.0.0.011
000000.0.0.0
/3 224.0.0.0111
00000.0.0.0
/4 240.0.0.01111
0000.0.0.0
/5 248.0.0.011111
000.0.0.0
/6 252.0.0.0111111
00.0.0.0
/7 254.0.0.01111111
0.0.0.0
/8 255.0.0.011111111
.0.0.0/9 255.128.0.0
11111111
.1
0000000.0.0
/10 255.192.0.011111111
.11
000000.0.0
/11 255.224.0.011111111
.111
00000.0.0
/12 255.240.0.011111111
.1111
0000.0.0
/13 255.248.0.011111111
.11111
000.0.0
/14 255.252.0.011111111
.111111
00.0.0
/15 255.254.0.011111111
.1111111
0.0.0
/16 255.255.0.011111111
.11111111
.0.0/17 255.255.128.0
11111111
.11111111
.1
0000000.0
/18 255.255.192.011111111
.11111111
.11
000000.0
/19 255.255.224.011111111
.11111111
.111
00000.0
/20 255.255.240.011111111
.11111111
.1111
0000.0
/21 255.255.248.011111111
.11111111
.11111
000.0
/22 255.255.252.011111111
.11111111
.111111
00.0
/23 255.255.254.011111111
.11111111
.1111111
0.0
/24 255.255.255.011111111
.11111111
.11111111
.0/25 255.255.255.128
11111111
.11111111
.11111111
.1
0000000
/26 255.255.255.19211111111
.11111111
.11111111
.11
000000
/27 255.255.255.22411111111
.11111111
.11111111
.111
00000
/28 255.255.255.24011111111
.11111111
.11111111
.1111
0000
/29 255.255.255.24811111111
.11111111
.11111111
.11111
000
/30 255.255.255.25211111111
.11111111
.11111111
.111111
00
/31 255.255.255.25411111111
.11111111
.11111111
.1111111
0
/32 255.255.255.25511111111
.11111111
.11111111
.11111111
2.反掩码
反掩码也可以用来表示一个网段,比如:0.0.0.255
,表示这个网段的网络号是 /24
,从而判断出主机号有256个,
子网掩码 255.255.255.0
表示一个网段的网络号是 255.255.255
即 /24
,主机范围是 0~256 即2⁸ (256)个
这么看来,反掩码 0.0.0.255 =255.255.255.0
作用相同,为啥又弄出一个反掩码捏,多此一举?!
看个例子:
要创建一个acl,只允许两个网段通过,
1.192.168.10.0/24
2.192.168.14.0/24
先来试试用子网掩码
来解决这个问题,
因为10和14是不连续的,所以无论我们怎么掩,都会把11、12、13放进来, 10到14有5个数,
为了便于说明和理解,咱们先看2台主机,a.b.c.10
和a.b.c.14
因为 10 和14 是不连续的,相差了3个数(11、12、13),
要想把这两个ip放到同一个网段中,就需要至少能容纳8
台主机的子网掩码(用容纳4台主机的子网掩码/30是不行的,不能同时装下10和14,所以只能选用/29的子网掩码),255.255.255.248
即/29
,
这样的子网掩码下,a.b.c.10 和 a.b.c.14就能在同一个网段了,
网段的范围是: a.b.c.8 、a.b.c.9 、a.b.c.10
、a.b.c.11、a.b.c.12 、a.b.c.13 、a.b.c.14
、a.b.c.15
把这两个ip放到同一个网段中,就能使用一条路由来表示a.b.c.10
和 a.b.c.14
这两个主机地址了
通过上面的
a.b.c.10
和a.b.c.14
的例子我们可以类比出,
要想将192.168.10
.0和192.168.14
.0放到一个路由条目里,需要使用的子网掩码是/21
即255.255.248.0
(11111111.11111111.11111000.0
)
路由如下:
192.168.10.0 /21
或者192.168.14.0 /21
,
表示 192.168.10.0和192.168.14.0在同一个子网里,
虽然用子网掩码能完成将192.168.10.0
和192.168.14.0
放到一个子网里,
但同时问题也出现了,
就是,192.168.8.0
、192.168.9.0
、192.168.11.0
、192.168.12.0
、192.168.13.0
、192.168.15.0
这6个网段也被包括进来了,
而我们的需求是,一条路由中只有192.168.10.0
和192.168.14.0
这两个网段,没有其他的网段。
那么,这时候就需要反掩码登场了,
我们先来观察一下,
192.168.10.0和192.168.14.0 在二进制下是什么样子,不同之处在哪里,
192.168.10.0:11000000.10101000.00001
0
10.00000000
192.168.14.0:11000000.10101000.000011
10.00000000
可见,192.168.10.0和192.168.14.0的二进制表示形式中,只有红色字符所在的位置不同
,其他位置一摸一样,
那么,根据反掩码的规则,0表示精确匹配,1表示可以是任意数值,我们现在只保留红色字符的那一位为1,其他位都置为0,就可以生成一个反掩码,
00000000.00000000.0000
1
000.00000000
它的点分十进制的表示是:
0.0.
4
.0
为了方便理解,我们给这个反掩码变个样子,
00000000.00000000.0000
X
000.00000000
X
所在的位置上,可以是任意值,即,可以是0
也可以是1
,
同时,我们知道反掩码是不能单独存在的,反掩码必须跟着一个ip,
所以我们让这个反掩码跟着192.168.10.0
,让它们之间相互作用,
当这个反掩码中除了x
所在的位置以外,其他的所有位置的值都与192.168.10.0
一模一样的时候,
就有:
11000000.10101000.00001`X`10.00000000
即
192.168.(
1010+0x00
)₂
.0
当x
取0
时,
有
192.168.(1010+0000)₂
.0,
192.168.(1010)₂
.0,
即192.168.10
.0
当x
取1
时,
有
192.168.(1010+0100)₂
.0,
192.168.(1110)₂
.0,
即192.168.14
.0
同理,让这个反掩码跟着192.168.14.0
,
除了X
位之外的其他位置和192.168.14.0
一模一样的时候,也有
192.168.(
1010+0X00
)₂
.0
当x
取0
时,
有
192.168.(1010+0000)₂
.0,
192.168.(1010)₂
.0,即192.168.
10
.0
当x
取1
时,
有
192.168.(1010+0100)₂
.0,
192.168.(1110)₂
.0,即192.168.
14
.0
它的点分十进制的表示:
0.0.
4
.0
让反掩码0.0.4.0
和192.168.10.0
或者192.168.14.0
结合起来,就可以表示192.168.10.0
与192.168.14.0
这两个网段了,
表示形式如下:
192.168.10.0
0.0.4.0
或者
192.168.14.0
0.0.4.0
反掩码0.0.4.0
可以唯一的标识192.168.10.0
与192.168.14.0
这两段网络,而不会出现把其他网段也包括进来的情况了,
因为,反掩码 0.0.
4.0
(00000000.00000000.0000
1000.00000000
)跟着192.168.10.0
的时候,只有1的位置是可以变换的,变成0,就是192.168.10.0
本身,变成1就是192.168.14.0
,
所以 0.0.
4.0
作用于192.168.10.0
上的时候, 只能标识两个网段,即192.168.10.0
与192.168.14.0
这两个网段,
这就是
反掩码
的精确匹配
的作用,是用子网掩码无法办到
的。
一定要明确一个根本点,在反掩码中,有
0
的位置表示必须精确匹配
这一位,1
表示不关心
这一位(是0是1都行),
还有一个往往容易被忽视的地方,那就是反掩码不能单独存在,
反掩码
是要跟着一个ip地址
的(这个ip地址是一个具体的主机地址也可以是一个网络号,它们是一个整体,
举例:192.168.1.1 0.0.0.0 ,表示我们期待一个ip地址,并且这个ip地址的32个bit必须在每个位置上都与192.168.1.1一致,达到精确匹配的要求,所以,192.168.1.1 0.0.0.0 就表示的是 192.168.1.1 这个主机地址),也就是我们期待的目标是 192.168.1.1 这台主机,
再举例:192.168.1.0 0.0.0.255,表示我们期待一些ip地址,并且这些个ip地址的前24位必须与192.168.1.0这个网络号一致,达到精确匹配的要求,剩余的其他位置是什么都无所谓,我们并不关心,所以最终符合我们要求的ip地址有,192.168.1.0、192.168.1.1、192.168.1.2、192.168.1.3、192.168.1.4、……、191.168.1.254、192.168.1.255,这么多个,用子网掩码的形式来表示就是 ,192.168.1.0/24这个网段里所有的主机,对反掩码的一切解读,都离不开它所跟随的ip地址,总是以这个ip地址为依据以这个ip地址为参考的,单独拿出一个反掩码来是没有任何意义的,
June the 06th 2022
浅谈为何需要反掩码inverse-mask wildcard-mask相关推荐
- linux下反删除软件,浅谈Linux文件系统反删除方法(二)
列出的档有很多(这里找到2692个),第一字段是档节点号,第二字段是档所有者,第三字段是读写权限,接下来是档大小,占用块数,删除时间.然后就可以根据档大小和删除日期判断那些是我们需要的.比如我们要恢复 ...
- python去水印如何制作mask_浅谈图像处理中掩膜(mask)的意义
刚开始涉及到图像处理的时候,在opencv等库中总会看到mask这么一个参数,非常的不理解,在查询一系列资料之后,写下它们,以供翻阅. 什么是掩膜(mask) 数字图像处理中的掩膜的概念是借鉴于PCB ...
- QQ密码保护与反保护浅谈
QQ密码保护与反保护浅谈 Leen 记得刚学vc的时候,了解了一点hook,就感觉无所不能,这偷个扣扣的小密码不是轻而易举 结果发现是异想天开.. 先说说一种常用的预防键盘钩子钩去密码的方法, ...
- 浅谈反编译在项目中的使用
浅谈反编译在项目中的使用 什么是反编译 反编译的作用 反编译工具 动态编程 JavaSsist 源码安全 什么是反编译 将可读性较好的高级计算机语言(JAVA,C#,C)转换成计算机能解读.运行的低阶 ...
- opencv运动目标跟踪预测_浅谈多目标跟踪中的相机运动
©PaperWeekly 原创 · 作者|黄飘 学校|华中科技大学硕士生 研究方向|多目标跟踪 之前的文章中我介绍了 Kalman 滤波器,这个算法被广泛用于多目标跟踪任务中的行人运动模型.然而实际场 ...
- 浅谈多目标跟踪中的相机运动
©PaperWeekly 原创 · 作者|黄飘 学校|华中科技大学硕士生 研究方向|多目标跟踪 之前的文章中我介绍了 Kalman 滤波器,这个算法被广泛用于多目标跟踪任务中的行人运动模型.然而实际场 ...
- 浅谈VB6.0中的实用技巧
浅谈VB6.0中的实用技巧 (一) VB6.0中文本框处理技巧 在Visual Basic中,文本框(TextBox)是最常用的控件,熟练运用文本框 是开发出高质量的应用程序的基础.笔者在从事应用程序 ...
- 形态学滤波:腐蚀与膨胀(浅谈)
形态学滤波:腐蚀与膨胀(浅谈) 一 关于二值化.膨胀.腐蚀以及拟合椭圆中心的代码如下** 二 关于腐蚀和膨胀,在此做一些浅显的总结. 三 对于上述代码中所生成的图片,进行一些说明. 四 接下来谈谈自己 ...
- aes key长度_原创 | 浅谈Shiro反序列化获取Key的几种方式
点击"关注"了解更多信息 关于Apache Shiro反序列化 在shiro≤1.2.4版本,默认使⽤了CookieRememberMeManager,由于AES使用的key泄露, ...
最新文章
- boost::container模块实现分配器参数的测试程序
- Keiichi Tsuchiya the Drift King
- Combox使用的一些技巧
- 工作203:实现预览效果
- (pytorch-深度学习系列)CNN中的池化层-学习笔记
- echarts 关系 两个多个关系_情感归宿:异性聊天时,常用这些结束语的两个人,关系很难清白...
- “编程能力差,90%输在了这点上!”阿里巴巴工程师:其实都是瞎努力!
- 小心!智能音箱正在监听你?| 极客头条
- 掌握rm命令删除文件
- python入门指南_Python中的逻辑门–入门指南
- @transactional 可以定义到controller_仿照源码,手写一个自定义 Spring MVC 框架
- R语言基于ggplot绘制多条ROC曲线
- 阵列卡PERCH330_H730配置手册
- 三星手机怎么看html5,三星手机查看硬件信息方法
- [魔改整合] [Mod整合包] [1.12.2][Mod整合包]幸运贪婪超级整合-超多好玩的mod
- (附源码)springboot宠物管理系统 毕业设计121654
- 5x2cv配对t检验(5x2cv paired t test)
- 为什么程序员喜欢在半夜写代码?
- unity3d俄罗斯方块源码教程+源码和程序下载
- CSDN会员他到底有什么用?