考研学习
解题方法计算机网络

计算机网络第 6 章:应用层

408 计算机网络「应用层」复习:核心知识点、真题题型、通用解法与易错点。

Last updated on

本章优先参考本站 408 真题 → 计算机网络 → 第 6 章应用层,再用站内 408 模拟选择题补充题型。站内本章真题一共收录了 17 道:网络应用模型 1 道、DNS 3 道、FTP 2 道、电子邮件 4 道、WWW/HTTP 7 道;因此复习优先级非常明显:

HTTP/WWW 综合题 ≈ DNS > 电子邮件 ≈ FTP > C/S 与 P2P 基础概念

尤其 HTTP 经常不单独考 HTTP,而是和 DNS、TCP、ARP、交换机、路由器、NAT、拥塞控制一起考。2011、2021、2022 真题就是非常典型的综合题。本站也明确建议按“真题 → 归纳命题方式 → 模拟题补充”的顺序研究。(Any Docs)


一、第 6 章到底在学什么?

整个应用层其实可以压缩成一个问题:

一个用户在应用程序里想访问另一个网络服务,究竟发生了什么?

例如浏览器输入:

www.abc.com

背后可能依次发生:

DNS

域名:

www.abc.com

变成:

64.170.98.32

↓

TCP

浏览器与服务器建立 TCP 连接

↓

HTTP

浏览器:

GET /index.html

服务器:

返回 HTML

↓

浏览器发现 HTML 里还有图片,又继续请求图片。

如果从整台计算机角度看,还可能更早发生:

DHCP → ARP → DNS → ARP → TCP → HTTP

所以第 6 章绝不能只背“HTTP 端口 80”。


二、先背熟这一张表

这是本章所有题的底座。

应用应用层协议传输层常见服务器端口核心特点
域名解析DNSUDP为主,也可TCP53域名 → IP
文件传输FTPTCP21 / 20控制、数据分离
发送邮件SMTPTCP25推送邮件
接收邮件POP3TCP110从服务器取邮件
接收/管理邮件IMAPTCP143邮件主要留在服务器
WebHTTPTCP80无状态
安全 WebHTTPSTCP443HTTP + TLS

考试最爱挖一个坑:

服务器端口固定 ≠ 客户端端口也固定。

例如访问 HTTP:

  • 服务器:80;
  • 客户端:操作系统分配的临时端口。

因此不能说:

“HTTP 客户端和服务器的默认端口都是 80。”

站内模拟题就专门考了这个陷阱。(Any Docs)


三、题型一:C/S 与 P2P 模型

1. 核心知识

C/S

Client / Server。

特点:

  • 服务器长期运行;
  • 客户主动请求;
  • 服务器被动等待请求;
  • 客户之间通常不直接通信;
  • 管理集中;
  • 服务器容易成为瓶颈。

例如:

  • Web;
  • FTP;
  • DNS;
  • 电子邮件的大部分服务。

P2P

Peer-to-Peer。

一个结点:

既可能是客户,又可能是服务器。

例如某个结点一边下载文件,一边把已经下载的部分提供给别人。

优势:

  • 扩展性好;
  • 用户越多,总上传能力往往越大;
  • 文件大规模分发能力强。

缺点:

  • 结点随时上下线;
  • 管理困难;
  • 安全性、稳定性通常弱于集中式 C/S。

四、真题:2019 网络应用模型

站内 2019 真题大意:

判断关于 P2P 和 C/S 的四个说法,其中有:

  • P2P 中结点具有对等关系;
  • C/S 中客户与客户可以直接通信;
  • C/S 中客户主动、服务器被动;
  • 大规模文件分发时 P2P 通常比 C/S 快。

找错误项。

答案:

“C/S 中客户与客户可以直接通信”错误。

典型 C/S 是:

Client A
    ↓
 Server
    ↑
Client B

不是:

Client A ↔ Client B

另外 P2P 文件分发快的根本原因不是“P2P 这个名字听起来先进”,而是:

用户本身也贡献上传带宽。

站内 2019 真题就是围绕这些性质判断。(Any Docs)


五、模拟变式:P2P 是否一定更稳定?

站内“竟成·模拟七-40”问:

DNS、FTP 是否属于 C/S?P2P 结点能否同时充当客户端和服务器?P2P 是否比 C/S 更安全、更稳定?

错误项是:

P2P 更安全、更稳定。

恰恰相反。

P2P:

  • 去中心化;
  • 扩展性高;

但:

  • 用户随时退出;
  • 资源分散;
  • 管理困难。

所以:

扩展性强 ≠ 稳定性强。

这是选择题非常典型的偷换概念。(Any Docs)


六、P2P 可能进一步怎样考?

可以考文件分发时间。

设:

  • 文件大小 ;
  • 服务器上传速率 ;
  • 第 个客户端上传速率 ;
  • 最慢客户端下载速率 ;
  • 有 个客户端。

C/S 至少要满足:

因为服务器总共必须发送 份文件。

P2P 可以利用所有结点上传能力:

408 本章目前站内真题没有直接这样计算,但属于很自然的变式。


七、题型二:DNS——本章第一大重点

DNS 要解决:

域名 → IP 地址

例如:

www.abc.com
      ↓ DNS
64.170.98.32

