CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
网络工程师入门/课时/路由协议
RawBlame
课时目录12 节

网络工程师入门

  1. 01网络工程师是什么
  2. 02OSI 与 TCP/IP
  3. 03IP 寻址与子网
  4. 04网络设备
  5. 05路由协议
  6. 06交换与二层
  7. 07无线网络
  8. 08网络安全
  9. 09云网络与自动化
  10. 10排障与可观测
  11. 11认证与学习路径
  12. 12综合练习

路由协议

静态/动态、OSPF、BGP、负载均衡。

35 分钟

路由协议:静态路由、OSPF 与 BGP

这一课你将能做到

  1. 配置静态路由并用最长前缀原则解释路由匹配结果
  2. 用「邻居表 → 数据库 → 路由表」三件套读懂 OSPF
  3. 用一句话讲清 BGP 为什么叫「路径向量」,以及它和 OSPF 的本质区别

为什么要学

路由是「包往哪走」的唯一答案。K8s 的 CNI、云上的路由表、公司到云的专线,全是路由的变体。面试里「OSPF 和 BGP 的区别」是网络岗必考题;运维日常里「补一条路由解决回程不通」是高频操作。这一课先给你能上手的命令,再给你能讲出来的直觉。

先建立图像

            ┌──────┐   ┌──────┐   ┌──────┐
内网A ──────┤ R1   ├───┤ R2   ├───┤ R3   ├────── 内网B
            └──────┘   └──────┘   └──────┘
 OSPF: R1↔R2↔R3 互相通告链路状态,各自算最短路径(一个组织内)
 BGP:  企业网 ↔ ISP ↔ ISP 按策略与路径选路(组织之间)

R1 路由表(简化):
  10.1.0.0/16  → 直连 eth0            (最长前缀优先)
  10.2.0.0/16  → 下一跳 192.168.12.2  (OSPF 学到,管理距离 110)
  0.0.0.0/0    → 下一跳 203.0.113.1   (默认路由,兜底)

跟着做

步骤 1:Linux 上配静态路由

# 场景:本机去 10.2.0.0/16 要绕行网关 192.168.1.254
sudo ip route add 10.2.0.0/16 via 192.168.1.254 dev eth0
ip route show                 # 验证已入表
ip route get 10.2.0.5         # 模拟查表:这个包会从哪出
sudo ip route del 10.2.0.0/16 via 192.168.1.254   # 删除

步骤 2:一分钟起一个动态路由实验

docker run -d --name r1 --privileged frrouting/frr:v8.4.0
docker exec r1 vtysh -c "show ip route"    # FRR:开源路由套件,命令风格同 Cisco

真机 / 模拟器上的 OSPF 三件套(Cisco 风格):

show ip ospf neighbor     # 邻居表:谁活着
show ip ospf database     # LSDB:全网链路状态地图
show ip route ospf        # 路由表里 O 开头的条目

步骤 3:验证最长前缀原则

sudo ip route add 10.2.1.0/24 via 192.168.1.1     # 更长的前缀
ip route get 10.2.1.5     # → 192.168.1.1(/24 赢了 /16)
ip route get 10.2.2.5     # → 192.168.1.254(回落到 /16)

步骤 4:用 traceroute 看逐跳选路

traceroute -n example.com     # 每一行 = 一台路由器
mtr -n -c 20 example.com      # 持续观察丢包与延迟在哪一跳

步骤 5:两台 FRR 容器把 OSPF 跑起来

# r1 与 r2 的互联接口各配同网段 IP,再启用 OSPF
docker exec r1 vtysh -c "conf t" -c "interface eth1" \
  -c "ip address 192.168.12.1/24" -c "router ospf 1" -c "network 192.168.12.0/24 area 0"
docker exec r2 vtysh -c "conf t" -c "interface eth1" \
  -c "ip address 192.168.12.2/24" -c "router ospf 1" -c "network 192.168.12.0/24 area 0"
docker exec r1 vtysh -c "show ip ospf neighbor"   # 状态到 Full 即邻接成功
docker exec r1 vtysh -c "show ip route ospf"      # 学到对端通告的网段

邻接到 Full 后,往其中一台注入一条 loopback 网段,再断开互联链路观察路由如何自动绕行——动态路由「链路挂了自动换路」的体感就有了。

