大家好,又见面了,我是你们的朋友全栈君。
我不太清楚通配符掩码具体是怎么定义的,但是在大多数初学者的印象中通配符掩码就是子网掩码取反,在网上搜索了一下也没有什么具体解释,下面是摘自百度百科的解释:
路由器使用的通配符掩码(或反掩码)与源或目标地址一起来分辨匹配的地址范围,它跟子网掩码刚好相反。它不像子网掩码告诉路由器IP地址的哪一位属于网络号一样,通配符掩码告诉路由器为了判断出匹配,它需要检查IP地址中的多少位。这个地址掩码对使我们可以只使用两个32位的号码来确定IP地址的范围。这是十分方便的,因为如果没有掩码的话,你不得不对每个匹配的IP客户地址加入一个单独的访问列表语句。这将造成很多额外的输入和路由器大量额外的处理过程。所以地址掩码相当有用。
在子网掩码中,将掩码的一位设成1表示IP地址对应的位属于网络地址部分。相反,在访问列表中将通配符掩码中的一位设成1表示I P地址中对应的位既可以是1又可以是0。有时,可将其称作“无关”位,因为路由器在判断是否匹配时并不关心它们。掩码位设成0则表示IP地址中相对应的位必须精确匹配。
这篇文章我不是介绍通配符掩码的定义,主要讲的是通配符掩码的计算,所以我们言归正传,切入主题:
例:
ip地址为 192.168.0.1 通配符掩码为 0.0.0.255
遇到这样的题目大家肯定会直接把通配符掩码取反,
00000000.0000000.00000000.11111111 (0.0.0.255)取反 11111111.11111111.11111111.00000000
得出的范围是:192.168.0.0/24
例:
ip地址为 192.168.0.1 通配符掩码为 0.0.3.255
00000000.00000000.00000011.11111111 (0.0.3.255)取反 11111111.11111111.11111100.00000000
得出的范围是:192.168.0.0/22
以上2个例子都是连续的,也就是通配符转换二进制后1和0都是连续的,通配符和反掩码区别在于,转换二进制后,通配符可以不连续,而反掩码需要连续,那么不连续的通配符该如何计算呢?
这个问题我也是花了2天才解决的,也是我今天讲的重点.
在教材上有这样一个例子
ip地址为 192.168.0.1 通配符掩码为 0.0.2.255 表示的范围是 192.168.0.0/24和192.168.2.0/24
这题并不能用上面的方法计算,那该如何计算呢?其实我们都存在着一个误区,认为通配符掩码就是子网掩码取反.
我们看百度百科解释中这样的一句话:相反,在访问列表中将通配符掩码中的一位设成1表示I P地址中对应的位既可以是1又可以是0。有时,可将其称作“无关”位,因为路由器在判断是否匹配时并不关心它们。
也就是说通配符掩码1相对应的位,是无关紧要的,可以是0也可以是1.那么我们的计算方法就出来了。
首先转换成二进制
11000000.10101000.00000000.00000001 (192.168.0.1)
00000000.00000000.00000010.11111111 (0.0.2.255)
通配符掩码0位必须检查,1位无需检查,也就是说通配符掩码第三段第7位那个1所对应的IP位,可以是0也可以是1.
结果就产生了2种情况.
11000000.10101000.00000000.********和11000000.10101000.00000010.******** (通配符掩码第四段全为1,也就是代表第四段不需要检查,取值范围在0~255之间,这里我用“星号”表示)
最后这道题的表示范围也就出来了192.168.0.0/24和192.168.2.0/24.
现在大家都应该明白这个例子的表示范围是怎么算出来的吧
我个人总结一下,现在很多人都是认为通配符掩码就是反掩码包括一些教材上都会说是反掩码,所以很多时候算通配符掩码表示的范围都直接把通配符掩码取反.当我在考虑不连续通配符掩码表示范围的计算方法时,很多人都告诉我是把通配符掩码取反,当我告诉他是不连续的时候,他们都不知道怎么计算,在网上查了一下,几乎所有的人都是说吧通配符取反,但是没有人提出过不连续的通配符计算方法.我也是在偶然之间发现这种计算方法的,回过头来想想,其实这都很简单,只是我们对通配符的概念还没完全掌握。我们知道1位不需要检查,对应的位可以是1或者0,但是很多教材上和讲师会误导学生,计算通配符掩码表示的范围就是把通配符掩码取反.
只要理清通配符的概念,我们就可以发现这都是基础概念,我们要知道通配符掩码表示的范围的计算,虽然通过把通配符掩码取反,可以得出正确的结果,但并不是正确的算法,往往这种取反的算法会误导我们对通配符的理解。对于初学者,我觉得还是按照第二种算法去计算,这样能更好的巩固对通配符的理解
转载于:https://blog.51cto.com/2351077/600129
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161520.html原文链接:https://javaforall.cn