Appearance
题目
路由器 R 通过以太网交换机 S1 和 S2 连接两个网络,R 的接口、主机 H1 和 H2 的 IP 地址与 MAC 地址如下图所示。若 H1 向 H2 发送一个 IP 分组 P,则 H1 发出的封装 P 的以太网帧的目的 MAC 地址、H2 收到的封装 P 的以太网帧的源 MAC 地址分别是( )。
错因
A
把"以太网帧的 MAC 一路不变"和"IP 分组的 IP 一路不变"混淆了。IP 端到端不变(源 IP = H1,目的 IP = H2),但以太网帧每过一个三层设备(路由器)就会被解封装、重新封装——MAC 是一跳一变的局部寻址。选 A 的人填了 H2 MAC(终点)和 H1 MAC(起点),相当于把 IP 字段当成 MAC 字段写。
B
第一项错(理由同 A:以为 H1 帧能直接发到 H2,目的 MAC 填了 H2),第二项对。混合型错误——已经意识到第二跳源 MAC 是 R 右口的 MAC,但反推第一跳时还停留在"端到端"的错误模型里。
C
第一项对(H1 知道 H2 不在本网段 192.168.3.0/24,所以把帧目的 MAC 设为默认网关 R 左口 MAC),第二项错。错因是没意识到 R 转发分组时会用自己右口的 MAC 重新封装——以为 H2 收到的帧"源 MAC 仍然是发起方 H1",把跨段传输误当成像交换机透明转发那样源 MAC 守恒。
总解析
核心结论先记住:跨网段通信时——
- IP 分组:源 IP / 目的 IP 端到端不变(始终是 H1 ↔ H2)
- 以太网帧:每经过一台路由器,源 MAC 和目的 MAC 都会被改写
逐跳追踪 H1 → H2 的封装:
| 段 | 路径 | 帧的源 MAC | 帧的目的 MAC |
|---|---|---|---|
| 第 1 跳 | H1 → S1 → R 左口 | H1(00-1a-2b-3c-4d-52) | R 左口(00-1a-2b-3c-4d-51) |
| 第 2 跳 | R 右口 → S2 → H2 | R 右口(00-1a-2b-3c-4d-61) | H2(00-a1-b2-c3-d4-62) |
几个关键点:
- H1 怎么知道目的 MAC 该填谁的:H1 比较目的 IP(192.168.4.2)和自己的子网(192.168.3.0/24)→ 不在同子网 → 把帧发给默认网关(R 左口 192.168.3.1)。然后通过 ARP 查到 R 左口的 MAC = 00-1a-2b-3c-4d-51,填入帧的目的 MAC。
- R 收到后做什么:R 解开以太网帧,看 IP 头里的目的 IP(192.168.4.2)→ 查路由表 → 通过右口转发 → 用 ARP 查到 H2 的 MAC,重新封装新的以太网帧,源 MAC = R 右口(00-1a-2b-3c-4d-61),目的 MAC = H2(00-a1-b2-c3-d4-62)。
- S1 / S2 不改 MAC:交换机是二层透明转发设备,只查 MAC 表选端口、不改帧头。
所以题问的两个值:
- H1 发出的帧的目的 MAC = R 左口 MAC = 00-1a-2b-3c-4d-51
- H2 收到的帧的源 MAC = R 右口 MAC = 00-1a-2b-3c-4d-61
最终答案是 D(00-1a-2b-3c-4d-51、00-a1-b2-c3-d4-61)。
编者注(生僻术语):若复习时还没把"L2 帧"和"L3 分组"分清——记住一句话:IP 是给"两个网络节点端到端"看的,MAC 是给"同一根线缆上谁收"看的。每过一个路由器就换一根线缆,MAC 就要重写。