外观
跨过一台路由器后,数据包里的 MAC 和 IP 谁变了、谁没变?
阶段 3 · 网络层 · 第 18 课
在第 17 课中,我们掌握了路由器的最长前缀匹配查表法。现在,让我们把前两章学过的所有知识融会贯通,做一次真正意义上的端到端跨网段通信全流程推演。
假设电脑 A(IP 为 192.0.2.10)要发一条消息给另一网段的电脑 B(IP 为 198.51.100.20),中间隔着一台路由器 R1。当数据包从电脑 A 出发,跳过左侧网线到达 R1,再被 R1 推向右侧网线送达电脑 B,在两条完全不同的网线上抓包,报文里的源 MAC、目的 MAC、源 IP、目的 IP 以及 TTL 分别会变成什么?
学完本课后,你将能够:
- 填写跨网段转发中各段链路上的源 MAC、目的 MAC、源 IP、目的 IP 与 TTL 逐跳对照表。
- 深刻领会网络体系结构最精妙的设计法则:“端到端 IP 不变,逐跳 MAC 改变”。
- 解释为什么在中间加入普通二层交换机时,MAC 和 TTL 不会受交换机影响。
1. 先看图:最小跨网拓扑与环境假设
观察上图,我们设定一个标准的跨网段网络环境(采用 RFC 5737 规范的教学测试网段):
- 左侧子网(Subnet 1):
192.0.2.0/24- 电脑 A 接口:IP
192.0.2.10,MAC 地址别名为MAC-A,默认网关配置为192.0.2.1。 - 路由器 R1 左侧接口:IP
192.0.2.1,MAC 地址别名为MAC-L。
- 电脑 A 接口:IP
- 右侧子网(Subnet 2):
198.51.100.0/24- 路由器 R1 右侧接口:IP
198.51.100.1,MAC 地址别名为MAC-R。 - 电脑 B 接口:IP
198.51.100.20,MAC 地址别名为MAC-B。
- 路由器 R1 右侧接口:IP
- 教学假设:所有设备的 ARP 缓存表均已通过第 11 课的学习建立完毕,链路正常通畅,路径无 NAT 转换。
2. 跟着数据走:两段链路的字段逐跳对照表
现在,电脑 A 准备将一段数据(初始 TTL 设为 64)发送给电脑 B。 请先在心里预测一下每段网线上的字段,然后对照下表验证你的推导:
| 观察点位置 | 所在物理链路 | 源 MAC | 目的 MAC | 源 IPv4 地址 | 目的 IPv4 地址 | 生存时间(TTL) |
|---|---|---|---|---|---|---|
| ① 观察点 1(左侧网线) 电脑 A 发给 R1 左接口 | 192.0.2.0/24以太网链路 | MAC-A | MAC-L | 192.0.2.10 | 198.51.100.20 | 64 |
| ② 观察点 2(右侧网线) R1 右接口发给电脑 B | 198.51.100.0/24以太网链路 | MAC-R | MAC-B | 192.0.2.10 | 198.51.100.20 | 63 |
3. 深度拆解:路由器在转发时究竟做了哪些动作?
当以太网帧从左侧网线撞进 R1 的左接口时,路由器内部经历了五道极其严谨的工序:
- 数据链路层解封装:
- R1 检查以太网帧尾的 FCS,校验无误;
- R1 检查帧头的目的 MAC,发现正是自己左接口的
MAC-L,网卡接收并剥去以太网帧头和帧尾,露出里面的 IPv4 数据包。
- 检查并消耗 TTL:
- R1 查看 IP 首部的 TTL(当前为 64),判定大于 1;
- R1 硬件执行
,并重新计算 IP 首部校验和(Header Checksum)。
- 查路由表决定出接口与下一跳:
- R1 提取目的 IP
198.51.100.20,查找自己的路由表; - 匹配到一条直连路由:
198.51.100.0/24 Direct 出接口为右接口。R1 得知电脑 B 就直连在自己的右侧网线上!
- R1 提取目的 IP
- 重新进行二层封装(打上新的 MAC 外壳):
- R1 在自己的右侧 ARP 表里查到电脑 B 的 MAC 是
MAC-B; - R1 为已经减过 TTL 的 IP 数据包贴上一层全新的以太网帧头:
- 源 MAC 填自己的右接口 MAC(
MAC-R); - 目的 MAC 填电脑 B 的 MAC(
MAC-B); - 重新计算并附上新的 4 字节 FCS。
- 源 MAC 填自己的右接口 MAC(
- R1 在自己的右侧 ARP 表里查到电脑 B 的 MAC 是
- 推向物理介质:
- R1 的右接口 PHY 芯片将新帧转化为物理信号,送入右侧网线,精准送达电脑 B!
4. 黄金定律:网络分层设计的至高美感
对比观察点 1 和观察点 2,请把下面这句支撑整个现代互联网运行的经典口诀刻在脑海里:
网络传输黄金铁律:
- 端到端(End-to-End)的 IP 地址全程不变:源 IP 永远是发出者电脑 A(
192.0.2.10),目的 IP 永远是指向最终归宿电脑 B(198.51.100.20)。它指引着全球航向!- 逐跳(Hop-by-Hop)的 MAC 地址每跨过一台路由器就彻底换一套:MAC 地址只负责在当前这一小段局域网里,把包裹安全交接给相邻的下一个物理接口。
- 生存时间 TTL 每跨越一台路由器必须减 1:在防止三层死循环的同时,悄悄记录下了数据包在网络中跋涉的跳数。
如果在左侧加入二层交换机呢? 如果在电脑 A 和 R1 之间串入一台普通交换机,由于交换机只在数据链路层按 MAC 查表转发,交换机既不会修改源目 MAC,更不会改动 IP 和减 TTL!TTL 只有在经过三层路由转发时才会递减。
5. 小结与下一步
- 字段变化法则:端到端 IP 不变,逐跳 MAC 改变,TTL 每经一跳减 1。
- 路由器的本职工作:剥去旧以太网头
校验并递减 TTL 查路由表选出接口 重新封装新以太网头 转发。
在上面的推导中,我们假设网络一片祥和、顺利通达。但如果两台电脑之间网线断了、目标 IP 压根不存在、或者 TTL 在半路上减到了 0: 网络层是怎样向发送端回报错信的?我们每天用的 ping 和 traceroute 命令到底是怎么探路的? 下一课我们学习网络层的哨兵——互联网控制报文协议(ICMP)。