八、DNS 层次结构一定要懂

例如:

www.abc.xyz.com

从右向左理解:

根
 ↓
.com
 ↓
xyz.com
 ↓
abc.xyz.com
 ↓
www.abc.xyz.com

对应 DNS 查询时可能依次遇到:

  1. 根域名服务器;
  2. .com 顶级域名服务器;
  3. xyz.com 权威服务器;
  4. abc.xyz.com 权威服务器。

这直接决定 DNS 查询次数题。


九、递归查询和迭代查询——超级高频

这是 DNS 最重要的区别。

递归查询

A 问 B:

帮本章结合最终答案查出来。

B 不能只向 A 返回“请继续询问其他服务器”这一指示。

而是:

A → B
    B → C
        C → D
        ←
    ←
←

A 只发一次。


迭代查询

A 问 B:

地址是多少?

B:

当前服务器不知道最终答案,客户端需要继续查询 C。

于是 A 自己继续:

A → B
A → C
A → D

所以:

递归:被问者继续查。

迭代:查询者自己继续查。

这个区别一定形成条件反射。


十、2010 真题:递归查询次数

题目大意:

本地域名服务器没有缓存。如果采用递归方式解析另一网络的主机域名,那么:

用户主机、本地域名服务器分别发送多少条 DNS 请求?

答案:

1 条、1 条。

原因:

主机:

主机 → 本地 DNS

只发一次。

本地 DNS:

本地 DNS → 上一级 DNS

也是一次递归请求。

之后:

由被询问的 DNS 服务器继续向下查询。

所以千万不要看到“根 → 顶级 → 权威”就机械数成很多次。

先看题目:

究竟问的是哪台机器发了多少次?

站内 2010 真题答案也是“一条、一条”。(Any Docs)


十一、DNS 查询次数统一解法

以后看到这种题先做两件事。

第一步:圈出主语

题目问:

  • 用户主机?
  • 本地域名服务器?
  • 所有 DNS 服务器?
  • 某一台服务器?

完全不一样。


第二步:圈出方式

递归

本地 DNS 一般只需要:

次向外请求。

迭代

本地 DNS 要自己一级一级问。

可能:

根
↓
顶级
↓
二级域
↓
三级域

于是有多次请求。


十二、2016 真题:DNS 最少/最多查询次数

题目大意:

所有 DNS 服务器均采用迭代查询。H4 访问

www.abc.xyz.com

问域名服务器 201.1.1.1 最少和最多可能发送几次 DNS 查询?

答案:

为什么最少是 0?

因为:

有缓存。

如果本地 DNS 已经缓存:

www.abc.xyz.com → IP

直接回答主机即可。

所以:


无缓存时:

根
↓
com
↓
xyz.com
↓
abc.xyz.com

共:

这道题把两个重要知识点绑到一起:

缓存 + 迭代查询。

站内 2016 真题答案正是 0、4。(Any Docs)


十三、模拟题:全部服务器都递归怎么办?

站内“竟成·模拟六-40”:

所有域名服务器都使用递归方式,解析 www.aaa.bbb.com,问本地域名服务器最少、最多发送多少次 DNS 查询?

答案:

有缓存:

没有缓存:

本地 DNS 只向上一级发一条递归请求:

后面别人负责。

这道模拟题恰好和 2016 真题形成一组:

查询方式本地域名服务器最多可能发送
全递归1
迭代可能多次

(Any Docs)


十四、DNS 缓存题

缓存是 DNS 必考概念。

目的:

  1. 加速解析;
  2. 减轻根 DNS 压力;
  3. 减少 DNS 报文;
  4. 减小响应时间。

站内王道模拟题专门问:

“为什么 DNS 广泛使用高速缓存?”

答案就是上述原因。普通 DNS 查询通常使用 UDP 53;不能笼统说 DNS 一定使用 TCP。(Any Docs)


十五、DNS 到底 UDP 还是 TCP?

高频选择题:

DNS = UDP?

更准确说:

普通查询

通常:

DNS
 ↓
UDP
 ↓
IP

服务器端口:

特殊情况

DNS 也能使用 TCP,例如区域传送等。

所以:

“DNS 使用 UDP”——很多考试语境下可以。

但:

“DNS 只能使用 UDP”

错误。


十六、2020 真题:DNS + TCP + HTTP 的 RTT 综合题

这是第六章必须会的典型题。

题目大意:

主机 H 点击 www.abc.com/index.html,各 Internet 服务器往返时间都是 。

本地域名服务器对主机提供递归服务,其他 DNS 使用迭代查询。

忽略其他时延。

求从点击链接到收到纯文本 index.html 的最短时间和最长时间。

答案:

站内给出的选项答案为 D。(Any Docs)


最短情况

DNS 已缓存服务器 IP。

因此 DNS 不需要向 Internet 查询。

随后:

建立 TCP

HTTP 请求 + 收到网页

所以:

题给:

于是:


最长情况

没有 DNS 缓存。

需要:

根 DNS
↓
.com DNS
↓
abc.com DNS

共:

再:

TCP:

HTTP:

因此:

所以:


十七、DNS + HTTP 时延题万能公式

先画:

DNS
+
TCP
+
HTTP

于是:

如果 DNS 迭代查询了 次,每次 RTT 相同:

