上网第四十三课:路由原理------数据包是怎么找到路的
文章目录
上门装宽带,用户问:"师傅,我在江西打开北京的网站,数据怎么知道该往哪走?又没人给它导航。"我说:"每台路由器里都有一张路线图,数据包每到一站,路由器就看一眼图、指一条路------这就是路由。"今天就把这张路线图------路由表------从零讲透:它长什么样、怎么查、怎么决定下一跳。

一、路由表:路由器的导航地图
每台路由器(包括你家光猫/路由器)内部都维护着一张表,叫路由表(Routing Table)。它记录着"要去哪个网段,该从哪个接口发出去,下一跳给谁"。
在你的电脑上也能看到路由表,Windows 打开 CMD 输入 route print,或 Linux / macOS 输入 netstat -rn,看到的就是类似这样的内容:
| 目的网络 | 子网掩码 | 网关(下一跳) | 接口 | 跃点数 |
|---|---|---|---|---|
| 192.168.1.0 | 255.255.255.0 | 0.0.0.0(直连) | eth0 | 25 |
| 10.0.0.0 | 255.255.0.0 | 192.168.1.1 | eth0 | 30 |
| 0.0.0.0 | 0.0.0.0 | 192.168.1.1 | eth0 | 50 |
每一行就是一条路由------告诉路由器"如果你要去这个网段,把包从这扇门推出去,交给这个下一跳"。
不同厂商设备查看路由表的命令不同,华为设备用 display ip routing-table,思科设备用 show ip route,都能看到完整的路由表信息。
二、路由表的五个关键字段

| 字段 | 作用 | 大白话 |
|---|---|---|
| 目的网络 | 目标 IP 所在的网段 | 去哪条街 |
| 子网掩码 | 界定网络号的长度 | 门牌号编到几位 |
| 网关(下一跳) | 包交给谁的 IP | 到了路口转交给谁 |
| 接口 | 从哪个网卡发出去 | 走哪个门 |
| 跃点数(Metric) | 优先级/代价,越小越优 | 这条路有多远 |
网关写 0.0.0.0 表示直连------目标网段就挂在本路由器的接口上,不用转交,直接二层送达。
三、转发决策:最长前缀匹配
路由器收到一个数据包,要决定从哪条路由走,规则叫最长前缀匹配(Longest Prefix Match):
在所有匹配目标 IP 的路由条目中,选子网掩码最长(即最精确)的那一条。
举个实际例子,路由表里有三条路由:
| 路由 | 目的网络/掩码 | 说明 |
|---|---|---|
| A | 10.1.1.0/24 | 精确到 /24 |
| B | 10.1.0.0/16 | 宽泛到 /16 |
| C | 0.0.0.0/0 | 默认路由 |
现在收到目标 IP = 10.1.1.100 的包:A、B、C 三条都匹配,但选 A------因为 /24 比 /16 比 /0 更长、更精确。
用 Python 验算这个逻辑:import ipaddress,把目标 IP 和三条路由都转成 ip_network 对象,用 in 判断匹配,再按前缀长度排序取最大值,输出 10.1.1.0/24------这就是最长前缀匹配的编程实现。
一句话理解:路由表查路就像查快递分拣------能精确到某条街某号就不往某个区扔,实在查不到具体的就扔进默认通道。
四、默认路由与默认网关
路由表最后那条 0.0.0.0/0 叫默认路由(Default Route) ,对应你电脑上设的默认网关------所有精确路由里查不到的包,统统丢给它。
你家电脑路由表里大概率只有两条:
- 192.168.1.0/24 直连------同网段直接通信;
- 0.0.0.0/0 交给 192.168.1.1(路由器)------其他所有流量都扔给路由器。
路由器收到后再查自己的路由表,一级一级往上传,直到运营商的核心路由器,最终把包送到目标网段。这就是互联网一跳一跳转发的本质。用 tracert www.baidu.com 看看数据包经过几跳,每一行就是一跳,能看到路由器的 IP 和延迟。
五、路由条目从哪来:直连、静态、动态

| 来源 | 怎么生成 | 谁在用 |
|---|---|---|
| 直连路由 | 接口配了 IP 就自动生成 | 所有路由器 |
| 静态路由 | 管理员手写 | 小型网络、专线 |
| 动态路由 | 路由协议自动学习(RIP / OSPF / BGP) | 企业网、运营商 |
直连路由不用管,插上网线配好 IP 就有。静态路由最简单但维护成本高------网络一变就得改。动态路由靠协议自动交换信息、自动更新路由表,是中大型网络的标配(明天 Day44 专讲)。
静态路由配置也很简单,华为设备用 ip route-static 10.2.0.0 255.255.0.0 192.168.1.1,思科设备用 ip route 10.2.0.0 255.255.0.0 192.168.1.1,指定目标网段、掩码和下一跳即可。
六、装维视角:路由排障三板斧
① 电脑能上局域网不能上外网
查默认路由有没有:route print 看 0.0.0.0 那行在不在,网关对不对。没有默认路由 = 不知道把外网流量扔给谁。
② 能 ping 通网关但 ping 不通外网 IP
网关收到你的包,但它自己没路由或下一跳不对------问题在路由器侧。登录路由器查它的路由表,或者直接报运营商。
③ 同网段通、跨网段不通
检查路由器上两个网段的直连路由是否都在、接口是否 up。常见于加了一个网段但忘了给路由器配网关 IP。
小结
- 路由表 = 路由器的 GPS,每条记录指明去哪个网段、从哪个接口、交给谁;
- 转发决策靠最长前缀匹配:多条路由命中时,掩码最长的胜出;
- 默认路由 0.0.0.0/0 是兜底通道,对应家用网络里的默认网关;
- 路由条目三个来源:直连(自动)、静态(手写)、动态(协议学)。
思考题:路由器路由表里有 10.0.0.0/8(metric 20)和 10.1.1.0/24(metric 100),收到目标 10.1.1.50 的包,会走哪条?为什么?(提示:最长前缀匹配优先,metric 只在同前缀长度时才比------所以选 /24 那条,尽管 metric 更大。这跟很多人直觉相反,是路由考试的经典陷阱。)
下期预告
路由表里那些条目是怎么学来的------明天开讲:路由协议入门:静态路由、RIP 与 OSPF。路由器之间怎么交换情报、RIP 为什么跳数超 15 就挂了、OSPF 为什么算最短路径------明天见。
本文是上网那点事系列连载第四十三课,从零讲透家庭网络到互联网原理,欢迎关注专栏阅读全部内容。