在看iptables命令的使用方法时,注意到一种从没见过的IP地址表示方法:192.168.0.0/24,虽然可以从字面上猜测其中含义,但总觉得有些不妥。
查了几本书,结果几本书中的答案也不一致。有些书(一本清华大学出版社出版的)把上述地址直观的解释为从192.168.0.0到192.168.0.24之间的IP地址。还有的描述为192.168.0.0到192.168.0.254之间的IP地址(唉,现在出书的太多了,我都写了两本,烂书就是这么出来的)。虽然前面的解释非常直观,但一般人们还是会相信第二种的解释,竟然敢说是从0到254之间的地址,那他一定了解其中详情。他有胆量说,我就要有胆量相信。
192.168.0.0/24这是IP地址的一个规范写法,前面是IP地址,后面跟一个斜杠以及一个数字,这条斜杠及后面的数字称为网络掩码(network mask)。斜杠后面的数字表示有意义的比特位的个数(从左到右)。例如IP地址:255.255.255.255是IPv4中最大可能的IP地址,每个数字(255)都是由8个比特位表示的,每个比特位非0即1,最大值即为11111111,即28=256(0-255)。了解了IP地址之后,就很容易理解上述的写法了。比如192.168.0.0/24中的24表示从左到右的24位(也就是前24位)有效,那么剩下的8位可以是任意数值,可以是0-254之间的任一地址(255为广播地址)。同样192.168.0.0/32也很好理解,就是上述IP地址的前32位有效,也就是所有的位都是有效的,即为192.168.0.0。