建立 TCP:

请求一个小对象:

因此:

但务必先看:

计时从哪里开始。

这是 HTTP 题最大的坑之一。


十八、题型三:FTP

FTP 和普通 HTTP 最明显的区别:

FTP 有两条 TCP 连接。


十九、FTP 两条连接

控制连接

负责:

  • 用户名;
  • 密码;
  • 文件操作命令;
  • 服务器响应。

服务器:

通常整个 FTP 会话持续存在。


数据连接

负责:

  • 文件内容;
  • 目录列表等。

每进行一次具体的数据传输,通常建立对应数据连接,传完关闭。


二十、2009 真题

题目:

FTP 客户端和服务器传递 FTP 命令使用什么连接?

答案:

建立在 TCP 上的控制连接。

即:

FTP command
   ↓
control connection
   ↓
TCP

不是数据连接。

站内 2009 真题明确考的就是“控制连接 vs 数据连接”。(Any Docs)


二十一、2017 真题:FTP 端口陷阱

题目大意:

判断 FTP 四个说法:

  • 数据传完后数据连接关闭;
  • 控制连接整个会话保持;
  • 服务器总与客户端 TCP 20 端口建立数据连接;
  • 客户端连接服务器 TCP 21 端口建立控制连接。

找错误项。

答案是第三项。(Any Docs)

很多人会背:

FTP = 20 + 21

然后掉坑。

真正情况:


主动模式

控制:

客户端临时端口 → Server:21

数据:

Server:20 → 客户端临时端口

被动模式

控制:

客户端临时端口 → Server:21

数据:

客户端临时端口 → Server:临时端口

因此:

数据连接并不永远使用服务器 20 端口。

主动模式才典型使用服务器 TCP 20。


二十二、FTP 选择题统一判断法

遇到 FTP 先写:

控制:TCP 21,长连接
数据:独立 TCP,按需建立

然后检查选项。

另外站内模拟题还考了:

FTP 能不能让用户指定文件表示类型?

可以。

例如:

  • ASCII;
  • 二进制。

因此“FTP 不允许客户指定文件类型和格式”错误。(Any Docs)


二十三、题型四:电子邮件

电子邮件记住一句:

发信用 SMTP,收信用 POP3 / IMAP。


二十四、一封邮件真正怎么走?

用户 A 给用户 B:

A 用户代理
   │ SMTP
   ↓
A 邮件服务器
   │ SMTP
   ↓
B 邮件服务器
   │ POP3 / IMAP
   ↓
B 用户代理

所以:

SMTP 负责“推”。

POP3 / IMAP 负责“取”。


二十五、2012 真题:邮件协议流程

题目给出用户 1 给用户 2 发邮件的三个阶段,问分别用什么协议。

答案:

SMTP
SMTP
POP3

也就是:

  1. 用户 1 → 自己邮件服务器:SMTP;
  2. 邮件服务器 → 对方邮件服务器:SMTP;
  3. 用户 2 → 自己邮件服务器取邮件:POP3。

(Any Docs)

这个图一定记住。


二十六、2013 真题:SMTP 到底负责哪些方向?

题目判断:

  1. SMTP 传统上直接支持 7 bit ASCII;
  2. 邮件服务器之间可以使用 SMTP;
  3. 用户代理向邮件服务器发送邮件可以使用 SMTP;
  4. 邮件服务器向用户代理发送邮件使用 SMTP。

前三个正确,第 4 个错误。

为什么?

因为:

User Agent → Mail Server
       SMTP

以及:

Mail Server → Mail Server
       SMTP

但是:

Mail Server → User Agent

用户“取邮件”一般使用:

POP3 / IMAP

站内 2013 真题答案为 I、II、III。(Any Docs)


二十七、SMTP 的 ASCII 坑

传统 SMTP 直接支持:

7 位 ASCII 文本。

图片:

  • JPEG;

视频:

  • MPEG;

程序:

  • EXE;

等二进制内容不能直接这样传。

怎么办?

使用 MIME 等机制编码。


二十八、2018 真题

题目:

下列哪种内容无需转换即可由 SMTP 直接发送?

JPEG / MPEG / EXE / ASCII 文本。

答案:

ASCII 文本。

(Any Docs)

记忆:

SMTP:原生文本
MIME:帮它扩展多媒体

二十九、2015 真题:POP3 的传输层

题目:

POP3 使用什么类型的传输层服务?

POP3:

POP3
 ↓
TCP

TCP:

  • 面向连接;
  • 可靠。

所以答案:

有连接、可靠的数据传输服务。

(Any Docs)


三十、电子邮件最容易出的综合变式

如果题目说:

用户用网页版 Gmail / QQ 邮箱阅读邮件。

浏览器与邮件网站之间可能:

HTTP / HTTPS

但邮件服务器彼此交换邮件仍然可以:

SMTP

所以不要看到“邮件”就无脑选 SMTP。

要看:

哪两个实体之间通信?

这是整个应用层都适用的方法。


三十一、题型五:HTTP / WWW——全章最大重点

站内本章 17 道真题中,WWW/HTTP 部分就收录了 7 道,而且其中包括多道综合题。(Any Docs)

