Appearance
题目
下图所示网络中,若主机 H2 向主机 H4 发送 1 个数据帧,主机 H4 向主机 H2 立即发送一个确认帧,则除 H4 外,从物理层上能够收到该确认帧的主机还有( )。
图中说明:Switch 为 100BaseT 交换机;Hub 为 100BaseT 集线器;H1/H2 直接接 Switch、H3/H4 经 Hub 接 Switch。
错因
A
漏算了 H3——H4 与 H3 都接到同一个 Hub 上,Hub 是物理层广播设备,任何端口收到的信号都会原封不动放大并送到所有其他端口。所以 H4 发出的确认帧物理信号一定会出现在 H3 的网卡接收端(H3 网卡看到目的 MAC 不是自己再丢弃,但物理层确实收到了)。错的根源:把"目的 MAC 不是 H3 → H3 不该收到"应用到物理层判断上。物理层不看 MAC、只关心信号到没到。
B
漏算了 H2——H2 是确认帧的目的方,肯定能在物理层收到(信号到达 H2 网卡)。错的根源:解读题面时漏掉"目的方也算物理层收到",只想着"除目的方外谁还能收"。
C
把 H1 算进去而漏了 H3——可能误以为"Switch 收到帧后会广播到所有端口"。但 Switch 是第 2 层设备,会查 MAC 表精确转发——确认帧目的 MAC 是 H2,Switch 已经学习过 H2 在哪个端口(之前 H2 给 H4 发数据时已记录),所以只把帧转发到连接 H2 的那个端口,不会送到 H1。漏算 H3 的原因同 A——没意识到 H3 与 H4 同 Hub、物理层一定收到。
总解析
第一步:明确各设备工作层与转发逻辑
| 设备 | 工作层 | 转发逻辑 |
|---|---|---|
| Hub | 物理层 | 任意端口收到信号 → 放大 + 广播到其他所有端口(不看任何字段) |
| Switch | 数据链路层 | 看目的 MAC,查 MAC 表后只转发到对应端口(已学习 H2 的位置后) |
第二步:追踪 H4 → H2 确认帧的物理路径
H4 发出确认帧
↓
Hub ← H3 也接在 Hub 上 → H3 物理层收到(Hub 广播)
↓
Sw(Hub 接 Sw 一个端口)
↓ Sw 查 MAC 表,目的 MAC = H2,已学习 H2 在另一端口
H2 收到(目的)第三步:逐主机判断"物理层是否收到"
| 主机 | 物理层是否收到 | 原因 |
|---|---|---|
| H1 | ❌ | Sw 查 MAC 表后只转给 H2,H1 端口没收到信号 |
| H2 | ✅ | 目的方,必收到 |
| H3 | ✅ | 与 H4 同 Hub,Hub 物理层广播 |
| H4 | (题面排除) | — |
收到帧的非 H4 主机 = H2 + H3。
最终答案是 D(仅 H2、H3)。
编者注(生僻术语):"冲突域"和"广播域"的关键区别——
- 冲突域:用 Hub / Repeater 不能隔离(同 Hub 是 1 个冲突域),用 Switch / Bridge 可隔离(每个 Switch 端口是独立冲突域)
- 广播域:用 Switch / Bridge / Hub 都不能隔离(默认透明转发广播帧),只有 Router 能隔离(路由器不转发广播)
本题 H3 + H4 在同一冲突域(共 Hub),Switch 把它们与 H1 / H2 隔成不同冲突域;但所有 4 台主机仍在同一广播域内(无路由器隔离)。