路由器的核心任务是根据目标 IP 地址,将数据包从源主机一步步(逐跳)转发到目标主机所在的网络。这一过程依赖 路由表(Routing Table) 和 路由转发算法,以下是其详细工作机制:
1. 路由器的核心工作流程
当路由器收到一个数据包时,会按以下步骤处理:
步骤 1:解封装到网络层
数据链路层剥离帧头(如以太网头部),提取网络层的 IP 数据包。
检查 IP 头部的 目标 IP 地址(Destination IP Address)。
步骤 2:查询路由表
路由器根据目标 IP 地址,在路由表中查找 最长匹配的前缀(Longest Prefix Match)。
路由表条目示例:
<PLAINTEXT>
目标网络 下一跳地址 出口接口 192.168.1.0/24 - eth0 (直连网络) 10.0.0.0/8 192.168.1.1 eth0 (静态路由) 0.0.0.0/0 203.0.113.1 eth1 (默认路由)
匹配规则:
选择与目标 IP 地址匹配的最长子网掩码的条目。例如:目标 IP
192.168.1.5
→ 匹配192.168.1.0/24
(直连网络)。目标 IP
10.1.2.3
→ 匹配10.0.0.0/8
。目标 IP
8.8.8.8
→ 匹配默认路由0.0.0.0/0
。
步骤 3:确定下一跳和出口接口
如果目标网络是 直连网络(如
192.168.1.0/24
):直接通过 ARP 协议查询目标 IP 的 MAC 地址,将数据包转发到目标主机。
如果目标网络是 非直连网络:
根据路由表找到下一跳路由器的 IP 地址(如
192.168.1.1
)。通过 ARP 协议获取下一跳路由器的 MAC 地址。
步骤 4:重新封装并转发
更新数据链路层帧头:
源 MAC 地址:当前路由器出口接口的 MAC 地址。
目标 MAC 地址:下一跳路由器接口的 MAC 地址。
通过出口接口(如
eth0
)发送数据包。
步骤 5:逐跳重复直到终点
每个路由器独立执行上述步骤,直到数据包到达目标网络。
2. 关键机制详解
(1) 路由表的构成
路由表条目可能来自:
直连路由:路由器自动发现其直连的网络(如
eth0
连接的192.168.1.0/24
)。静态路由:管理员手动配置的路由(如
ip route add 10.0.0.0/8 via 192.168.1.1
)。动态路由协议:通过 OSPF、BGP 等协议自动学习路由(如互联网中路由器间的路由交换)。
(2) 最长前缀匹配(Longest Prefix Match)
原理:
选择与目标 IP 地址匹配的最具体的子网。例如:路由表中有
172.16.0.0/16
和172.16.1.0/24
两条路由。目标 IP
172.16.1.5
会匹配更具体的172.16.1.0/24
。
(3) TTL(Time to Live)机制
IP 头部中的 TTL 字段 每经过一个路由器减 1。若 TTL 归零,数据包被丢弃(防止无限循环)。
3. 实际转发示例
假设客户端(IP: 192.168.1.2
)访问服务器(IP: 8.8.8.8
),路径经过两个路由器(R1 和 R2):
客户端发送数据包:
目标 IP:
8.8.8.8
,目标 MAC: R1 的接口 MAC(通过 ARP 获得)。
R1 处理:
查路由表,匹配默认路由(
0.0.0.0/0
),下一跳是 R2(IP:203.0.113.1
)。更新目标 MAC 为 R2 的接口 MAC,从出口接口转发。
R2 处理:
查路由表,发现
8.8.8.8
属于直连网络,通过 ARP 获取服务器 MAC。直接转发给服务器。
4. 为什么需要逐跳转发?
网络拓扑复杂性:
互联网由无数自治网络(AS)组成,路由器无法预知完整路径。动态路由变化:
网络链路可能随时故障,逐跳转发允许路由器动态调整路径。分层寻址:
IP 地址的层次性(网络号 + 主机号)使路由器只需关注网络前缀,无需知道每个主机的具体位置。
5. 数据包在转发过程中的变化
IP 头部:
目标 IP 地址始终不变(端到端原则)。
TTL 字段逐跳减 1。
数据链路层帧头:
每一跳的源 MAC 和目标 MAC 都会更新(指向当前路由器和下一跳)。
<PLAINTEXT>
# 示例:客户端 → R1 → R2 → 服务器
客户端发送:
[目标 IP:8.8.8.8 | 目标 MAC:R1-MAC]
R1转发:
[目标 IP:8.8.8.8 | 目标 MAC:R2-MAC]
R2转发:
[目标 IP:8.8.8.8 | 目标 MAC:Server-MAC]
总结
路由器的逐跳转发本质是:
查表决策:根据目标 IP 和路由表,选择最佳下一跳。
链路层封装:通过 MAC 地址将数据包传递给下一设备。
协作完成端到端传输:所有路由器接力传递,最终将数据包送达目标网络。