HTTP 需要掌握五大块:

  1. HTTP 基本性质;
  2. HTTP 请求报文;
  3. Cookie;
  4. 持续 / 非持续连接;
  5. RTT 计算。

三十二、HTTP 的核心性质

HTTP:

无状态协议。

什么意思?

服务器不会仅凭 HTTP 协议本身自动记住:

“这个请求就是刚才那个用户。”

所以才有:

  • Cookie;
  • Session 等机制。

因此:

HTTP 无状态 ≠ 网站不能保存登录状态。

状态是通过额外机制维护的。


三十三、HTTP 请求报文必须看懂

站内 2015 真题给了:

GET /index.html HTTP/1.1
Host: www.test.edu.cn
Connection: Close
Cookie: 123456

然后判断各字段含义。(Any Docs)


第一行

GET /index.html HTTP/1.1

表示:

  • 方法:GET;
  • 请求对象:/index.html;
  • 协议版本:HTTP/1.1。

Host

Host: www.test.edu.cn

这是:

目标服务器主机名。

不是客户端名字。


Connection

Connection: Close

表示:

当前请求响应之后关闭连接。

即不要继续复用 TCP。

如果:

Connection: keep-alive

表示希望保持连接。


Cookie: 123456

表示浏览器保存了服务器此前提供的 Cookie,并随请求带回。

因此通常说明:

浏览器之前已经和这个站点发生过交互。


三十四、2015 真题:HTTP 报文字段

题目要求判断:

  • 浏览器是否请求 index.html;
  • 文件是不是在 www.test.edu.cn;
  • 是否使用持续连接;
  • 浏览器是否曾访问过该站点。

关键字段:

Connection: Close

所以:

“浏览器请求使用持续连接”错误。

答案 C。(Any Docs)


站内“竟成·模拟四-40”给:

POST /index.htm HTTP/1.1
Host: www.test.edu.cn
Connection: keep-alive
Cookie: 123456

考四个东西:

  • HTTP 本身是否“有连接”;
  • keep-alive;
  • Cookie;
  • POST。

答案认为错误说法是:

“HTTP 本身有连接。”

因为真正提供连接的是:

TCP

HTTP 使用 TCP 提供的服务。(Any Docs)

另外:

GET

主要用于获取资源。

POST

主要用于向服务器提交数据或触发处理。


三十六、2018 真题:哪些应用能使用无连接传输?

题目:

FTP、DNS、SMTP、HTTP 中哪个可以使用传输层无连接服务?

答案:

DNS。

因为:

FTP → TCP
SMTP → TCP
HTTP → TCP
DNS → UDP 可以

(Any Docs)


三十七、HTTP/1.0 与 HTTP/1.1

这部分是 RTT 计算的核心。

非持续连接

典型 HTTP/1.0。

一个对象:

建立 TCP
↓
请求对象
↓
收到对象
↓
关闭

下一个对象:

重新建立 TCP。


持续连接

HTTP/1.1 默认:

多个 HTTP 请求可以复用同一个 TCP 连接。


三十八、非流水线持续连接

过程:

请求 HTML
← HTML

请求图片1
← 图片1

请求图片2
← 图片2

必须收到上一个结果才能请求下一个。


三十九、流水线方式

理论上的流水线:

请求图片1
请求图片2
请求图片3
       ↓
一次连续发出

因此能节省 RTT。

考试计算题必须首先判断:

非持续? 持续非流水线? 持续流水线? 是否并行 TCP?


四十、HTTP RTT 第一套万能公式

假设:

  • 页面基础 HTML 1 个;
  • HTML 引用了 个小对象;
  • 忽略发送时延;
  • 已经完成 DNS。

1. 非持续 + 不并行

每个对象:

共 个对象:


四十一、2024 真题:非持续 HTTP/1.0

站内 2024 真题:

浏览器不支持并行 TCP,使用非持久 HTTP/1.0 请求一个 Web 页。

页面还引用同一网站上的 7 幅小图。

从为网页建立 TCP 连接开始,到所有内容收完,最少多少 RTT?

共有:

个对象。

每个对象:

所以:

答案:

16 RTT。

(Any Docs)

这道题就是非持续 HTTP 的标准模板。


四十二、持续 + 非流水线万能公式

只有一次 TCP 建连:

基础 HTML:

随后 个对象:

因此:

前提是:

从“开始建立 TCP”计时。


四十三、模拟题:1 HTML + 4 图片

站内“竟成·模拟三-40”:

HTTP/1.1,持续连接,非流水线;

HTML 引用了 4 幅 JPEG;

从发起 TCP 连接开始计时。

于是:

建立 TCP:

HTML:

4 个图像:

总计:

答案 B。(Any Docs)


四十四、最重要陷阱:计时起点

同一种 HTTP,答案可以差一个 RTT。


如果题目说

“从开始建立 TCP 连接……”

就计算:

握手。


如果题目说

“从 HTTP 请求已经发出……”

那么:

TCP 连接显然已经存在。

不要再加握手。


四十五、2011 真题:持续非流水线

2011 综合题其中一问:

HTTP/1.1 采用持续、非流水线方式。

rfc.html 引用了 5 幅 JPEG。

从已经发出图中的 Web 请求开始,到收到全部内容需要多少 RTT?

基础页面:

5 幅图片依次:

