前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >子网掩码和通配符掩码的区别

子网掩码和通配符掩码的区别

作者头像
全栈程序员站长
发布2022-09-15 15:39:06
1.1K0
发布2022-09-15 15:39:06
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

子网掩码

子网掩码,官方的定义是

一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

说白了子网掩码的工作原理就是,它拥有和主机IP地址一样的位数,每一位与对应的ip地址位进行“与”操作,得出的结果就是主机所在的子网,打个比方,192.168.1.1 255.255.255.0这是一个标准的C类网络,子网掩码/24,所以它的网络位也就是所在的子网就是192.168.1.0,计算过程如下:

首先将192.168.1.0 和 255.255.255.0 转换成二进制,然后一位一位的上下进行与操作,很显然我们得出的结果为

代码语言:javascript
复制
1100 0000. 1010 1000.0000 0001.0000 0001:192.168.1.1

1111 1111.1111 1111.1111 1111.0000 0000 :255.255.255.0

1100 0000.1010 1000.0000 0001.0000 0000:192.168.1.0

子网掩码有一个最基本的要求,1和0必须连续,也就是说不能出现1111 1111.1111 0011.0000 0000.0000 0000这种情况。

而根据上面的计算,我们可以看出,子网掩码后面的0的个数就是IP地址主机位的个数,抛去网关使用(1个到3个根据不同的冗余配置),组播(全1),网段(全0)后剩下的就是实际子网中能容纳的主机数(再说细致就是划分子网的知识了,在这里不多赘述)。

综上所述,子网掩码的作用就是让我们知道IP地址所属的网段。我们来实际看一下子网掩码出现的位置:

  1. 设备端口ip地址配置:ip add 192.168.1.1 255.255.255.0
  2. 路由汇总中,如将下面四个地址汇总:192.168.20.0 255.255.252.0 192.168.20.1/24 192.168.21.1/24 192.168.22.1/24 192.168.23.1/24
  3. 在前缀列表中,如:ip prefix-list 1 permit 192.168.1.0/24,意为我只关心192.168.1.0/24网段的路由。
  4. 其他一些需要限制具体网段的时候

通配符掩码

通配符掩码,很多人认为通配符掩码只是子网掩码的相反,如:192.168.1.1 子网掩码255.255.255.0,它的通配符掩码就是0.0.0.255,其实不是。官方对通配符掩码给的定义是:

路由器使用的通配符掩码与源或目标地址一起来分辨匹配的地址范围,它与子网掩码不同。它不像子网掩码告诉路由器IP地址的哪一位属于网络号一样,通配符掩码告诉路由器为了判断出匹配,它需要检查IP地址中的多少位。

换句话说,子网掩码更像是我们了解的正则表达式,它是将IP地址看成一个二进制字符串,而我们只关心其中几位,它的计算方式与子网掩码也有不同,通配符掩码是0的位置使我们必须要确定相同的,而通配符掩码是1的位置使我们不关心的,如在路由协议中我们想将192.168.1.0网段的所有主机都宣告进入路由协议中,我们使用的语句是:

代码语言:javascript
复制
network 192.168.1.0 0.0.0.255

这里的计算方法是:

代码语言:javascript
复制
1100 0000. 1010 1000.0000 0001.0000 0000:192.168.1.0

0000 0000.0000 0000.0000 0000.1111 1111:0.0.0.255

所以我们关心的只是前几位,只要IP地址是为192.168.1.x格式的就宣告进路由协议。说到这里通配符掩码和子网掩码可能最本质的一点不同就是通配符掩码不需要1和0必须连续,就比如192.168.0.0 通配符掩码是0.0.2.255

我们转换成二进制:

代码语言:javascript
复制
1100 0000. 1010 1000.0000 0000.0000 0000:192.168.0.0

0000 0000.0000 0000.0000 0010.1111 1111:0.0.2.255

注意这里通配符掩码是不连续的,所以这个通配符掩码代表的意思是匹配192.168.1.0/24和192.168.2.0/24两个网段的所有主机。

我们来看一下通配符掩码出现的场合:

  1. 将IP地址宣告进路由协议:network 192.168.1.0 0.0.0.255
  2. ACL访问控制列表:ip access-list 1 permit 192.168.0.0 0.0.2.255

这里和前缀列表中的ip prefix-list 1 permit 192.168.1.0/24做一下比较,ACL访问控制列表的意思是我抓取一切IP地址满足192.168.0.x和192.168.1.x格式的无论它的掩码是/24,/25,/30我都感兴趣,但前缀列表中192.168.1.0/24得意思是我只关心192.168.1.0/24网段的路由,所有不属于这个网段的比如IP地址也是192.168.1.x格式但掩码是/25的IP地址我也不感兴趣。

相信经过这么一番解释,大家能对子网掩码和通配符掩码有了写基本的区分。总结一下,就是说,子网掩码是用来区分网络位和主机位,而通配符掩码是IP地址的正则表达式。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161513.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 子网掩码
  • 通配符掩码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档