route add 10.2.0.0 mask 255.255.0.0 202.88.219.254
这条命令执行后,在数据再次进行转发时,会按以下规则进行匹配:
- 假设目标地址为:10.2.34.23。则计算机会计算
10.2.34.23 & 255.255.0.0
的值是否与10.2.0.0 & 255.255.0.0
的值是否相等。
计算结果为: 10.2.34.23 & 255.255.0.0 = 10.2.0.0
、10.2.0.0 & 255.255.0.0 = 10.2.0.0
。
最终结果相等均为10.2.0.0,所以该数据的下一跳将转发给202.88.219.254
- 假设目标地址为:10.3.1.2。则:
10.3.1.2 & 255.255.0.0 = 10.3.0.0
并不等于10.2.0.0 & 255.255.0.0 = 10.2.0.0
的结果10.2.0.0。
所以该数据的下一跳将转发给默认网关。
所以mask与设置的转发地址202.88.219.254无关。mask = 255.255.0.0 的作用是在10.2.0.0
的基础上设置了一个范围,表示:IP地址属于:10.2.0.0 - 10.2.255.255 的数据,转发给202.88.219.254。
如果mask 设置为 255.255.255.0,则表示:IP地址属于:10.2.0.0 - 10.2.0.255 的数据,转发给202.88.219.254。
换成二进制更能说明一切:
IP: 10.2.0.0
mask: 255.255.0.0
IP: 00001010 00000010 00000000 00000000
mask: 11111111 11111111 00000000 00000000
掩码为1对应的部分,IP地址必须相同;掩码为0对应的部分,IP地址可以随意变动,其变动范围为:00000000 00000000
至11111111 11111111
。
所以IP地址的范围为:00001010 00000010 00000000 00000000
- 00001010 00000010 11111111 11111111
,即:10.2.0.0 - 10.2.255.255
如果掩码为3个255,则如下:
IP: 10.2.0.0
mask: 255.255.255.0
IP: 00001010 00000010 00000000 00000000
mask: 11111111 11111111 11111111 00000000
掩码为1对应的部分,IP地址必须相同;掩码为0对应的部分,IP地址可以随意变动,其变动范围为:00000000
至11111111
。
所以IP地址的范围为:00001010 00000010 00000000 00000000
- 00001010 00000010 00000000 11111111
,即:10.2.0.0 - 10.2.0.255
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…