因此:

而不是:

因为题目没有要求计算 TCP 建连。

站内答案也是 6 RTT。(Any Docs)


四十六、HTTP 大文件题:不能只数“请求次数”

2022 真题明显提高了一档。

题目大意:

HTTP/1.1;

HTML 大小 ;

HTML 引用一幅大小 的图片;

RTT = 10 ms;

已经完成 DNS;

从开始建立 TCP 到全部收到至少多长时间?

答案:

即:

(Any Docs)


四十七、为什么不是简单的 3 RTT?

如果只背:

TCP 1RTT
HTML 1RTT
图片 1RTT

会得到:

错误。

因为图片有:

还涉及:

TCP 慢开始。

初始拥塞窗口按题目体系取:


四十八、2022 真题完整时间线

第 1 个 RTT

完成 TCP 建连,第三次握手可以携带 HTTP 请求。


第 2 个 RTT

服务器发送 HTML:

收到 ACK 后:


第 3 个 RTT

图片总共:

当前一次最多发送:

所以还剩:

ACK 后:


第 4 个 RTT

发送最后:

于是:

又:

所以:


四十九、慢开始文件传输通法

如果某次开始时拥塞窗口为:

慢开始每轮可发送:

前 轮累计:

即:

要发送 个 MSS,应满足:

所以最少轮数:

但具体题目还必须结合:

  • 前一个对象是否已经让 cwnd 增大;
  • HTTP 请求什么时候到;
  • ACK 能否和 HTTP 请求一起携带;
  • 是否忽略发送时延。

这是 2022 这种题的真正难点。


五十、题型六:访问网页会使用哪些协议?

2014 真题:

浏览器访问大学 Web 主页时,PPP、ARP、UDP、SMTP 中哪个不可能使用?

答案:

SMTP。

因为可能涉及:

HTTP
TCP
IP
ARP
DNS
UDP
PPP

但浏览普通网页跟:

SMTP

没有必然关系。

站内答案也是 SMTP。(Any Docs)


五十一、“访问网页全过程”必须形成脑图

考试一说:

主机刚启动,然后打开浏览器访问 www.xxx.com

脑中自动出现:

① 获得网络参数
DHCP
      ↓

② 域名解析
DNS
      ↓

③ 如果不知道下一跳 MAC
ARP
      ↓

④ 与 Web 服务器连接
TCP 三次握手
      ↓

⑤ 请求网页
HTTP
      ↓

⑥ 返回页面
HTTP
      ↓

⑦ 发现图片/CSS等
继续 HTTP 请求

与此同时:

交换机:
学习源 MAC

路由器:
查路由表
TTL - 1
重算 IP 首部校验和

NAT:
可能改 IP / 端口

这就是应用层综合题的完整框架。


五十二、2011 真题:本章最值得研究的综合题之一

题目给:

  • 主机 MAC;
  • 私有 IP:10.2.128.100;
  • 网络拓扑;
  • 一个 Web 请求以太网帧的十六进制内容。

要求:

  1. 找 Web 服务器 IP;
  2. 找默认网关 MAC;
  3. 判断通过什么协议获得目的 MAC;
  4. HTTP 请求过程多少 RTT;
  5. 路由器转发时修改哪些 IP 首部字段。

站内答案为:

  • Web 服务器 IP:64.170.98.32;
  • 默认网关 MAC:00-21-27-21-51-EE;
  • 使用 ARP;
  • ARP 请求帧目的 MAC:
FF-FF-FF-FF-FF-FF
  • HTTP 部分需要 ;
  • 路由/NAT 后修改源 IP、TTL、IP 首部校验和。(Any Docs)

这实际上是一道:

应用层 + 传输层 + 网络层 + 数据链路层

全栈题。


五十三、十六进制帧题怎么拆?

以太网 II 帧开头:

目的 MAC    6B
源 MAC      6B
类型        2B

站内题目开头类似:

00 21 27 21 51 ee
00 15 c5 c1 5e 28
08 00

于是:

目的 MAC:

00-21-27-21-51-EE

源 MAC:

00-15-C5-C1-5E-28

类型:

08 00

代表:

IPv4。

所以看到十六进制帧不要害怕,先固定按字段切。


五十四、为什么目的 MAC 是网关,不是 Web 服务器?

Web 服务器在 Internet 上。

主机判断:

目的 IP 与自己是否同一子网?

如果不是:

IP 分组交给默认网关。

因此以太网帧:

目的 MAC = 默认网关 MAC

而 IP 分组:

目的 IP = Web 服务器 IP

这是一条极其重要的规律:

MAC 地址负责“一跳”。

IP 地址负责“端到端”。

所以经过路由器:

MAC 会换;

目标 IP 通常不换。


五十五、ARP 在这里干什么?

主机知道:

下一跳 IP。

但是不知道:

下一跳 MAC。

于是 ARP:

IP → MAC

ARP 请求采用广播:

FF-FF-FF-FF-FF-FF

ARP 响应通常单播。


五十六、路由器转发到底修改什么?

普通路由器:

TTL:

所以 IPv4 首部校验和需要重新计算。

链路层帧也重新封装:

源 MAC
目的 MAC

都会随下一跳改变。


如果还存在 NAT

例如:

10.2.128.100

