路由器 (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
第三步
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
你现在能帮我检查一下它是否正确吗?
谢谢
最佳答案
当您有路由表时,前缀是转换为二进制的路由本身,仅与子网掩码中的位数匹配。所以如果你采用这个路由表
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
我知道子网划分一开始可能会令人困惑,但我不想为您做您的工作。我会告诉你这是不正确的。
关于networking - 网络: Longest prefix matching,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9335504/