路由器(IPv4)
Destination Interface
0.0.0.0/0 m0
172.58.128.0/17 m1
172.58.128.0/19 m2
172.58.160.0/19 m3
我需要选择哪个界面正确。 我这样做了:
172.58.218.80 m2
172.58.165.90 m3
172.58.124.36 m1
172.58.169.18 m3
172.58.155.112 m2
172.59.12.142 m0
任何人都可以检查我是否做对了吗?因为我真的不明白“最长的前缀匹配”。
我怎么知道路由表中的地址是“匹配”?
由于
感谢。的 resmon6
因此Step1将其转换为二进制。
10101100.00111010.10000000.00000000 172.58.128.0/17
10101100.00111010.10000000.00000000 172.58.128.0/19
10101100.00111010.10100000.00000000 172.58.160.0/19
Step2使用子网掩码获取前缀。
10101100.00111010.1 is the prefix for 172.58.128.0/17
10101100.00111010.100 is the prefix for 172.58.128.0/19
10101100.00111010.101 is the prefix for 172.58.160.0/19
Step3
10101100.00111010.11011010.01010000 172.58.218.80
10101100.00111010.10100101.01011010 172.58.165.90
10101100.00111010.01111100.00100100 172.58.124.36
10101100.00111010.10101001.00010010 172.58.169.18
10101100.00111010.10011011.01110000 172.58.155.112
10101100.00111011.00001100.10001110 172.59.12.142
--------------------------------------------------------
10101100.00111010.1
10101100.00111010.100
10101100.00111010.101
所以这意味着
172.58.218.80 m1
172.58.165.90 m3
172.58.124.36 m0
172.58.169.18 m3
172.58.155.112 m2
172.59.12.142 m0
你能帮我检查一下它是否正确?
谢谢
答案 0 :(得分:18)
当你有一个路由表时,前缀是路由本身转换为二进制,只匹配子网掩码中的位数。所以如果你采用这个路由表
192.168.100.0/24
192.168.0.0/16
并将其转换为二进制文件
11000000.10101000.01100100.00000000 192.168.100.0/24
11000000.10101000.00000000.00000000 192.168.0.0/16
然后使用子网掩码获取前缀。使用子网掩码中的位数,从左侧开始。
11000000.10101000.01100100 is the prefix for 192.168.100.0/24
11000000.10101000 is the prefix for 192.168.0.0/16
现在,当您为目的地选择路线时,您将目的地IP转换为二进制,并选择具有最长匹配前缀的路线。
您可以看到192.168.100.50的目的地与两个路由前缀匹配,因此它选择较长的前缀192.168.100.0/24
192.168.100.50/32 11000000.10101000.01100100.00110010
-----------------------------------------------------
192.168.100.0/24 11000000.10101000.01100100
192.168.0.0/16 11000000.10101000
我知道子网可能会让人感到困惑,但我不想为你工作。我会告诉你,这不正确。
答案 1 :(得分:8)
简介:
到达路由器的每个数据包都有一个目标IP地址。路由器通过将地址与路由表条目列表(通常称为子网前缀)进行匹配,在特定接口上转发数据包。
当IP地址与多个此类前缀匹配时,就会出现挑战。在这种情况下,选择最长的匹配前缀。
最长前缀结合了路由表的分层方法和灵活性,可以唯一地处理到不同目的地的数据包。
上述程序是正确的。但是你不必总是使用二进制文件。有一种更简单的方法。
步骤1:对于每个接口,请按如下方式标识地址范围。
m1:172.58.128.0/17
从右边看15(32-17)位,使它们全部为0得到 启动IP地址。将它们全部设为1以获取结束IP地址。该 最后一个八位位组的1位产生255(8 1)。第三个八位位组中的1位产生127(7 1)和1。 将其添加到128的网络掩码中,我们得到255。
- 开始 - > 172.58.128.0
- 结束 - > 172.58.255.255
m2:172.58.128.0/19
从右边看13(32-19)位,使它们全部为0得到 在此范围内启动IP地址&让他们全部1来得到结局 IP地址(第3个八位字节:128 + 31 [5 1] = 159)
- 开始 - > 172.58.128.0
- 结束 - > 172.58.159.255
m3:172.58.160.0/19
- 开始 - > 172.58.160.0
- 结束 - > 172.58.191.255
步骤2:构建一个界面范围如下的简单表。
注意:
步骤3:将给定的IP地址与正确的范围匹配。
172.58.218.80 -> m1
172.58.165.90 -> m3
172.58.124.36 -> m0
172.58.169.18 -> m3
172.58.155.112 -> m2
172.59.12.142 -> m0