应用:判断目的IP跟自己是否是同一网段的依据。
特点:由1和0组成。左边是网络位,1的数目等于网络位的长度;右边是主机位,0的数目等于主机位的长度,1和0绝对不可能间隔,1总在0的前面。
误区:对方跟我在同一子网,但不能通信。
案 例:网 络 配置:PC0:172.16.20.8255.255.255.0
PC1:172.16.20.250 255.255.255.240
PC0上 运 行Ping 172.16.20.250
具体通信过程:
1.PC0认为PC1跟自己在同一个子网,首先广播发送ARP请求PC1的MAC。
2.PC1收到请求后回应PC0的MAC。
3.PC0得到了PC1的MAC地 址,封 装ICMP数据包,其中PC目的IP即172.16.20.250。
4.PC1收到PC0的ICMP请求包,准备响应(其实到这里整个数据通信都是畅通的)。
但是,PC1发现用自己的掩码匹配发现两个IP不是同一 子 网(PC0 :172.16.20.0,PC1:172.16.20.240),而 自己又没有配置网关地址,丢弃数据包不回应,则通信终止。
当然在现实中,有很多用户反映同样的配置可以连通,其实关键在于后面是否配置了网关,因为现实中都配有网关了。
比如,上例中都配上网关:172.16.20.254。 这 样PC1发现PC0不在同一子网后会将数据包转发给网关,然后再与PC0实现通信。
以上案例充分说明子网掩码只具有本地意义,不能作为匹配对端正常通信的依据。这就类似于现实生活中的“一厢情愿”,她符合我的标准,误认为就可以正常交往了,但她发现我不是他的“菜”,通信结束了。
应用:匹配一组符合否规则的IP地址。
特点:0表匹配,1表示不需要匹配。0和1 的位置根据需求可随意安放。
误区:跟子网掩码是相反的过程,简称为“反掩码”,根据子网掩码方式匹配。
案 例 1: 阻 止172.16.1.0/24访问
配置环境:H3C交换机(下同)
命 令:rule 0 deny source 172.16.1.00.0.0.255
根据通配符匹配原则,全0的匹配,即172.16.1;全1的不需要匹配,即172.16.1.X。当然这里刚好与子网掩码讲到的一样,正好 是 255.255.255.0(反 掩码)匹配的结果,全1的是网络位,全0的是主机位。实际上是一种巧合而已,前提是掩码中1总在0的前面。实际上逻辑关系已经变了,只是恰巧蒙对了而已。
在官方的文档中没有反掩码一说,英文名称wildcard mask非常清楚地表明是通配符,如下所示,在H3C交换机上显示的帮助信息:
[JIAOXUE_A1-DS-aclbasic-2003-ip-ac1]rule 0 deny source 172.16.1.0 ?
0 Wildcard bits:0.0.0.0 (a host)
X.X.X.X Wildcard of source
另外一种情况:
案例2:阻止 X.16.1.x访问
命 令:rule 0 deny source 172.16.1.0255.0.0.255
[JIAOXUE_A1-DS-aclbasic-2003-ip-ac1]dis this
acl number 2003 name ip-ac1
rule 0 deny source 0.16.1.0 255.0.0.255
如果按照“反掩码”的思想来匹配就有冲突了,因为全1不是连续的,也不都是在0的前面了,只能用通配符的思想来匹配了,它表示阻止所有中间两位是16.1的网络IP。
当然也有特殊情况,这也作为有的用户实验证明“反掩码”的案例:
案例 3:OSPF的 network命令:宣告172.16.2.0 网络
命 令 :network 172.16.2.00.0.0.255
此时的network命令实际上宣告了172.16.2.0-172.16.2.255有256个地址,如果把接口的掩码反过来写,正好表示172.16.2.0这个网络地址。或者写成如下命令:
network 172.16.3.0 255.255.255.0
最终效果居然一样了。查看系统的配置清单如下:
[JIAOXUE_A1-DS-ospf-11-area-0.0.0.4]dis this
area 0.0.0.4
network 172.16.2.0 0.0.0.255
network 172.16.3.0 0.0.0.255
network 172.16.20.0 0.0.0.255
系统把它自动转换过了,完整地宣告了用户原来要表达的意愿。其实这也是一个特例,因为network本身的功能是宣告网络地址,这就隐含了地址的固定格式,那么通配符掩码在配置的时候必须遵循网络地址的格式,连续的1,如果不是就会提醒配置错误,如下所示:
[JIAOXUE_A1-DS-ospf-11-area-0.0.0.4]network 172.16.0.1 255.0.0.255
OSPF Network mask is not continuous.(OSPF网络掩码不连续)。
思考:network 172.16.3.0 255.255.255.0按照正常匹配应该是宣告IP前三个字节是任意数据,后一个字节是0的网络。
这显然是不符合网络地址规则的,但是它又是连接的1和连接的0,因此系统就“聪明”地自作主张自动转换成正常的网络地址掩码了。正是这样善意的举动导致不少用户产生了“反掩码”这一习惯性的描述。