路由与转发(Routing and Forwarding)
路由是数据包从源地址到目标地址的路径选择过程,转发是数据包在网络中的实际传输。
什么是路由
路由是决定数据包从源地址到目标地址的路径的过程。
路由的作用
- 路径选择:选择最佳路径
- 网络互联:连接不同网络
- 负载均衡:分散网络流量
- 故障恢复:自动选择备用路径
路由表(Routing Table)
路由表结构
路由表包含路由信息,用于决定数据包的转发路径。
路由表项:
目标网络 子网掩码 网关 接口 跃点数
192.168.1.0 255.255.255.0 0.0.0.0 eth0 0
10.0.0.0 255.0.0.0 192.168.1.1 eth0 1
0.0.0.0 0.0.0.0 192.168.1.1 eth0 1 (默认路由)
字段说明:
- 目标网络:目标网络地址
- 子网掩码:网络掩码
- 网关:下一跳路由器地址(0.0.0.0 表示直连)
- 接口:出接口
- 跃点数:到达目标的跳数(Metric)
路由选择过程
最长匹配原则
原则:选择子网掩码最长的匹配路由
示例:
目标地址:192.168.1.100
路由表:
192.168.1.0/24 → 匹配(24 位)
192.168.0.0/16 → 匹配(16 位)
0.0.0.0/0 → 匹配(0 位)
选择:192.168.1.0/24(最长匹配)
路由选择算法
- 提取目标 IP 地址
- 查找路由表:找到匹配的路由
- 选择最佳路由:最长匹配原则
- 转发数据包:通过指定接口和网关转发
路由协议
静态路由
定义:手动配置的路由
特点:
- ✅ 简单、可靠
- ✅ 不占用网络带宽
- ❌ 需要手动维护
- ❌ 不适应网络变化
配置示例:
# Linux
sudo ip route add 10.0.0.0/8 via 192.168.1.1
# Windows
route add 10.0.0.0 mask 255.0.0.0 192.168.1.1动态路由
定义:路由协议自动学习和维护的路由
特点:
- ✅ 自动适应网络变化
- ✅ 自动选择最佳路径
- ❌ 占用网络带宽
- ❌ 配置复杂
路由协议类型
1. RIP(Routing Information Protocol)
类型:距离向量路由协议
特点:
- 使用跳数作为度量
- 最大跳数:15
- 更新周期:30 秒
- 适用于小型网络
工作原理:
- 路由器定期广播路由表
- 收到路由更新后,更新自己的路由表
2. OSPF(Open Shortest Path First)
类型:链路状态路由协议
特点:
- 使用带宽作为度量
- 支持分层路由(区域)
- 快速收敛
- 适用于大型网络
工作原理:
- 路由器交换链路状态信息
- 构建网络拓扑图
- 使用 Dijkstra 算法计算最短路径
3. BGP(Border Gateway Protocol)
类型:路径向量路由协议
特点:
- 用于自治系统(AS)之间
- 互联网的核心路由协议
- 支持策略路由
- 适用于大型网络
工作原理:
- AS 之间交换路由信息
- 使用 AS 路径作为度量
- 支持复杂的路由策略
数据包转发过程
转发流程
1. 接收数据包
↓
2. 提取目标 IP 地址
↓
3. 查找路由表
↓
4. 找到匹配路由?
├─ 是 → 5. 选择最佳路由
└─ 否 → 6. 使用默认路由或丢弃
↓
7. 检查目标是否在同一网络?
├─ 是 → 8. 直接发送(ARP 获取 MAC 地址)
└─ 否 → 9. 发送到网关(路由器)
↓
10. 更新 TTL(Time To Live)
↓
11. 重新计算校验和
↓
12. 通过指定接口发送
ARP(Address Resolution Protocol)
作用:将 IP 地址映射到 MAC 地址
过程:
1. 发送 ARP 请求(广播)
2. 目标主机响应 ARP 应答
3. 缓存 MAC 地址
NAT(网络地址转换)
什么是 NAT
NAT(Network Address Translation)将私有 IP 地址转换为公有 IP 地址。
NAT 的作用
- 节省公网 IP:多个内网设备共享一个公网 IP
- 提高安全性:隐藏内网结构
- 灵活性:内网 IP 可以随意分配
NAT 类型
1. 静态 NAT
定义:一对一映射
示例:
内网 IP:192.168.1.10 → 公网 IP:203.0.113.10
内网 IP:192.168.1.11 → 公网 IP:203.0.113.11
2. 动态 NAT
定义:多对多映射
示例:
内网 IP 池:192.168.1.10-192.168.1.20
公网 IP 池:203.0.113.10-203.0.113.20
3. PAT(Port Address Translation)
定义:多对一映射,使用端口区分
示例:
内网:192.168.1.10:12345 → 公网:203.0.113.1:54321
内网:192.168.1.11:12345 → 公网:203.0.113.1:54322
实际应用
查看路由表
# Linux
route -n
# 或
ip route show
# Windows
route print
# Mac
netstat -rn添加路由
# Linux
sudo ip route add 10.0.0.0/8 via 192.168.1.1
# Windows
route add 10.0.0.0 mask 255.0.0.0 192.168.1.1删除路由
# Linux
sudo ip route del 10.0.0.0/8
# Windows
route delete 10.0.0.0跟踪路由
# Linux/Mac
traceroute www.example.com
# Windows
tracert www.example.com常见问题
1. 默认路由的作用?
默认路由(0.0.0.0/0)是当没有匹配的路由时使用的路由,通常指向网关。
2. 路由和转发的区别?
- 路由:路径选择过程(控制平面)
- 转发:数据包的实际传输(数据平面)
3. 如何选择路由协议?
- 小型网络:使用静态路由或 RIP
- 中型网络:使用 OSPF
- 大型网络:使用 BGP
总结
路由与转发要点:
- 路由表:存储路由信息
- 路由选择:最长匹配原则
- 路由协议:静态路由、动态路由(RIP、OSPF、BGP)
- 数据包转发:查找路由表,选择路径,转发数据包
- NAT:网络地址转换,节省公网 IP
理解路由原理是网络配置和故障排查的基础。
相关链接:
- 01-IP 地址与子网 — IP 地址基础
- 03-TCP 协议 — 传输层协议