是私网地址。

出口路由器可能改成公网 IP。

于是:

源 IP

也修改。

因此 2011 题答案包括:

  • 源 IP;
  • TTL;
  • IP 首部校验和。

(Any Docs)

补充一个做综合题很有价值的细节:

如果 NAT 改了 IP 地址,TCP/UDP 校验和通常也要相应调整,因为 TCP/UDP 校验和计算涉及伪首部。不过 2011 那一问明确问的是 IP 分组首部字段,所以标准答案列 IP 首部相关字段即可。


五十七、2021 真题:真正的“浏览网页全过程”

这是建议重点反复做的一道。

题目给:

  • 交换机 S;
  • 路由器 R;
  • 本地域名服务器;
  • H1、H2;
  • IP/MAC;
  • 初始 H1 ARP 表为空;
  • 交换机转发表为空;
  • H1 用域名访问 Web 网站。

然后直到:

交换机第一次收到封装 HTTP 请求的帧。

问:

  1. H1 除 HTTP 外还运行哪个应用层协议?
  2. 如何逐层封装?
  3. 此时交换表有哪些表项?
  4. H2 至少收到几个相关帧?
  5. 是什么帧?
  6. 目的 MAC 是多少?

站内答案:

第 1 问

还使用:

DNS。

封装:

DNS
↓
UDP
↓
IP
↓
Ethernet

(Any Docs)


五十八、为什么 DNS 使用 UDP?

因为访问:

www.abc.com

HTTP 最终要建立 TCP 到:

服务器 IP

可浏览器最开始只有域名。

所以必须:

www.abc.com
      ↓
DNS
      ↓
IP

普通 DNS 查询:

DNS → UDP → IP → Ethernet

这就是综合题最喜欢问的:

逐层封装。


五十九、交换机自学习必须掌握

交换机学习:

收到帧的源 MAC 地址。

假设帧:

源 MAC = AA
目的 MAC = BB

从端口 3 进入。

交换机学:

AA → Port 3

不是:

BB → Port 3

因此标准口令:

从哪进,学谁的源地址。

2021 题到 时,交换机已经通过通信学习到 H1、路由器、本地域名服务器等源 MAC 对应端口,而仅仅收到广播却没有发送帧的 H2 不会因此被交换机学习。站内给出了三条对应表项。(Any Docs)


六十、为什么 H2 会收到和自己无关的帧?

因为 ARP 请求:

FF-FF-FF-FF-FF-FF

是广播。

交换机收到广播:

除入端口外向其他端口泛洪。

因此 H2 即使不参与 Web 通信,也会收到广播 ARP。

站内 2021 真题答案:

H2 至少收到 2 个相关帧,均为 ARP 请求广播帧。

目的 MAC 都是:

FF-FF-FF-FF-FF-FF

(Any Docs)


六十一、以后碰到“主机访问网站综合题”的统一解题算法

不要跟着报文乱走。

固定分成七阶段。

阶段 1:配置

问:

IP、子网掩码、默认网关、DNS 从哪来?

可能:

DHCP

阶段 2:域名解析

DNS

问:

  • 缓存?
  • 递归还是迭代?
  • UDP/TCP?
  • 几个 RTT?

阶段 3:确定下一跳

比较:

和:

相同:

直接交目标主机。

不同:

交默认网关。


阶段 4:确定 MAC

ARP:

下一跳 IP → 下一跳 MAC

阶段 5:TCP

三次握手。

通常:


阶段 6:HTTP

分析:

  • HTTP/1.0 还是 1.1;
  • 持续还是非持续;
  • 流水线还是非流水线;
  • 是否允许并行连接;
  • 几个对象;
  • 是否涉及慢开始。

阶段 7:交换与路由

交换机:

源 MAC 学习

路由器:

TTL-1
重新封装 Ethernet
重算 IPv4 首部校验和

有 NAT:

IP/端口可能修改

这套模板基本可以覆盖应用层所有大题。


六十二、本章几个特别高频的“绝对化陷阱”

408 很喜欢使用:

一定、只能、必须、都是、不能

来制造错项。

例如:

错

DNS 使用 TCP。

应为:

DNS 普通查询通常 UDP,也可以 TCP。


错

FTP 数据连接总使用 20 端口。

应为:

主动模式典型使用服务器 TCP 20,被动模式不同。


错

HTTP/1.1 使用非持续连接。

应为:

HTTP/1.1 默认持续连接。


错

HTTP 是有状态协议。

应为:

HTTP 本身无状态。


错

HTTP 客户端端口也是 80。

应为:

服务器 80,客户端通常临时端口。


错

SMTP 用于用户读取邮件。

应为:

读取通常 POP3 / IMAP。


六十三、本章端口题最好这样记

不要背一串孤立数字。

记成“服务”。

HTTP Server       80
HTTPS Server     443

DNS Server        53

FTP Control       21
FTP Active Data   20

SMTP Server       25
POP3 Server      110
IMAP Server      143

然后记:

客户端通常是临时端口。

这一个规则能消灭大量错项。


六十四、HTTP RTT 题最终总结表

假设:

  • 已完成 DNS;
  • 基础 HTML 1 个;
  • 引用 个小对象;
  • 忽略传输时延;
  • 从建立 TCP 开始。

