2021-408题目解析


2021-408题目解析

题干

答案

(1) H1 运行的应用层协议及封装过程

  • 应用层协议: DNS (域名解析协议)。
    • 原因: H1 只知道域名 www.abc.com,在发送 HTTP 请求前必须先通过 DNS 协议获取其 IP 地址。
  • 逐层封装过程:
    • 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 响应、转发外网回包时被学习)
  • 解析:
    1. H1 发起通信,S 记录端口 4。
    2. H1 访问本地 DNS 服务器,DNS 服务器回包经过端口 1,S 记录端口 1。
    3. H1 访问外网 Web 服务器,报文需经网关(路由器 R)。H1 会发 ARP 请求找 R 的 MAC,R 回复时经过端口 2,S 记录端口 2。

(3) H2 接收到的帧及详细信息

从 $t_0$ 到 $t_1$ 期间,H2 至少会接收到 2 个帧

  1. 收到了什么帧?
    • ARP 请求帧
  2. 具体是哪两个?
    • 第一个: H1 发出的查询“本地域名服务器 IP 对应的 MAC 地址”的 ARP 请求。
    • 第二个: H1 发出的查询“默认网关(路由器 R)IP 对应的 MAC 地址”的 ARP 请求。
  3. 目的 MAC 地址是什么?
    • ff-ff-ff-ff-ff-ff (广播地址)。
  • 为什么 H2 只收到这两个?
    • ARP 请求是广播发送的,交换机会向除了入口外的所有端口转发,所以 H2 肯定能收到。
    • 而后续的 DNS 查询、TCP 三次握手、HTTP 请求都是单播。由于交换机 S 在 ARP 阶段已经学习到了相关端口,所以这些单播帧会直接在对应端口间转发,不会发送给 H2。

过程解析

第一阶段

重点:DNS 域名解析(寻找 Web 服务器的 IP)

H1 只知道网址 www.abc.com,不知道它的 IP,所以必须先问本地域名服务器。

  1. H1 发现不知道域名服务器的 MAC 地址
    • H1 准备发送 DNS 查询包给 192.168.1.126
    • 检查 ARP 表,发现没有该 IP 的 MAC 地址。
  2. H1 发起 ARP 广播(第 1 个 H2 收到的帧)
    • H1 发出 ARP 请求。
    • 交换机 S:收到后,学习到 H1 的 MAC 在 4 号端口;因为是广播,S 将其转发到 1、2、3 号端口。
    • H2:收到了这个广播帧。
  3. 域名服务器响应 ARP
    • 域名服务器发现找的是自己,回复 ARP 响应(单播)。
    • 交换机 S:收到后,学习到域名服务器的 MAC 在 1 号端口。因为目的地是 H1,S 查表知道 H1 在 4 号口,直接转发过去。
  4. H1 发送 DNS 查询
    • H1 现在有了 MAC,发出 DNS 请求报文。
    • 交换机 S:根据之前的学习,直接在 1、4 号端口间单播转发。
  5. 域名服务器返回 DNS 结果
    • 告诉 H1:www.abc.com 的 IP 地址是(假设为)202.10.1.1

第二阶段

重点:ARP 找网关(跨网段通信的前奏)

H1 拿到了 Web 服务器的 IP(202.10.1.1),发现这个 IP 和自己不在同一个子网(H1 是 192.168.1.2/25)。

  1. H1 决定发给默认网关(路由器 R)
    • 跨网段通信,数据包必须先发给网关(192.168.1.1)。
  2. H1 发现不知道网关的 MAC 地址
    • 检查 ARP 表,没有 192.168.1.1 的记录。
  3. H1 发起第二次 ARP 广播(第 2 个 H2 收到的帧)
    • H1 发出 ARP 请求。
    • 交换机 S:继续维护 H1 的条目;广播转发到 1、2、3 号端口。
    • H2:又收到了这个广播帧。
  4. 路由器 R 响应 ARP
    • 路由器回复 ARP 响应(单播)。
    • 交换机 S:从 2 号端口收到响应,学习到路由器 R 的 MAC 在 2 号端口

第三阶段

重点:TCP 三次握手与 HTTP 请求

有了网关 MAC,H1 终于可以把数据包发出去了。

  1. TCP 三次握手
    • H1 发出 SYN 包(目标 IP 是 Web 服务器,但目标 MAC 是路由器 R)。
    • 路由器收到后转发给 Internet。
    • Web 服务器返回 SYN+ACK
    • H1 返回 ACK
    • 注:这一系列过程在交换机 S 看来,都是 2 号端口和 4 号端口之间的单播通讯。
  2. 发送 HTTP 请求(到达 $t_1$ 时刻)
    • H1 正式封装好 HTTP GET 请求报文。
    • 这个帧从 H1 发出,进入交换机 S 的 4 号端口。
    • 此时此刻,就是题目要求的 $t_1$ 时刻。

Author: linda1729
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source linda1729 !
评论
  TOC