2021-408题目解析
题干


答案
(1) H1 运行的应用层协议及封装过程
- 应用层协议: DNS (域名解析协议)。
- 原因: H1 只知道域名
www.abc.com,在发送 HTTP 请求前必须先通过 DNS 协议获取其 IP 地址。
- 原因: H1 只知道域名
- 逐层封装过程:
- DNS报文 $\rightarrow$ UDP数据报 $\rightarrow$ IP数据报 $\rightarrow$ 以太网帧。
- (注意:DNS 通常使用 UDP 传输;HTTP 使用 TCP 传输)
(2) $t_1$ 时刻交换机 S 的交换表内容
到 $t_1$ 时刻(S 收到 HTTP 请求帧),网络中已经发生了多次交互,交换机 S 通过“自学习”算法已经记录了多个端口对应的 MAC 地址。
交换表内容如下:
| MAC 地址 | 端口 | 对应设备(解析用,考试不用写) |
|---|---|---|
| 00-11-22-33-44-cc | 4 | H1(发送ARP请求、DNS请求、TCP握手等) |
| 00-11-22-33-44-bb | 1 | 本地域名服务器(回复DNS响应时被学习) |
| 00-11-22-33-44-aa | 2 | 路由器 R(回复网关 ARP 响应、转发外网回包时被学习) |
- 解析:
- H1 发起通信,S 记录端口 4。
- H1 访问本地 DNS 服务器,DNS 服务器回包经过端口 1,S 记录端口 1。
- H1 访问外网 Web 服务器,报文需经网关(路由器 R)。H1 会发 ARP 请求找 R 的 MAC,R 回复时经过端口 2,S 记录端口 2。
(3) H2 接收到的帧及详细信息
从 $t_0$ 到 $t_1$ 期间,H2 至少会接收到 2 个帧。
- 收到了什么帧?
- ARP 请求帧。
- 具体是哪两个?
- 第一个: H1 发出的查询“本地域名服务器 IP 对应的 MAC 地址”的 ARP 请求。
- 第二个: H1 发出的查询“默认网关(路由器 R)IP 对应的 MAC 地址”的 ARP 请求。
- 目的 MAC 地址是什么?
- ff-ff-ff-ff-ff-ff (广播地址)。
- 为什么 H2 只收到这两个?
- ARP 请求是广播发送的,交换机会向除了入口外的所有端口转发,所以 H2 肯定能收到。
- 而后续的 DNS 查询、TCP 三次握手、HTTP 请求都是单播。由于交换机 S 在 ARP 阶段已经学习到了相关端口,所以这些单播帧会直接在对应端口间转发,不会发送给 H2。
过程解析
第一阶段
重点:DNS 域名解析(寻找 Web 服务器的 IP)
H1 只知道网址 www.abc.com,不知道它的 IP,所以必须先问本地域名服务器。
- H1 发现不知道域名服务器的 MAC 地址:
- H1 准备发送 DNS 查询包给
192.168.1.126。 - 检查 ARP 表,发现没有该 IP 的 MAC 地址。
- H1 准备发送 DNS 查询包给
- H1 发起 ARP 广播(第 1 个 H2 收到的帧):
- H1 发出 ARP 请求。
- 交换机 S:收到后,学习到 H1 的 MAC 在 4 号端口;因为是广播,S 将其转发到 1、2、3 号端口。
- H2:收到了这个广播帧。
- 域名服务器响应 ARP:
- 域名服务器发现找的是自己,回复 ARP 响应(单播)。
- 交换机 S:收到后,学习到域名服务器的 MAC 在 1 号端口。因为目的地是 H1,S 查表知道 H1 在 4 号口,直接转发过去。
- H1 发送 DNS 查询:
- H1 现在有了 MAC,发出 DNS 请求报文。
- 交换机 S:根据之前的学习,直接在 1、4 号端口间单播转发。
- 域名服务器返回 DNS 结果:
- 告诉 H1:
www.abc.com的 IP 地址是(假设为)202.10.1.1。
- 告诉 H1:
第二阶段
重点:ARP 找网关(跨网段通信的前奏)
H1 拿到了 Web 服务器的 IP(202.10.1.1),发现这个 IP 和自己不在同一个子网(H1 是 192.168.1.2/25)。
- H1 决定发给默认网关(路由器 R):
- 跨网段通信,数据包必须先发给网关(
192.168.1.1)。
- 跨网段通信,数据包必须先发给网关(
- H1 发现不知道网关的 MAC 地址:
- 检查 ARP 表,没有
192.168.1.1的记录。
- 检查 ARP 表,没有
- H1 发起第二次 ARP 广播(第 2 个 H2 收到的帧):
- H1 发出 ARP 请求。
- 交换机 S:继续维护 H1 的条目;广播转发到 1、2、3 号端口。
- H2:又收到了这个广播帧。
- 路由器 R 响应 ARP:
- 路由器回复 ARP 响应(单播)。
- 交换机 S:从 2 号端口收到响应,学习到路由器 R 的 MAC 在 2 号端口。
第三阶段
重点:TCP 三次握手与 HTTP 请求
有了网关 MAC,H1 终于可以把数据包发出去了。
- TCP 三次握手:
- H1 发出
SYN包(目标 IP 是 Web 服务器,但目标 MAC 是路由器 R)。 - 路由器收到后转发给 Internet。
- Web 服务器返回
SYN+ACK。 - H1 返回
ACK。 - 注:这一系列过程在交换机 S 看来,都是 2 号端口和 4 号端口之间的单播通讯。
- H1 发出
- 发送 HTTP 请求(到达 $t_1$ 时刻):
- H1 正式封装好
HTTP GET请求报文。 - 这个帧从 H1 发出,进入交换机 S 的 4 号端口。
- 此时此刻,就是题目要求的 $t_1$ 时刻。
- H1 正式封装好