上网第四十三课:路由原理——数据包是怎么找到路的

上网第四十三课:路由原理------数据包是怎么找到路的

文章目录

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

一、路由表:路由器的导航地图

每台路由器(包括你家光猫/路由器)内部都维护着一张表,叫路由表(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 为什么算最短路径------明天见。


本文是上网那点事系列连载第四十三课,从零讲透家庭网络到互联网原理,欢迎关注专栏阅读全部内容。

相关推荐
91刘仁德5 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
硅基手札6 小时前
【Linux内核专栏 14】网络协议栈
linux·运维·网络协议
网络小江10 小时前
上网第四十二课:第六周复盘——协议篇快问快答
网络协议
青春不朽51212 小时前
requests 超时、重试、SSL 报错?9 个高频问题与一整张排错对照表
网络·网络协议·ssl
天天进步201514 小时前
Caddy 实战:5 分钟给域名开启 HTTPS,自动申请 SSL 证书并反向代理
网络协议·https·ssl
xixingzhe216 小时前
正确认知HTTPS:并非万能加密,通信安全需要多层防护
网络协议·安全·https
网络小江17 小时前
组网第九课:光纤与光接口——一根玻璃丝,把千里外的机房“连“起来
网络协议
XiaoMaqqqq1 天前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
ShyanZh1 天前
【Python3基础】19-Socket 与 TCP、UDP 编程
python·网络协议·tcp/ip·udp