静态路由:为什么目的地址需要子网掩码

当我定义一个静态路由时,为什么我必须为目标networking定义一个子网掩码? 如果我有多个网关,所有目标networking的子网掩码都是0.0.0.0,会发生什么?

由于目标networking地址本身并不提供一定范围的networking地址,但是如果与networking掩码结合使用,将定义远程networking的全部范围。

例如,假设您正在使用networking10.34.1.0/24上的主机,并且具有如下定义的路由

route add 10.34.2.0 mask 255.255.255.0 10.34.1.1 

上述规则告诉你的计算机,networking10.34.2.0/24(10.34.2.1-10.34.2.254)上的任何主机都可以通过路由器10.34.1.1

即使在单个主机的情况下,指定没有子网掩码的目的地也是没有意义的,这将被定义为

 route add 10.34.3.4 mask 255.255.255.255 10.34.1.2 

如果使用networking掩码0.0.0.0的路由具有冲突的路由,则具有最低度量值的路由通常优先

 route add 0.0.0.0 mask 0.0.0.0 10.34.1.3 metric 10 route add 0.0.0.0 mask 0.0.0.0 10.34.1.4 metric 5 

10.34.1.4将是首选路由,假设没有其他匹配路由存在较低的度量

子网掩码用于告诉你的路由器/操作系统你的地址的networking部分到底是什么。

假设假如你没有networking掩码(这称为有类路由),假设它是10.0.0.0networking,因为它属于A类(有些设备/ OS给它在其接口上定义的子网),假设你有10.1.2.0 )。 在这里看到关于有类和无类路由

这些是类:

 Class A 1. 0. 0. 1 = 00000000.00000000.00000000.00000000 127.255.255.254 = 01111111.11111111.11111111.11111111 0nnnnnnn.HHHHHHHH.HHHHHHHH.HHHHHHHH Class B 128. 1. 0. 1= 10000000.00000000.00000000.00000000 191.255.255.255 = 10111111.11111111.11111111.11111111 10nnnnnn.nnnnnnnn.HHHHHHHH.HHHHHHHH Class C 192. 0. 1. 1 = 11000000.00000000.00000000.00000000 223.255.255.254 = 11011111.11111111.11111111.11111111 110nnnnn.nnnnnnnn.nnnnnnnn.HHHHHHHH Class D 224. 0. 0. 0 = 11100000.00000000.00000000.00000000 239.255.255.254 = 11101111.11111111.11111111.11111111 1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX Class E 240. 0. 0. 0 = 11110000.00000000.00000000.00000000 255.255.255.254 = 11111111.11111111.11111111.11111111 1111XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX 

但是,如果你把子网掩码,那么你可以将10.0.0.0networking分成更多的networking,如10.1.0.0或10.1.1.0。

子网掩码是必需的,因为当你定义静态地址(比如说,在Windows中,它不使用calssful路由,而是无类别的,必须有子网掩码)。

如果你把子网掩码255.0.0.0这意味着只有地址的第一部分是networking地址,所以你的networking是x.0.0.0,如果你要把255.255.0.0,那么它需要的地址的前两部分像xx0.0,等等。 所以当你把子网掩码0.0.0.0,它意味着从0.0.0.0到255.255.255.255的任何地址。

如果您有多条路线用于相同的目的地,则度量值较低的路线将获胜。

关于在大多数设备/ OS中将目的地的子网掩码设置为0.0.0.0如果地址不是0.0.0.0,我不认为可以将子网掩码0.0.0.0。 也就是说,如果子网掩码对应的值为0,则不允许在静态路由的目的地址中放置1位的值。

例如Windows不会让你做到这一点

 route add 10.10.10.0 mask 255.0.0.0 192.168.1.1 

因为您指定了二进制forms的子网掩码255.0.0.0 11111111.00000000.00000000.00000000和二进制forms的目的地址10.10.10.0 00001010.00001010.00001010.00000000。 在子网掩码有0的地方有1(地址的第二和第三部分)