← 网络基础学习第 31 / 55 章进阶40 分钟

模块四 · 网络层:控制平面

路由协议概览

《网络层》模块讲了"路由表怎么查"(最长前缀匹配),但没讲"表里的内容是谁写进去的"。你的机器上只有 36 条路由,而互联网存在大量地址前缀 —— 那些路由是怎么来的?

本章要解决的问题:《网络层》模块讲了"路由表怎么查"(最长前缀匹配),但没讲"表里的内容是谁写进去的"。你的机器上只有 36 条路由,而互联网存在大量地址前缀 —— 那些路由是怎么来的?

本章的证据来源:历史实测记录(路由来源统计、动态路由协议监听端口检查)。协议分类出自 RFC 1812(路由器要求);OSPF 出自 RFC 2328,BGP 出自 RFC 4271。

先从一个例子理解概念

你知道怎样查一张路由表,现在再问“表里的路线是谁填的”。网络变大后,设备会用协议交换可达信息。

人为填写与自动学习:静态、动态路由

管理员明确配置的路线叫静态路由;通过设备之间的协议学习得到的叫动态路由;接口带来的直接连接范围常形成直连路由。转发不要求全部路线都动态学习。

共同管理的路由范围:自治系统

AS(自治系统)是一组按统一路由管理与策略组织的网络,其编号叫ASN。一个公司或运营商可以有多个AS,不能按品牌一一对应。

范围内部与范围之间:IGP与BGP

IGP(内部网关协议)用于AS内部选路,例如OSPF;BGP(边界网关协议)用于传播前缀与路径策略,也有AS内部的iBGP,不简单等于“只有不同公司才能用”。

不同学习方式:距离向量、链路状态、路径向量

距离向量侧重邻居告诉自己的距离信息;链路状态侧重在范围内分享拓扑后各自计算;路径向量携带路径信息以配合策略。这些是分类,先理解差别再背RIP、OSPF、BGP这些名字。

下面再用这些概念看原理、命令和结果。规范与官方资料列在本章末尾,类比只帮助理解,不代替协议规则。

历史主机记录:未发现RIP/BGP端点

示例powershell
Get-NetRoute -AddressFamily IPv4 | Group-Object Protocol

历史实测记录结果:

路由来源(Protocol)条数
Local34
NetMgmt2

总共 36 条,全部是"本地生成的"。 再看有没有在跑动态路由协议:

RIP 用 UDP 520     → 无监听
BGP 用 TCP 179     → 无监听

这些记录未显示RIP/BGP端点,不能排除全部动态机制。 OSPF使用IP协议号89,不走TCP/UDP端口;需检查实际进程、接口和报文。

为什么主机不需要

回顾《网络层》模块讲过的路由表内容 —— 那 34 条 Local 路由都是什么?

本机地址的 /32        (几块网卡的地址各一条)
广播地址的 /32
多播地址的 /224.0.0.0/4 (每个接口一条)
网段的直连路由 /24 /20 /30
回环 127.0.0.0/8

全都是"系统根据网卡配置自动生成的",不需要任何人告诉它。

再加两条默认路由(NetMgmt),这台机器的路由表就完整了:

0.0.0.0/0  →  198.18.0.2   (FlClash)
0.0.0.0/0  →  192.168.31.1 (WLAN)

逻辑很简单:

  • 目标在本地网段内 → 直连(查 ARP 就能找到,《链路层和局域网》模块讲过)
  • 目标不在本地 → 全部交给默认网关

一台主机只有一两个出口,根本不需要复杂的选路。 真正复杂的选路都在路由器上做。

那互联网上的路由是怎么来的

现在把视角抬到路由器。

一个 ISP 的路由器有几千条路由,完整互联网路由表规模随时间与地址族变化。 这些绝对不可能手工配置 —— 因为:

  • 数量太大:大量不同规模的地址前缀
  • 变化太快:链路随时故障、新网段随时接入、运营商之间的商业关系随时调整
  • 必须自动收敛:一条主链路断了,流量要在秒级内切到备用链路

所以需要动态路由协议:让路由器之间自动交换"我知道哪些网段、怎么走"的信息。

路由的两种来源

来源谁写的特点
静态路由人手工配置简单、可控、不会自己变;但规模一大就没法维护
直连路由系统自动生成网卡配上地址就有(本机那 34 条)
动态路由路由器之间自动学习能自动适应拓扑变化;但会消耗 CPU、内存和带宽

本机的情况是:直连 + 一条静态默认路由。 这是典型的主机配置。

三大类动态路由协议

动态路由协议按工作原理分成三大类。

类型一:距离向量(Distance Vector)—— 代表:RIP

