静态路由探究

1、路由表详解

1.1 什么是路由表?

  路由表(Routing Table) 是存储在路由器或主机中的一张逻辑表,用于描述:

"去往某个目标网络 / 主机,应该从哪个接口发出,交给谁(下一跳)"

  简单一句话:

路由表决定了 IP 数据包"往哪走、从哪走、交给谁"

  路由表中保存的是网络拓扑的抽象结果,它既可以:

  • 由管理员手工配置(静态路由)
  • 也可以由路由协议自动学习(动态路由,如 OSPF、RIP、BGP)

  本文主要讨论 Linux 下的静态路由表。

1.2 Linux 中查看路由表

  在 Linux 系统中,可以使用 route 命令查看当前内核路由表:

bash 复制代码
[root@linux ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         192.168.10.30   0.0.0.0         UG    0      0        0 eth0

-n 表示不解析主机名和服务名,直接显示 IP,更清晰也更高效。

1.3 路由表项结构详解

  一张路由表由 多条路由表项(Route Entry) 组成。

  每发送一个 IP 报文,内核都会遍历这张表,选择一条最合适的路由。

名称 含义
Destination 目标网络或目标主机(0.0.0.0 表示默认路由)
Gateway 下一跳地址;为 0.0.0.0 表示直连网络
Genmask 网络掩码,用于匹配目标 IP
Flags 路由标志位
Metric 路由度量值(优先级参考)
Ref 被引用次数(已废弃,通常为 0)
Use 被查找使用的次数
Iface 出口网络接口

1.4 Flags 字段说明

名称 含义
U 路由已启用(Up)
H 主机路由(Host)
G 需要经过网关(Gateway)
D 动态路由生成
R 动态路由重新初始化
M 被路由守护进程修改
路由被禁用

最常见的组合是:

  • U:直连路由
  • UG:通过网关的路由(如默认路由)

1.5 两个"特殊"的路由表项

1️⃣ Gateway 为 0.0.0.0

Gateway = 0.0.0.0

表示:

目标网络与本机在同一个二层网络中,可以直接通信,不需要经过网关

此时:

  • 内核会通过 ARP 查询目标 IP 对应的 MAC 地址
  • 然后直接从 Iface 指定的网卡发出

2️⃣ Destination + Genmask 都为 0.0.0.0

0.0.0.0    192.168.10.30    0.0.0.0

这是 默认路由(Default Route),含义是:

"如果没有任何更精确的路由能匹配,就走这条路"

2 、路由表的匹配原理(核心)

1️⃣ 匹配流程

当系统需要发送一个 IP 报文时:

  1. 取出 目标 IP
  2. 用目标 IP 与每一条路由表项的 Genmask 做 按位与
  3. 将结果与 Destination 比较
  4. 相同 → 命中该路由

2️⃣ 命中后的行为

  • Gateway ≠ 0
    • 目标不在本地网段
    • 修改 目标 MAC 为网关 MAC
    • IP 目的地址不变,从 Iface 指定的网卡发送给目标主机
  • Gateway = 0
    • 目标在本地网段
    • 直接从 Iface 指定的网卡发送给目标主机

3️⃣ 没有任何匹配?

  • 查找默认路由
  • 没有默认路由 → 直接丢包

3、路由类型划分

3.1 主机路由

  指向单个 IP 地址的路由。

c 复制代码
route add -host 8.8.8.8 gw 192.168.2.1 dev eth0

特点:

  • 掩码默认为 255.255.255.255
  • 优先级 高于网络路由

3.2 网络路由

  指向一个网络段:

c 复制代码
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.2.1 dev eth0

用于描述:

  • 可达的远端子网
  • 企业网络、跨网段通信

3.3 默认路由

  兜底方案:

c 复制代码
route add default gw 192.168.2.1 dev eth0

添加前一定要确认:网关地址可达

4、总结

4.1 路由优先级与"最长前缀匹配"

当多条路由都能匹配同一个目标 IP 时,Linux 使用:

最长前缀匹配原则(Longest Prefix Match)

优先级从高到低:

  • 主机路由 /32
  • 网络路由(掩码越长越优先)
  • 默认路由 /0

举例:

bash 复制代码
8.8.8.8/32        → 优先
8.8.8.0/24
0.0.0.0/0

4.2 一个完整的转发流程示例

对于一个跨网段的 IP 数据报:

  1. 查询路由表
  2. 命中最精确的路由项
  3. 根据路由项选择出口网卡
  4. 若需网关:
    a. 查 ARP
    b. 修改目标 MAC
  5. 发送数据包
  6. 无匹配且无默认路由 → 丢弃

4.3 路由表工作的层次

路由表工作在:

OSI 七层模型的网络层(Layer 3)

但要注意:

真正的数据转发还依赖:

  • 二层 ARP
  • 网卡驱动
  • 物理链路
相关推荐
Dr.kangder25 分钟前
嵌入式处理器架构解析(十)——DSP+FPGA
fpga开发·架构·嵌入式
weixin_446260859 小时前
从被动镜像到主动智能体:面向网络物理人工智能的整体论数字孪生(HDT-Net)
网络·人工智能
ZJH__GO9 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
今儿敲了吗11 小时前
CO——CPU
笔记
今儿敲了吗11 小时前
Python ——第三方包
笔记·python
shengnan_wsn12 小时前
【协议】【TCP】
网络·网络协议·tcp/ip
烟雨江南78512 小时前
2026汽车制造与新能源整车柔性产线Agentic-Workflow白皮书:跨APS_MES_ERP多智能体动态排产与装配容错实战
大数据·网络·人工智能·自动化·ai客服·企业agent
吃着火锅x唱着歌12 小时前
Effective C++ 学习笔记 条款40 明智而审慎地使用多重继承
c++·笔记·学习
落知秋12 小时前
RUST中的trait是什么?
笔记·rust
小僧景贤12 小时前
CAN调试全套配件+详细实操使用方法(从零排查、步骤落地、现场通用)
网络·can通信·嵌入式通信