news 2026/5/6 2:31:22

网络包匹配路由的原则是啥 从 01 与啥的运算讲起

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网络包匹配路由的原则是啥 从 01 与啥的运算讲起

明白了,你想从最基础的二进制位运算原理讲起,理解网络包是如何匹配路由的。我们一步步来,先从 IP 路由的核心概念讲起:


1️⃣ IP 路由匹配的基本原则

网络路由匹配,实际上是把目标 IP 地址与路由表里的目的网络地址 + 子网掩码做比较,来决定使用哪条路由。核心原则是:

  1. 先按最长前缀匹配(Longest Prefix Match, LPM)

    • 路由表里可能有多条能匹配的路由,但选择掩码最长的那条
    • 因为掩码越长,匹配越精确。
  2. 匹配是通过按位与运算(AND)实现的

    • IP 与子网掩码按位与得到网络地址。
    • 如果这个网络地址和路由表的目的网络地址相同,就算匹配成功。

2️⃣ 按位与运算原理

按位与运算符号是&,规则如下:

ABA & B
000
010
100
111

也就是说:

  • 只有两个操作数都是1的位才会输出1
  • 其他情况输出0

在 IP 路由里,它的作用是把目标 IP 截掉子网外的部分,只保留网络地址部分。


3️⃣ 路由匹配公式

假设目标 IP 是目标IP,路由表里有条路由:

目的网络: 192.168.1.0 子网掩码: 255.255.255.0

匹配条件是:

目标IP & 子网掩码 == 目的网络地址

例子:

  • 目标 IP:192.168.1.45 → 二进制:11000000.10101000.00000001.00101101
  • 子网掩码:255.255.255.0 → 二进制:11111111.11111111.11111111.00000000

按位与运算:

11000000.10101000.00000001.00101101 (目标IP) AND 11111111.11111111.11111111.00000000 (掩码) = 11000000.10101000.00000001.00000000 (结果)

转换回十进制 →192.168.1.0
匹配成功 → 使用这条路由。


4️⃣ 多条路由冲突时如何选择

假设路由表里有:

目的网络子网掩码下一跳
192.168.0.0255.255.0.0R1
192.168.1.0255.255.255.0R2

目标 IP = 192.168.1.45

  • 192.168.0.0/16:匹配成功(掩码前 16 位相同)
  • 192.168.1.0/24:匹配成功(掩码前 24 位相同)

原则 →选择最长前缀

  • 192.168.1.0/24 的掩码更长 → 选择下一跳 R2

5️⃣ 总结

  • 路由匹配就是目标 IP & 子网掩码与路由表目的网络比对
  • 运算方式是按位与 (AND)
  • 如果多条路由匹配 → 选择最长前缀

如果你愿意,我可以画一张图解按位与运算 + 路由匹配流程图,让你一眼看懂整个匹配过程。

你希望我画吗?

二、还有个问题请教啊 就是一个包去找路由表的时候 是从第一条依次往后查吗 还是有规则查

明白,你这个问题是关于Linux 内核查路由表的机制,尤其是route -n显示的静态路由表是如何匹配的。不要以为它是顺序扫描,实际有讲究。我们细讲下。


1️⃣ 路由匹配不是从第一条开始线性扫描

Linux 内核查路由表不是简单的从上到下扫描,而是有一套优先级/规则系统,具体包括:

  1. 最长前缀匹配(Longest Prefix Match, LPM)

    • 内核会选择掩码最长的路由与目标 IP 匹配。

    • 举例:

      10.0.0.0/30 -> nic1 10.0.0.0/16 -> nic1 via 10.0.0.1

      如果目标 IP 是10.0.0.1

      • /30前缀更长(30位) → 匹配这条
      • /16前缀短 → 备选,不用
  2. 路由表索引与优先级(Metric)

    • 如果有多个掩码长度相同的匹配路由,内核会选metric 最小的

    • 在你的例子里:

      0.0.0.0/0 via 10.0.92.10 metric 20 10.60.0.0/16 via 10.0.0.1 metric 20

      metric 可以理解成“成本”,越小越优先。

  3. flags 决定可达性

    • U→ 这条路由是 up
    • G→ 需要网关

2️⃣ 内核路由查找流程(简化版)

