📄 一句话概括
用【目的 IP AND 掩码】逐条比对路由表,命中多条时选最长匹配——掩码越长越具体,优先级越高。
📝 本节和前面几节的关系
3.3.3 收下了包;本篇是路由器最核心的一步——查表。
一、比对算法
对每条记录:目的 IP AND 掩码 → 得网段 → 相等即命中; 多条命中时选最长匹配(掩码位数多者胜)。
二、为什么要最长匹配
越具体的规则越懂这包该去哪—— 例如 /32 主机路由优先于 /24 网段路由,/24 又优先于默认。
三、动手 Demo:查表定出口
一次查表过程:
dst = '192.168.2.7'
print(dst, 'AND 255.255.255.0 = 192.168.2.0')
print('命中 192.168.2.0/24 -> 出口 192.168.1.254')
实跑输出:
--------------------------------------------------------------------
查表定出口
--------------------------------------------------------------------
用【目的 IP AND 掩码】去比对每条记录:
目的 IP 192.168.2.7
AND 255.255.255.0 = 192.168.2.0
-> 命中 192.168.2.0/24 条目
-> 出口 192.168.1.254
多条命中时选**最长匹配**(掩码最长者胜)——
越具体的规则优先,30 位的比 24 位的更优先。
主机上也有一张同样的表(默认网关就是默认路由)—— 12 课 6.18 讲的就是这件事。
30 秒实验
- route print 里找出最长匹配的例子(/32 主机路由)。
- 手算 10.1.2.3 对 /8、/16、/24 三条记录哪条命中。
- 想想【多条命中取最长】若改成【取最短】会出什么乱子。
常见误区
- 以为逐条试到第一条命中就算——要选最长匹配。
- 以为主机不需要路由表——本机也有。
自测三问(点开对答案)
1. 路由表比对怎么做? —— 目的 IP AND 掩码,比对网段。 2. 多条命中怎么选? —— 最长匹配(掩码位数最多)。 3. 主机上有路由表吗? —— 有,默认网关即默认路由。- ☐ 下一节(3.3.5 找不到匹配路由时选择默认路由)
相关笔记
- 确定传输数据的目的地(确定数据传输的目的地) — 12 课视角
- 找不到匹配路由时选择默认路由 — 兜底规则
- 🔌 网络是怎样连接的 · 索引