思路:我只告诉我的邻居"我到各个网段有多远"。邻居再把这些信息传下去。

路由器 A 对邻居 B 说:我到 10.0.0.0/8 的距离是 3 跳
B 记下来:通过 A 到 10.0.0.0/8 是 4 跳
B 再告诉它的邻居 C……

优点:实现简单。 缺点:"坏消息传得慢"。

假设 A 到某个网段的路断了:

A 本来告诉 B:"我到 X 是 3 跳"
断掉之后 A 想告诉大家"到 X 不通了"
但 B 可能反过来告诉 A:"我到 X 是 4 跳"(通过你)
A 一听:"咦,通过 B 只要 4 跳?那我也能到!"
→ 于是 A 把距离改成 5,再告诉 B
→ B 改成 6…… 两个路由器互相"安慰",距离慢慢往上爬

这叫计数到无穷(count-to-infinity)。RIP 用"最大 15 跳、16 表示不可达"来限制这个问题的破坏范围,但收敛依然慢。

RIP 现在已经很少用了,主要出现在教学和老旧网络里。

类型二:链路状态(Link State)—— 代表:OSPF

思路完全不同:路由器在OSPF区域内可靠泛洪链路状态,区域内维护一致的相关链路状态数据库;不是每台设备都存整个互联网或所有区域的完整拓扑,然后各自用最短路径算法(Dijkstra)算出到各处的路。

① 每个路由器发现自己的直连邻居和链路开销
② 把这些信息泛洪(flooding)给全网所有路由器
③ 每个路由器都攒出一张完整的拓扑图
④ 各自算最短路径树

优点:收敛快、不会出现计数到无穷的问题、支持大规模网络。 缺点:相关路由器需维护所在区域的链路状态数据库,消耗内存和 CPU。

OSPF 是企业网络里最常用的内部路由协议。

类型三:路径向量(Path Vector)—— 代表:BGP

这是互联网骨干用的协议,它的逻辑和前两类根本不同 —— 后面单独讲。

IGP 与 EGP:一个重要的分界

动态路由协议还按作用范围分两类,分界线是自治系统(Autonomous System,AS):

类别全称作用范围代表协议
IGP内部网关协议一个组织内部RIP、OSPF、IS-IS
EGP外部网关协议组织之间BGP

"自治系统"是什么? 可以理解成"由一个机构统一管理的网络集合"。比如同一运营商或公司可以管理多个AS,也可以在内部划分不同路由域,不能按品牌一一对应。每个 AS 有一个编号(ASN)。

AS 内部:自己说了算 → 用 IGP 算出最短路径
    ↓
AS 之间:不是自己说了算 → 用 BGP 协商

BGP 为什么特殊

这是本章最值得理解的一点:BGP 选路不只考虑"哪条路短",更要考虑"哪条路允许我走"。

举例说明:

假设有三家运营商 A、B、C。你和目标服务器分别在 A 和 C 的网络里,而A 和 C 之间没有直接的商业协议(没有互联或对等关系)。那么即使从物理距离上看 A→C 更近,流量也必须绕道 B:

A → B → C      而不是     A → C(不允许)

BGP 交换的不只是"可达性",还有"策略" —— 谁愿意免费帮我转发、谁只做付费转发。所以:

BGP 出问题的后果

因为 BGP 是全球路由的最终依据,它出错的影响面极大。最典型的两类事故(都属于公开记载的著名事件类型):

事故类型机制
路由劫持某个 AS 错误地(或恶意地)宣告"某个网段在我这里",全球流量就被吸引过去
路由泄露某个 AS 把自己学到的路由错误地转发给了别的 AS,导致流量走错方向

还有一类更"低级"但同样严重的事故:某个大公司修改自己的 BGP 配置时出错,把自己的路由撤销了,结果全球都找不到它 —— 相当于这家公司在互联网上"消失"了。

一个反直觉的事实:互联网的骨干路由没有集中的管理机构。它靠的是许多不同AS 各自按协议交换信息、互相约束。这种"没有中心"的设计既让它极其健壮(局部故障不影响全局),也让配置错误能迅速扩散到全世界。

实测:从 TTL 反推路径上的路由器

历史ping记录TTL=52。若假定回复初始TTL=64,可估计返回方向约12次转发;初始值与代理影响未经确认,不能将它说成精确路径。

能转发不证明运行动态路由协议。 静态路由、直连路由和默认路由也能提供下一跳。是否使用OSPF、BGP等需要设备配置或协议报文证据,TTL无法判断。RFC 1812 §7、RFC 2328 附录A.1

常见误解

误解一:"我的电脑也要跑路由协议才能上网"