讲清楚要点

  1. 路由表三要素:目的网段、下一跳、出接口。匹配三级顺序:最长前缀优先 → 管理距离(协议可信度)→ 度量值(路径优劣)。
  2. 静态路由适合小型、边缘、路径明确的场景;缺点是链路挂了不会自动绕行,除非配浮动静态路由(备份条目调大管理距离)或上动态协议。
  3. OSPF(链路状态):每台路由器泛洪自己的链路状态,全网各自用 SPF 算最短路径;收敛快、区域内无环,适合一个管理域内。
  4. BGP(路径向量):不追求「最短」,追求「按策略可控」;用 AS_PATH 防环,是互联网的骨架,也是多云 / 多专线选路的基础。
  5. 管理距离直觉(Cisco 默认):直连 0 > 静态 1 > OSPF 110 > RIP 120,数字越小越可信——同网段多来源时由它决定谁进表。

你可能会懵的地方

  • 都是动态路由,为什么互联网用 BGP 而不是 OSPF? OSPF 假设域内互信、规模可控,几千节点收敛就吃力;BGP 按域自治、可注入商业策略(选路跟着钱走),能扩展到百万条路由。

  • 默认路由 0.0.0.0/0 什么时候用? 出口唯一时必配——公司、家庭、VPC 的公网出口都是默认路由;它前缀最短永远最后匹配,是最安全的兜底。

  • 浮动静态路由是什么? 同一目的配两条静态路由,备份那条管理距离调大(如 ip route 10.2.0.0/16 x.x.x.x 200);主链路挂了备份自动顶上。

  • 云上的路由表也算路由协议吗? 本质是静态路由 + 云控制面自动维护;对等连接、专线网关会自动注入路由,相当于云替你跑了「受控的路由」。

  • 黑洞路由有什么用? ip route add blackhole 10.9.9.0/24 直接丢弃目标流量,常用于防回环与封禁恶意网段,比 ACL 更早生效。

错法对照

错法问题正解
只配去程不查回程SYN 到了,SYN-ACK 回不去路由必须双向可达,两端各 ip route get 验证
静态路由指向不可达下一跳路由在表但不通下一跳必须直连可达,先 ping 网关
OSPF 两端区域 / 掩码 / MTU 不一致邻居起不来或卡 EXSTART逐项核对 Hello 参数,看 neighbor 列表
生产 BGP 不配过滤学到垃圾路由打爆表必配前缀过滤 + 最大前缀数限制
用 metric 调静态路由主备静态路由不看 metric用管理距离做浮动静态

卡点急救

  1. 包出得去回不来:在对端执行 ip route get 本机IP;回程无路由 = 静默丢包,表现为 telnet 永远 SYN 无响应。
  2. OSPF 邻居卡 EXSTART/EXCHANGE:MTU 不匹配(云上不同网卡类型常见),统一 MTU 或配 mtu-ignore。
  3. 加了路由还是不通:ip route get 目标 看命中的是不是你那条;被更长前缀截胡是头号原因。

面试常问

  • OSPF 邻接建立过程? Down → Init(收到 Hello)→ 2-Way → ExStart(协商主从)→ Exchange(交换 DBD 摘要)→ Loading(LSR/LSU 要详情)→ Full。至少说清:Hello 建邻居、DBD 同步摘要、LSR 补详情、最后跑 SPF 算路。

  • OSPF 和 BGP 的区别(三句话版)? OSPF 是 IGP、链路状态、域内算最短路径;BGP 是 EGP、路径向量、域间按策略选路;OSPF 区域内靠 SPF 防环,BGP 靠 AS_PATH 防环。

  • 一个包到达路由器后的转发流程? 收帧 → 校验并剥二层头 → TTL 减一重算校验 → 查路由表最长前缀 → 重写二层头(源 MAC = 自己,目 MAC = 下一跳)→ 从出接口发出。

自测三问

  1. 路由匹配的三级优先顺序是什么?
  2. 为什么默认路由能兜住所有流量?
  3. OSPF 快在哪,BGP 稳在哪?

小结一句话

路由 = 带策略的查表转发;IGP 管域内速度,BGP 管域间策略,最长前缀是唯一裁判。

延伸

  • RFC 2328:OSPF 版本 2
  • 下一课:交换与二层——VLAN、STP 与链路聚合。
加载本节练习…
← 上一课网络设备下一课 →交换与二层