假设目标 IP =10.77.92.140,流程大概是:

  1. 内核查看路由表里有没有精确匹配的 host 路由(掩码 /32)。

    • 你的路由表里有:

      10.77.92.140 0.0.0.0 255.255.255.252 U

      ✅ 完全匹配 → 直接走 swp32

  2. 如果没有 host 路由 → 内核找最长前缀匹配的网络路由

    • 按掩码长度排序,匹配成功就用
  3. 如果有多条相同前缀长度 → 比较metric,选最小的

  4. 如果都没有 → 走默认路由0.0.0.0/0

🔑 所以,不是从上到下顺序查表,而是按掩码长度 → metric → flags决定,内核用高效数据结构(radix tree/trie)来快速查找。


3️⃣ 你的路由表分析

Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.92.10 0.0.0.0 UG 20 0 0 nic2 10.0.0.0 0.0.0.0 255.255.255.252 U 0 0 0 nic1 10.60.0.0 10.0.0.1 255.255.0.0 UG 20 0 0 nic1 10.0.92.12 0.0.0.0 255.255.255.252 U 0 0 0 nic2

举例匹配目标 IP:

  1. 目标 IP =10.0.92.10

    • 完全匹配/30(前 30 位是 1 → /30)host 路由 → swp32
  2. 目标 IP =10.60.1.5

    • 匹配10.60.0.0/16→ next hop 10.0.0.1
  3. 目标 IP =8.8.8.8

    • 匹配默认路由0.0.0.0/0→ next hop 10.0.92.10

所以即使 host 路由在表的最后一行,也不会影响匹配,因为 Linux 内核会按掩码长度优先查找。


如果你想,我可以画一张Linux 内核路由查找树 + LPM 匹配流程图,让你一眼看懂查找顺序和原理。

你希望我画吗?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 21:03:45

Altium原理图与FPGA引脚规划协同设计实践

从原理图到FPGA引脚:如何在Altium中实现高效协同设计你有没有遇到过这样的场景?FPGA工程师说:“这个DDR信号我只能放Bank 15,不然时序不收敛。”而PCB工程师回:“可你在Bank 15用了1.8V,但我们的DDR3要求1.…

作者头像 李华
网站建设 2026/5/2 11:10:21

基于PINN求解裂纹扩展问题的优化开发

基于PINN求解裂纹扩展问题的优化开发 摘要 本文系统阐述了基于物理信息神经网络(Physics-Informed Neural Networks, PINN)求解裂纹扩展问题的优化开发方法。裂纹扩展问题是断裂力学和工程结构安全评估中的核心问题,传统的数值方法如有限元法在处理复杂裂纹扩展问题时面临…

作者头像 李华
网站建设 2026/5/4 23:22:44

打造智能化 ECS 故障分析 Agent:从创建到实战

前言 在微服务架构中,ECS 服务故障排查往往需要在多个 AWS 控制台之间切换,查看日志、指标、事件,耗时且容易遗漏关键信息。本文将介绍如何使用 Kiro CLI 创建一个专业的 ECS 故障分析 Agent,实现一键自动化诊断。 一、Agent 设计理念 1.1 核心目标 自动化:输入服务名称…

作者头像 李华
网站建设 2026/5/1 3:33:04

计算机毕业设计springboot飞机票预定系统 基于SpringBoot的航空客运订票平台设计与实现 融合Vue+SpringBoot的在线航班座位预约系统

计算机毕业设计springboot飞机票预定系统yr7f205a (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当“说走就走”成为年轻人出行的默认节奏,传统柜台与电话订票早已跟…

作者头像 李华
网站建设 2026/5/5 2:31:24

优思学院|做质量的人为什么总在“得罪人”?

在企业里,质量管理岗位常常被贴上一个标签:“容易起冲突”。不少做过质量的人都会有类似感受——和研发吵、和生产吵、和采购吵、和销售也能吵起来,仿佛质量部天生就站在其他部门的对立面。因为质量管理的职责就是提升质量、减少问题的发生&a…

作者头像 李华
网站建设 2026/5/1 13:05:53

语言模型推理能力的认知风格影响因素分析

语言模型推理能力的认知风格影响因素分析 关键词:语言模型、推理能力、认知风格、影响因素、分析 摘要:本文聚焦于语言模型推理能力的认知风格影响因素进行深入分析。首先介绍了研究的背景、目的、预期读者和文档结构等内容。接着阐述了语言模型、推理能力和认知风格的核心概…

作者头像 李华