不需要。 历史实测记录:36 条路由全是本地生成或静态配置,RIP/BGP 端口都没有监听。主机只需要一条默认路由就够 —— 复杂的选路交给路由器。

误解二:"OSPF 和 BGP 是两个可以互相替代的选项"

不是替代关系。 OSPF是IGP;BGP用于AS间路由,也通过iBGP在AS内部传播路由。组织和AS不一一对应。它们的目标就不同 —— OSPF 求最短路径,BGP 求"符合商业策略的路径"。一个大型网络通常两个都用。

误解三:"互联网上的流量走最短路径"

不是。 BGP 的选路依据主要是策略(谁愿意帮你转发),不是物理距离或跳数。所以出现"绕远路"是完全正常的。

误解四:"RIP 简单所以适合小网络,OSPF 复杂所以适合大网络"

有一定道理,但现在基本不用 RIP 了 —— 即便小网络也更倾向用 OSPF 或者干脆静态路由。RIP 的主要问题是收敛慢(计数到无穷)。

本章小结

结论类型
实测:本机 36 条路由中 34 条为 Local、2 条为默认路由 NetMgmt实测
实测:本机 RIP(UDP 520)与 BGP(TCP 179)均无监听实测
主机通常只需要直连路由 + 默认路由,不需要动态路由协议标准
动态路由协议让路由器自动交换可达性信息,以适应拓扑变化标准
距离向量(RIP)简单但收敛慢,存在计数到无穷问题标准
OSPF按区域组织链路状态与最短路径计算RFC 2328
IGP 用于自治系统内部,EGP(BGP)用于自治系统之间标准
BGP 选路依据是策略与商业关系,而非最短路径标准
AS之间通过BGP等交换路由,具体规模随时间变化,不以无来源数字作证据协议架构
BGP 配置错误(劫持/泄露/撤销)可导致大范围甚至全球性故障公开记载
TTL仅能作有条件的返回路径估计,不能证明每台设备运行动态路由证据限制

自测题

6 题 · 先自己答,再展开对照

  1. 你的电脑能上网,但完全不运行任何路由协议。它靠什么决定包往哪儿发?
    靠一张极简的路由表:直连路由 + 一条默认路由。 历史实测记录 36 条路由里 34 条是系统根据网卡自动生成的直连路由(本机地址、广播、多播、网段),另外 2 条是默认路由(0.0.0.0/0)。
    判断逻辑很简单:目标在本地网段 → 直连(用 ARP 找到对方 MAC);目标不在本地 → 全部交给默认网关。主机只有一两个出口,不需要复杂选路。
  2. 为什么互联网上的路由不能靠人工配置?
    因为规模太大、变化太快。 全球有大量不同规模的地址前缀、大量骨干前缀路由;链路随时故障、新网段随时接入、运营商之间的商业关系随时调整。手工维护完全不可能,而且一条链路断了必须秒级切换到备用路径 —— 这只有自动化协议做得到。
  3. RIP 的"计数到无穷"问题是怎么产生的?
    因为两个路由器会互相"提供希望"。 假设 A 到网段 X 的路断了,A 想通告"不通了";但此时 B 可能反过来告诉 A"我通过你可以到 X,距离 4 跳"。A 一听就以为"通过 B 还能到",于是把自己的距离改成 5 再告诉 B,B 改成 6…… 两个路由器互相安慰,距离一路往上爬,收敛极慢。
    RIP 用"最大 15 跳、16 视为不可达"来限制破坏范围,但没有根治。
  4. OSPF 和 BGP 的关键区别是什么?它们能互相替代吗?
    OSPF按区域维护链路状态并计算路径;BGP以AS路径与策略传播前缀,也有AS内的iBGP。两者经常配合,但不能简单按一个组织内外划线。
  5. 为什么说"互联网上的流量走最短路径"是错的?
    因为 BGP 的选路依据是策略,不是距离。 它考虑的是"哪条路允许我走" —— 比如 A 和 C 两家运营商之间没有互联或对等协议,那么即使物理上更近,流量也必须绕道第三方。互联网走的是"商业上允许的路径",而不是"最短的路径"。
  6. 《网络层》模块实测 ping 1.1.1.1 的 TTL 是 52。能否由这个数字证明每台路由器运行动态路由协议?为什么?
    不能。假定初始TTL=64才可估计返回方向约12次转发;即使确定经过路由器,也可能由静态/默认路由转发。TTL不识别动态路由协议。

参考资料与适用范围

修订核对日期:2026-10-13。规则按所列协议与实现范围理解;文中的原始命令输出是历史观察,不表示本次重新实测。跨版本、代理/隧道及不同捕获位置需要另行核对。

正文源自 m4-02-路由协议概览.md · 共 12 节 · 6 道自测题