通配符

和子网掩码一样,都是以“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开始增加块大小,所得结果就是通配符确定的范围了。