networking - 网络: Longest prefix matching

标签 networking

路由器 (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/

相关文章:

javascript - 从 VPC 中的 Lambda 访问 API Gateway - 请求超时

Java NIO - 使用 SocketChannel 接收数据的问题

iphone - 从树莓派连接到 iPhone 热点

linux - 如何将应用程序绑定(bind)到 LINUX 中的特定网络接口(interface)?

java - 服务器和客户端之间的简单连接。客户端发送消息,服务器正确接收消息。但是当服务器尝试回复时什么也不起作用?

python - 被 Python 中的 read_all() 函数困住了吗?

python - 使用 python 通过互联网在 PC 之间发送变量

java - 无法向所有客户端发送消息

c++ - 在 C++ 应用程序 : gethostbyname() failing 中检查互联网连接的可靠方法

python - 使用 TCP 连接发送 PNG 文件