非持续 + 串行


持续 + 非流水线


持续 + 流水线

基础情况下:

即:

  1. TCP;
  2. HTML;
  3. 所有引用对象流水请求/返回。

当然若对象很大、慢开始、带宽受限,则不能直接套。


六十五、如果 DNS 也没完成

再在前面加:

例如查询了 个远端 DNS,每次都是 RTT:

于是非持续串行:

持续非流水线:

关键还是:

所有公式都要服从题目给出的计时起点。


六十六、再给出一道很可能出现的变式

假设:

浏览器使用 HTTP/1.0 非持续连接请求一个 HTML,HTML 引用 10 幅图片,但允许最多同时建立 5 条 TCP 连接。

忽略 DNS 和传输时间。

从建立 HTML 的 TCP 连接开始,多少 RTT?

基础 HTML:

10 幅图片,每次最多并行 5 幅:

批。

每批:

所以:

这个变式就是把 2024 真题里的“不支持并行 TCP”改掉,非常适合继续命题。


六十七、DNS 预测变式

给出:

本地 DNS 已缓存 .com 顶级 DNS 地址,但没有 www.abc.com 的最终记录。采用迭代查询,问还需要发送多少次查询?

不要重新查根。

可能直接:

.com
↓
abc.com

所以缓存不仅可能让查询次数:

还可能:

即:

缓存可以是中间层级服务器信息,不一定非要缓存最终 IP。

这是 DNS 查询次数题很好的升级方向。


六十八、电子邮件预测变式

题目:

用户 A 使用浏览器登录 Web 邮箱给 B 发邮件,以下哪些协议可能出现?

可能:

浏览器 A ↔ Web 邮件服务器:

HTTPS

发送服务器 ↔ 接收服务器:

SMTP

B 用传统客户端收:

POP3 / IMAP

所以一次“发邮件”完全可能同时出现多个应用层协议。

核心原则再次是:

先确定通信双方,再判断协议。


六十九、把站内真题按“价值”重新分类

按照考试复习价值,建议不是按教材顺序刷,而是这样。

第一梯队:必须完全吃透

2020 DNS + HTTP RTT

训练:

DNS 次数 + TCP + HTTP 时间线。

2011 Web 综合题

训练:

Ethernet + ARP + IP + NAT + HTTP。

2021 Web 综合题

训练:

DNS + UDP + ARP + 交换机自学习 + HTTP。

2022 HTTP + TCP 慢开始

训练:

应用层和传输层联动。

2024 HTTP/1.0 RTT

训练:

非持续连接对象计数。

这些题最接近“会一道,就会一类”。

(Any Docs)


七十、第二梯队:选择题必须秒杀

DNS

  • 2010:递归;
  • 2016:迭代 + 缓存。

FTP

  • 2009:控制连接;
  • 2017:20/21 + 主动/被动。

邮件

  • 2012:SMTP → SMTP → POP3;
  • 2013:SMTP 功能;
  • 2015:POP3 使用 TCP;
  • 2018:SMTP ASCII。

HTTP

  • 2014:浏览 Web 可能涉及哪些协议;
  • 2015:HTTP 请求首部;
  • 2018:DNS 可用 UDP。

这些题应该做到:

看到题目 10~20 秒就能确定考点。

(Any Docs)


七十一、考试时如何判断一道应用层题属于哪类?

看到关键词直接分类。

出现:

www.xxx.com
根服务器
顶级服务器
本地域名服务器
缓存

立刻:

DNS。

检查:

递归 / 迭代 / 缓存 / RTT。


出现:

20
21
控制连接
数据连接

立刻:

FTP。


出现:

SMTP
POP3
MIME
ASCII
邮件服务器

立刻:

Email。


出现:

GET
POST
Host
Cookie
Connection

立刻:

HTTP 报文。


出现:

HTTP/1.0
HTTP/1.1
图片
对象
RTT
MSS

立刻:

HTTP 时延。


出现:

MAC
交换机
ARP
TTL
NAT
十六进制

不要以为走错章节:

这是 Web 跨层综合题。


七十二、本章真正需要建立的 6 个条件反射

最后把整个第 6 章压成六句话。

1

看到域名:

DNS:先想缓存,再想递归/迭代,再数查询次数。

2

看到 FTP:

控制 TCP 21 长期存在;数据另开连接,20 不是任何情况下都固定。

3

看到邮件:

发送 SMTP,接收 POP3/IMAP,传统 SMTP 原生处理 ASCII。

4

看到 HTTP:

HTTP 无状态,服务器默认 80,HTTP/1.1 默认持续连接。

5

看到 RTT:

先看计时起点,再拆 DNS → TCP → HTML → 引用对象。

6

看到“浏览网页综合题”:

DNS → ARP → TCP → HTTP,同时考虑交换机学习、路由转发和 NAT。


七十三、第 6 章复习优先级

如果现在是冲 408 分数,建议本章按下面的顺序掌握:

优先级内容要达到的程度
SHTTP RTT所有模式都能自己画时间线
SDNS 查询过程递归/迭代/缓存秒判
SWeb 跨层综合能从应用层一路分析到 MAC
AHTTP 报文GET/POST/Host/Connection/Cookie
AFTP控制/数据连接与端口
A电子邮件SMTP/POP3/IMAP/MIME
BC/S 与 P2P性质判断即可

