通配符
和子网掩码一样,都是以“0”或“1”表示,不过与子网掩码所表示的意思却不一样。子网掩码所表示的是IP的网络位和主机位,而通配符则表示与IP是否匹配。
通配符同样是32位,和IP地址一一对应,“0”位代表精确匹配,而“1“位代表不许匹配。
例如路由器EIGRP的配置中:
RouterA(config)#router eigrp 100
RouterA(config-router)#network 10.0.0.0 0.0.0.255
RouterA(config-router)#network 192.168.1.0 0.0.0.255
10.0.0.0 0.0.0.255说明只要接口的IP地址是以“10.0.0”开头就参与EIGRP进程。同理的,192.168.1.0 0.0.0.255说明只要IP是以192.168.1开头的IP就符合。
现在我从2进制的角度在来解释下
例子:network 10.1.0.0 0.0.31.255
这条命令宣告的子网范围是多少?
我第一次算的时候是这么算的,把0.0.31.255转换为子网掩码255.255.224.0,认为宣告的网络是10.1.0.0——10.1.224.0.。这就是没搞清掩码和通配符的定义。
把0.0.31.255换算为2进制
0.0.31.255 00000000 00000000 00011111 11111111
前19为通配符为0,表示精确匹配。其余13位全为1,表示任意。
那么这13位可组成的范围:00000000 00000000——00011111 11111111,即0.255-31.255。也就是10.1.0.255——10.1.31.255,掩码是/19。
个人觉得通配符确定的是一段主机范围,不是网络范围。例子的问题应改成:
network 10.1.0.0 0.0.31.255
这条命令宣告的主机集合是什么?
在如:10.128.0.0 0.3.255.255?
答案是:10.128.0.0-10.131.255.255
简单的算法:快大小是4(块大小取值4、8、16、32、64、128),从128开始增加块大小,所得结果就是通配符确定的范围了。