本章不像物理层那样公式多,真正难的是:

同一个“访问网页”动作,把 408 四五个章节串起来。

因此复习时不要把 DNS、TCP、ARP、HTTP 当成彼此独立的知识点。最值得形成的完整链路是:

输入域名
   ↓
DNS 得到服务器 IP
   ↓
判断服务器是否同网段
   ↓
ARP 得到下一跳 MAC
   ↓
TCP 三次握手
   ↓
HTTP 请求 HTML
   ↓
解析 HTML
   ↓
请求图片等对象
   ↓
TCP 慢开始/拥塞控制影响传输

如果这条链能够在不看答案的情况下完整讲述,那么计算机网络第 6 章的绝大多数 408 题已经具备统一解法。站内真题尤其是 2020、2011、2021、2022、2024 五道,建议作为这一章的核心母题反复掌握。(Any Docs)

On this page

一、第 6 章到底在学什么?二、先背熟这一张表三、题型一:C/S 与 P2P 模型1. 核心知识C/SP2P四、真题:2019 网络应用模型五、模拟变式:P2P 是否一定更稳定?六、P2P 可能进一步怎样考?七、题型二:DNS——本章第一大重点八、DNS 层次结构一定要懂九、递归查询和迭代查询——超级高频递归查询迭代查询十、2010 真题:递归查询次数十一、DNS 查询次数统一解法第一步:圈出主语第二步:圈出方式递归迭代十二、2016 真题:DNS 最少/最多查询次数十三、模拟题:全部服务器都递归怎么办?十四、DNS 缓存题十五、DNS 到底 UDP 还是 TCP?普通查询特殊情况十六、2020 真题:DNS + TCP + HTTP 的 RTT 综合题最短情况建立 TCPHTTP 请求 + 收到网页最长情况十七、DNS + HTTP 时延题万能公式十八、题型三:FTP十九、FTP 两条连接控制连接数据连接二十、2009 真题二十一、2017 真题:FTP 端口陷阱主动模式被动模式二十二、FTP 选择题统一判断法二十三、题型四:电子邮件二十四、一封邮件真正怎么走?二十五、2012 真题:邮件协议流程二十六、2013 真题:SMTP 到底负责哪些方向?二十七、SMTP 的 ASCII 坑二十八、2018 真题二十九、2015 真题:POP3 的传输层三十、电子邮件最容易出的综合变式三十一、题型五:HTTP / WWW——全章最大重点三十二、HTTP 的核心性质三十三、HTTP 请求报文必须看懂第一行HostConnectionCookie三十四、2015 真题:HTTP 报文字段三十五、模拟题:POST + keep-alive + CookieGETPOST三十六、2018 真题:哪些应用能使用无连接传输?三十七、HTTP/1.0 与 HTTP/1.1非持续连接持续连接三十八、非流水线持续连接三十九、流水线方式四十、HTTP RTT 第一套万能公式1. 非持续 + 不并行四十一、2024 真题:非持续 HTTP/1.0四十二、持续 + 非流水线万能公式四十三、模拟题:1 HTML + 4 图片四十四、最重要陷阱:计时起点如果题目说如果题目说四十五、2011 真题:持续非流水线四十六、HTTP 大文件题:不能只数“请求次数”四十七、为什么不是简单的 3 RTT?四十八、2022 真题完整时间线第 1 个 RTT第 2 个 RTT第 3 个 RTT第 4 个 RTT四十九、慢开始文件传输通法五十、题型六:访问网页会使用哪些协议?五十一、“访问网页全过程”必须形成脑图五十二、2011 真题:本章最值得研究的综合题之一五十三、十六进制帧题怎么拆?五十四、为什么目的 MAC 是网关,不是 Web 服务器?五十五、ARP 在这里干什么?五十六、路由器转发到底修改什么?如果还存在 NAT五十七、2021 真题:真正的“浏览网页全过程”第 1 问五十八、为什么 DNS 使用 UDP?五十九、交换机自学习必须掌握六十、为什么 H2 会收到和自己无关的帧?六十一、以后碰到“主机访问网站综合题”的统一解题算法阶段 1:配置阶段 2:域名解析阶段 3:确定下一跳阶段 4:确定 MAC阶段 5:TCP阶段 6:HTTP阶段 7:交换与路由六十二、本章几个特别高频的“绝对化陷阱”错错错错错错六十三、本章端口题最好这样记六十四、HTTP RTT 题最终总结表非持续 + 串行持续 + 非流水线持续 + 流水线六十五、如果 DNS 也没完成六十六、再给出一道很可能出现的变式六十七、DNS 预测变式六十八、电子邮件预测变式六十九、把站内真题按“价值”重新分类第一梯队:必须完全吃透2020 DNS + HTTP RTT2011 Web 综合题2021 Web 综合题2022 HTTP + TCP 慢开始2024 HTTP/1.0 RTT七十、第二梯队:选择题必须秒杀DNSFTP邮件HTTP七十一、考试时如何判断一道应用层题属于哪类?出现:出现:出现:出现:出现:出现:七十二、本章真正需要建立的 6 个条件反射123456七十三、第 6 章复习优先级