考研学习
知识点讲义计算机网络

第 6 章 应用层

408 计算机网络第 6 章 应用层复习讲义,涵盖核心概念、重点考点与典型题型。

Last updated on

先建立这一章最重要的总体认识:

前五章主要解决“数据怎么送过去”,第六章解决“应用程序拿网络来干什么,以及应用程序之间按照什么规则通信”。

比如你打开浏览器访问:

http://www.abc.com/index.html

背后会依次牵涉:

DNS:www.abc.com 是哪个 IP?
     ↓
TCP:与 Web 服务器建立可靠连接
     ↓
HTTP:我要 /index.html
     ↓
服务器返回网页

如果是电子邮件:

SMTP:把邮件送出去
POP3 / IMAP:把邮件取回来

如果是 FTP:

TCP 21:传命令
TCP 20:主动模式下传文件

所以第六章并不是一堆孤立协议,而是各种具体网络应用的通信规则。

一、本章考研重要度

可以大致这样分:

内容重要度核心考法
C/S、P2P★★特点判断
DNS★★★★★服务器层次、递归/迭代、查询次数、RTT
FTP★★★★20/21 端口、控制/数据连接
电子邮件★★★★SMTP、POP3、IMAP、MIME
WWW/HTTP★★★★★HTTP 特点、报文、连接方式、RTT
HTTP+DNS+TCP 综合★★★★★综合时延题

尤其要掌握四条主线:

DNS:域名 → IP

FTP:控制连接 + 数据连接

邮件:SMTP 负责送,POP3/IMAP 负责取

HTTP:请求—响应 + TCP + RTT

二、6.1 网络应用模型

网络应用主要有两种组织方式:

  1. 客户/服务器模型 C/S
  2. 对等模型 P2P

2.1 C/S 模型

C/S:

Client / Server
客户      服务器

结构类似:

客户端A ─┐
客户端B ─┼──→ 服务器
客户端C ─┘

例如:

  • 浏览器 ↔ Web 服务器
  • FTP 客户端 ↔ FTP 服务器
  • DNS 客户端 ↔ DNS 服务器
  • 邮件客户端 ↔ 邮件服务器

核心过程

服务器:

启动
 ↓
监听
 ↓
等待客户请求
 ↓
处理请求
 ↓
返回结果
 ↓
继续监听

客户端则是:

需要服务
 ↓
主动联系服务器
 ↓
发送请求
 ↓
接收响应

2.1.1 谁必须知道谁的地址?

这是非常容易考的坑。

客户必须知道服务器地址

否则你不知道往哪里发请求。

例如浏览器要访问:

www.baidu.com

最终必须得到服务器 IP。

服务器不需要事先知道客户地址

服务器只需要:

监听某个熟知端口

客户连接过来之后,服务器自然能从收到的分组中知道客户的:

源 IP
源端口

所以:

“客户和服务器必须事先知道对方地址”

是错的。

2.2 C/S 的特点

优点

集中管理:

服务器
├─ 用户管理
├─ 数据管理
├─ 权限控制
└─ 服务提供

管理方便。

缺点

服务器容易成为瓶颈。

如果:

10个客户端
100个客户端
10000个客户端
1000000个客户端

全部访问一个服务器,那么服务器 CPU、内存、网络带宽都可能达到极限。

因此 C/S 的扩展能力受中心服务器限制。

2.3 P2P 模型

P2P:

Peer-to-Peer
对等方到对等方

没有严格固定:

谁是服务器
谁是客户端

例如:

A ↔ B
↕   ↕
C ↔ D

节点 A:

  • 下载 B 的资源时是客户端;
  • 给 C 提供资源时又是服务器。

所以:

一个 Peer 可以同时充当客户端和服务器。

2.4 为什么 P2P 可扩展性好?

C/S:

1000 个用户
      ↓
   Server

请求越来越多,服务器压力越来越大。

P2P:

Peer增加
 ↓
需求增加
但同时
 ↓
上传资源也增加

加入的人越多,理论上提供资源的人也越多。

因此系统容量能够随节点增加而增长。

2.5 C/S 和 P2P 对比

特点C/SP2P
中心服务器有通常没有
节点地位不平等大致平等
客户间直接通信通常不直接可以
管理集中、简单分散、复杂
可扩展性较差较好
单点故障可能明显相对较弱
安全管理较容易较困难

资料中的模拟题专门考过:

“P2P 相比 C/S 更加安全和稳定。”

这个说法错误。P2P 虽然去中心化、健壮性较好,但节点动态性强,安全和管理通常更困难。

三、6.2 DNS —— 本章第一个超级重点

DNS:

Domain Name System
域名系统

核心功能一句话:

把域名转换为 IP 地址。

例如:

www.cskaoyan.com
        ↓ DNS
113.105.xx.xx

3.1 为什么需要 DNS?

计算机真正通信依赖的是:

IP 地址

但人不容易记:

142.250.72.14

人更容易记:

www.google.com

所以 DNS 本质就是一套:

名字 → 地址

的分布式数据库。

3.2 DNS 基本属性【必背】

按本资料的 408 考试口径:

应用层协议:DNS
模型:C/S
传输层:UDP
服务器端口:53

即:

协议传输层端口
DNSUDP53

这张端口表在选择题里非常重要。

四、DNS 的层次域名空间

例如:

www.cskaoyan.com

从右往左:

com
 ↑
顶级域

cskaoyan
 ↑
二级域

www
 ↑
更低级域

注意:

级别越高越靠右。

可以画成:

                  .
                  │
           ┌──────┼──────┐
          com     cn     org
           │
       cskaoyan
           │
          www

4.1 顶级域名

资料划分为三类。

国家顶级域

例如:

.cn
.us
.jp

通用顶级域

例如:

.com
.net
.org
.edu
.gov

基础结构域

.arpa

主要用于:

IP 地址 → 域名

也就是反向解析。

五、DNS 服务器 —— 高频

这是 DNS 最重要的知识点之一。

一共有四种:

根域名服务器
     ↓
顶级域名服务器
     ↓
权限域名服务器

另外:
本地域名服务器

一定要搞清楚每个服务器“知道什么”。

5.1 根域名服务器

DNS 世界最高层。

它通常不知道:

www.abc.com 的最终 IP

但它知道:

.com 的服务器在哪里
.cn 的服务器在哪里
.org 的服务器在哪里

所以查询:

www.abc.com

根服务器通常会告诉你:

这个属于 .com,去问 .com 顶级域服务器。

5.2 顶级域名服务器

例如:

.com DNS

它管理 .com 下面的二级域。

当问:

www.abc.com

它可能回答:

abc.com 的权限 DNS 在这里,你去问它。

5.3 权限域名服务器

也叫:

授权域名服务器

这一级通常掌握最终答案。

例如:

dns.abc.com

知道:

www.abc.com → 1.2.3.4

因此它能够返回最终 IP。

5.4 本地域名服务器

这个特别重要。

你的电脑一般不会自己跑去直接问根服务器。

而是:

你的电脑
   ↓
本地 DNS
   ↓
根 DNS
   ↓
顶级 DNS
   ↓
权限 DNS

Windows 网络配置里的:

DNS 服务器

就是这里的“本地域名服务器地址”。

本地域名服务器可能来自:

  • ISP
  • 学校
  • 公司
  • 公共 DNS 服务

六、DNS 查询:递归 vs 迭代【★★★★★】

这是整个 DNS 最容易混乱,也是考得最多的地方。

先记一句:

递归:你帮我查到底。

迭代:我不知道答案,但我告诉你下一步问谁。

6.1 递归查询

假设:

A 问 B:
www.abc.com 是多少?

如果 B 不知道,B 不能简单说:

不知道。

而是 B 自己继续去问别人。

于是:

A
↓
B
↓
C
↓
D
↓
得到答案

然后:

D → C → B → A

逐层返回。

所以递归的核心是:

被询问者继续替查询者完成后续查询。

6.2 迭代查询

现在假设本地域名服务器问根服务器:

www.abc.com 是多少?

根服务器:

我不知道最终答案,
但是你应该去问 .com DNS。

本地 DNS 再问:

.com DNS

.com DNS:

去问 abc.com 权限服务器。

于是:

本地DNS → 根DNS
       ← .com DNS 地址

本地DNS → .com DNS
       ← abc.com 权限DNS地址

本地DNS → 权限DNS
       ← 最终IP

这就是迭代。

6.3 考研默认查询方式【必须记】

资料明确强调:

主机 → 本地域名服务器

采用:

递归查询

本地域名服务器 → 其他域名服务器

通常采用:

迭代查询

所以考试看到普通 Internet DNS 流程,可以先写:

主机
 │
 │ 递归
 ↓
本地DNS
 │
 │ 迭代
 ↓
根DNS
 ↓
顶级DNS
 ↓
权限DNS

这是最重要的图之一。

七、完整 DNS 查询过程【一定会】

假设主机要查询:

y.abc.com

且全部缓存未命中。

第一步:主机查本地 DNS

主机 → 本地DNS

询问:

y.abc.com 的IP?

这是:

递归查询。

第二步:本地 DNS 查根 DNS

本地DNS → 根DNS

根 DNS 看见:

.com

于是返回:

.com 顶级DNS地址

第三步:查询 .com 顶级 DNS

本地DNS → .com DNS

.com DNS 判断:

abc.com

归某权限服务器管理。

于是返回:

abc.com 权限DNS地址

第四步:查询权限 DNS

本地DNS → abc.com权限DNS

得到:

y.abc.com → IP地址

第五步:返回主机

权限DNS
   ↓
本地DNS
   ↓
主机

本地域名服务器同时将结果:

写入 DNS 高速缓存。

八、DNS 报文数量

资料给的典型完整解析过程:

主机 ↔ 本地DNS
本地DNS ↔ 根DNS
本地DNS ↔ 顶级DNS
本地DNS ↔ 权限DNS

共:

4 次查询
4 次响应

因此最多:

这里尤其容易漏掉:

主机 ↔ 本地DNS

这一组。

九、DNS 缓存【高频选择题】

为什么不能每一次访问网站都:

根 → 顶级 → 权限

重新查?

因为这样:

  • 时延高;
  • DNS 流量巨大;
  • 根 DNS 压力巨大。

因此使用:

DNS 高速缓存。

比如第一次:

www.abc.com → 1.2.3.4

查完后本地 DNS 保存。

第二个人再问:

www.abc.com?

直接:

缓存 → 1.2.3.4

根本不用访问根服务器。

模拟题也明确把“DNS 广泛使用高速缓存”作为正确说法。

9.1 TTL

缓存不能永久存在。

因为:

域名对应的 IP

可能发生变化。

因此 DNS 记录有:

TTL
Time To Live

TTL 到期:

缓存失效

需要重新查询。

9.2 一个经典陷阱

DNS 全瘫痪了,知道服务器 IP 地址还能通信吗?

当然可以。

因为 DNS 只负责:

域名 → IP

真正网络层通信靠:

IP 地址

只要你已经知道 IP,理论上并不需要 DNS。

十、DNS 查询次数题怎么做?

这类题不要硬背,画箭头。

例如所有 DNS 都采用递归查询:

主机
 ↓
本地DNS
 ↓
根DNS
 ↓
com DNS
 ↓
bbb.com DNS
 ↓
aaa.bbb.com DNS

如果题目问:

本地域名服务器自己发送了几次查询?

注意:

本地 DNS 只发给了:

根 DNS

后面全部是服务器代替它继续查询。

所以:

  • 缓存命中:0 次;
  • 未命中:1 次。

这就是资料模拟题考查的核心思想。

十一、6.3 FTP 文件传输协议【★★★★】

FTP:

File Transfer Protocol

核心作用:

在不同主机之间可靠传送文件。

属性:

应用层:FTP
模型:C/S
传输层:TCP

为什么用 TCP?

文件一般要求:

不能丢
不能错
不能乱

因此适合可靠传输。

十二、FTP 最大特点:两条 TCP 连接

这是 FTP 几乎必考的知识点。

FTP 不像 HTTP 一般只讨论一条 TCP 连接。

FTP 同时使用:

控制连接
数据连接

12.1 控制连接

服务器端:

TCP 21

负责:

  • 用户登录;
  • 用户名密码;
  • 切换目录;
  • 删除文件;
  • 请求下载;
  • 请求上传;
  • 中止传输。

例如:

USER
PASS
LIST
RETR
STOR

都走控制连接。

最重要:

控制连接整个 FTP 会话期间一直保持。

12.2 数据连接

负责真正的数据:

文件
目录列表

传输。

特点:

一次数据传输完成后,这条数据连接通常关闭。

因此:

控制连接:长期存在
数据连接:按需要建立,传完关闭

这一对区别必须背熟。

十三、FTP 主动模式 PORT【高频】

默认教材环境常重点讨论主动模式。

先建立:

客户端随机端口
      ↓
服务器 TCP 21

这是一条控制连接。

然后客户端告诉服务器:

我开了一个端口,你来连接我。

服务器:

服务器 TCP 20
        ↓
客户端指定端口

建立数据连接。

因此主动模式:

控制:
客户端临时端口 → 服务器21

数据:
服务器20 → 客户端临时端口

口诀:

21 控制,20 数据。

但更严格地说:

服务器 20 作为 FTP 主动模式数据连接的默认端口。

十四、FTP 被动模式 PASV

现实网络里还有 PASV。

因为客户端经常在 NAT、防火墙后面,服务器主动连接客户端可能失败。

所以 PASV 变成:

客户端 → 服务器21
发送 PASV

服务器:

我开放了端口 X。

然后:

客户端 → 服务器X

主动发起数据连接。

主动与被动的本质区别

不要被名字绕晕。

名字描述的是:

服务器在建立数据连接时是主动还是被动。

PORT

服务器主动连接客户端

因此是:

主动模式。

PASV

服务器等客户端来连接

因此是:

被动模式。

十五、FTP 为什么要分两条连接?

因为控制和数据可以相互独立。

例如正在传一个 10 GB 文件:

数据连接:疯狂传文件

与此同时用户仍可以:

控制连接:发送中止命令

因此控制信息不需要等文件传完。

资料把这种方式称为:

带外控制(Out-of-band)。

十六、FTP 是有状态协议

服务器必须记住:

你是谁
登录了吗
当前目录在哪里
当前传输模式是什么

例如:

cd /home/a

下一条:

get test.txt

服务器必须知道“当前目录”是什么。

所以 FTP:

有状态。

十七、FTP 高频陷阱

错误 1

FTP 控制连接传文件。

错。

控制连接 → 命令
数据连接 → 文件

错误 2

数据连接整个会话一直存在。

错。

通常:

一次数据传输
↓
建立
↓
传输
↓
关闭

错误 3

FTP 使用 UDP。

错。

FTP 基于 TCP。

错误 4

FTP 不允许用户指定文件类型和格式。

错。

资料明确指出 FTP 可以支持用户指定文件类型、格式等。模拟题也直接考了这一点。

十八、6.4 电子邮件系统【★★★★】

电子邮件的完整体系比想象中复杂。

它不是:

我的电脑 → 你的电脑

而是:

发件人
 ↓
用户代理 UA
 ↓
发送方邮件服务器
 ↓
接收方邮件服务器
 ↓
用户代理 UA
 ↓
收件人

十九、电子邮件三大组成部分

资料分为:

  1. 用户代理 UA
  2. 邮件服务器
  3. 邮件协议

19.1 用户代理 UA

User Agent。

简单说:

用户使用的邮件客户端。

例如:

  • Outlook
  • Foxmail

主要负责:

  • 写邮件;
  • 查看邮件;
  • 管理邮件。

19.2 邮件服务器

邮箱真正存储在:

邮件服务器。

例如你发给:

abc@example.com

邮件最终进入:

example.com 的邮件服务器

里面属于用户 abc 的邮箱。

二十、电子邮件中三个最重要的协议

SMTP
POP3
IMAP

一句话:

SMTP 管“发”,POP3/IMAP 管“收”。

20.1 SMTP

Simple Mail Transfer Protocol。

负责:

发送邮件。

两种地方都可能出现:

用户代理
   ↓ SMTP
发送方邮件服务器

以及:

发送方邮件服务器
   ↓ SMTP
接收方邮件服务器

因此邮件发送链可以记成:

用户A
 ↓ SMTP
邮件服务器A
 ↓ SMTP
邮件服务器B

20.2 POP3

Post Office Protocol Version 3。

用于:

邮件服务器
 ↓
用户

也就是:

取邮件。

20.3 SMTP 与 POP3 的“推 / 拉”

非常适合考试。

SMTP:

发送端主动把邮件送过去

叫:

Push,推。

POP3:

用户主动向服务器索取邮件

叫:

Pull,拉。

二十一、完整邮件发送过程【★★★★★】

假设:

A → B

1 A 写邮件

A 使用 UA:

写邮件
点击发送

2 UA → A 的邮件服务器

使用:

SMTP

邮件进入:

发送缓存队列

3 A 邮件服务器 → B 邮件服务器

A 的邮件服务器:

SMTP 客户

B 的邮件服务器:

SMTP 服务器

双方建立 TCP。

然后传送邮件。

4 B 邮件服务器保存邮件

进入:

B 的邮箱

5 B 查邮件

B 的 UA 使用:

POP3
或
IMAP

从服务器获取。

因此完整口诀:

发送:SMTP
服务器之间:SMTP
读取:POP3 / IMAP

真题里非常典型的一组就是:

SMTP → SMTP → POP3

配套真题资料直接考过这种协议流程。

二十二、SMTP【高频】

属性:

TCP
端口 25
C/S

因此:

协议TCP/UDP服务器端口
SMTPTCP25

22.1 SMTP 三阶段

SMTP 通信分成:

  1. 连接建立
  2. 邮件传输
  3. 连接释放

22.2 建立连接

发送方:

SMTP Client

向接收方:

TCP 25

建立 TCP。

服务器返回:

220 Service ready

客户端:

HELO ...

22.3 邮件发送命令

典型流程:

MAIL FROM:

表示:

发件人是谁。

然后:

RCPT TO:

表示:

收件人是谁。

然后:

DATA

表示:

接下来发送邮件正文。

为什么 RCPT 在 DATA 前?

假设邮件 500 MB。

如果你先把 500 MB 发完,然后服务器说:

没有这个用户

通信资源全部浪费。

所以先:

RCPT TO

验证收件人。

确认存在,再 DATA。

这是非常合理的协议设计思想。

22.4 邮件结束

正文结束标志:

<CRLF>.<CRLF>

最后:

QUIT

服务器:

221

释放连接。

二十三、SMTP 有什么局限?

原始 SMTP 只支持:

7 位 ASCII 文本。

于是出现问题:

中文?
图片?
音频?
PDF?
二进制附件?

无法直接处理。

因此出现 MIME。

二十四、MIME【重点理解】

MIME:

Multipurpose Internet Mail Extensions

多用途互联网邮件扩展。

它不是取代 SMTP。

而是:

原始文件
 ↓
MIME 编码
 ↓
ASCII形式
 ↓
SMTP
 ↓
网络
 ↓
MIME 解码
 ↓
原始文件

因此正确理解:

SMTP 负责传输。

MIME 负责把 SMTP 原本不能表示的数据转换成 SMTP 可以处理的形式。

资料明确指出 MIME 是建立在 SMTP 基础上的扩展,而非替换 SMTP。

二十五、POP3

POP3:

TCP
110端口

作用:

用户从邮件服务器读取邮件。

两种工作方式:

下载并删除

服务器
 ↓
客户端
 ↓
服务器删除

下载并保留

服务器
 ↓
客户端
同时
服务器保留

二十六、IMAP 和 POP3 的区别

IMAP 功能更强。

POP3 更像:

把邮件取回来

IMAP 更像:

远程管理服务器里的邮箱

IMAP 可以:

  • 服务器创建文件夹;
  • 移动邮件;
  • 搜索邮件;
  • 只下载邮件首部;
  • 只下载 MIME 邮件的一部分。

因此现代多设备邮件场景更适合这种:

邮件长期留服务器
各设备同步状态

的模式。

二十七、Web Mail 特别容易混

比如网页版邮箱。

浏览器和邮件网站之间:

HTTP

但:

邮件服务器A
     ↓
邮件服务器B

仍然主要使用:

SMTP

所以不能看到 Gmail 网页就认为:

Gmail 发邮件使用的都是 HTTP。

更准确:

浏览器 ↔ Web邮件服务器:HTTP
邮件服务器 ↔ 邮件服务器:SMTP

二十八、6.5 万维网 WWW【★★★★★】

WWW:

World Wide Web

它不是 Internet 本身。

关系:

Internet
├─ WWW
├─ Email
├─ FTP
├─ DNS
└─ 其他应用

所以:

WWW 是建立在 Internet 上的一种应用。

资料的类比很好:

Internet = 路
WWW      = 路上跑的一种车

二十九、WWW 三大核心技术

必须记:

URL
HTTP
HTML

分别负责:

URL  → 资源在哪里

HTTP → 怎么拿资源

HTML → 网页怎么描述

三十、URL

一般形式:

协议://主机:端口/路径

例如:

http://www.abc.com:80/a/index.html

拆开:

http
 ↑
协议

www.abc.com
 ↑
服务器

80
 ↑
端口

/a/index.html
 ↑
资源路径

HTTP 默认端口:

80

因此:

http://www.abc.com/index.html

其实默认访问服务器的 TCP 80 端口。

三十一、浏览器访问网站完整过程【★★★★★】

这是第六章最重要的综合流程之一。

假设输入:

http://www.abc.com/index.html

第一步:解析 URL

浏览器获得:

协议:http
域名:www.abc.com
资源:/index.html

第二步:DNS

因为浏览器不知道:

www.abc.com 的 IP

所以:

DNS 查询

得到:

www.abc.com → IP

第三步:建立 TCP

HTTP 使用 TCP。

浏览器:

客户端临时端口
      ↓
Web服务器80

三次握手。

第四步:HTTP GET

例如:

GET /index.html HTTP/1.1
Host: www.abc.com

第五步:服务器返回 HTTP Response

例如:

HTTP/1.1 200 OK

<html>
...
</html>

第六步:浏览器解析 HTML

假设 HTML 里面还有:

<img src="1.jpg">
<img src="2.jpg">

那么浏览器还必须继续请求:

1.jpg
2.jpg

所以:

下载一个网页 ≠ 只请求一次 HTTP。

一个网页往往包含多个对象。

三十二、HTTP 基本属性【必背】

HTTP:

应用层协议
C/S
TCP
服务器默认端口80
请求—响应模式

同时有两个非常重要的性质:

无连接
无状态

三十三、HTTP“无连接”是什么意思?

这里最容易误解。

HTTP 基于 TCP:

TCP 是面向连接的

但教材又说:

HTTP 是无连接的

并不矛盾。

因为:

HTTP 自己没有另外建立一种“HTTP 连接”。

HTTP 报文依赖下面已有的 TCP 连接进行传输。

所以可以理解:

HTTP层:没有自己的连接机制
TCP层:有连接

模拟题中:

“HTTP 本身有连接”

就是错误项。

三十四、HTTP“无状态”是什么意思?

服务器默认不记:

上一次你是谁
上一次访问了什么
购物车里有什么

每个 HTTP 请求在协议意义上可以独立处理。

比如:

第一次:
GET /a

第二次:
GET /a

服务器不因为:

“你昨天来过。”

就改变 HTTP 本身的基本处理逻辑。

三十五、那网站怎么记住登录状态?

使用:

Cookie + 后端数据库。

这是高频考点。

服务器生成:

12345

响应:

Set-Cookie: 12345

浏览器保存:

网站域名 + Cookie

35.2 第二次访问

浏览器请求:

Cookie: 12345

服务器拿:

12345

查询数据库:

12345 → 用户A

于是知道:

这是之前那个用户。

因此:

Cookie 并没有让 HTTP 本身变成有状态协议。

而是网站在 HTTP 之上实现了状态管理。

三十六、HTTP/1.0 与 HTTP/1.1【★★★★★】

资料重点讨论:

HTTP/1.0

默认:

非持久连接。

HTTP/1.1

默认:

持久连接。

这是选择题特别爱反着写的地方。

三十七、非持久连接

假设网页:

index.html
1.jpg
2.jpg
3.jpg

每一个对象:

都单独建立 TCP 连接。

即:

TCP连接1 → index.html → 关闭

TCP连接2 → 1.jpg → 关闭

TCP连接3 → 2.jpg → 关闭

TCP连接4 → 3.jpg → 关闭

显然开销很大。

三十八、一个对象为什么约需 2RTT?【★★★★★】

这是 HTTP 时延题最核心公式。

一个对象的过程:

第一个 RTT

TCP 建立连接:

SYN →
    ← SYN+ACK

经过约 1 RTT。

第三次握手 ACK 常可捎带 HTTP 请求。

第二个 RTT

HTTP Request →
             ← HTTP Response 开始到达

约 1 RTT。

因此忽略数据传输时间时:

若考虑对象长度为 ,链路速率为 :

资料也明确给出了“文档传输时间 + 2RTT”的结论。

三十九、非持久连接网页 RTT

假设:

1个HTML
N个引用对象

所有对象顺序请求。

共:

N+1 个对象

每个:

2RTT

所以忽略传输时间:

四十、HTTP/1.1 持久连接

持久连接:

TCP 不用每拿一个对象就关闭。

比如:

TCP连接
 ├─ 请求 HTML
 ├─ 请求 1.jpg
 ├─ 请求 2.jpg
 └─ 请求 3.jpg

全部复用。

这样大量减少 TCP 握手。

四十一、持久非流水线

虽然复用同一个 TCP,但:

必须等上一个响应回来,才能发送下一个请求。

例如:

请求1 →
       ← 响应1

请求2 →
       ← 响应2

请求3 →
       ← 响应3

所以每个额外对象通常还需要:

1RTT

RTT 公式

有:

1 个 HTML
N 个引用对象

建 TCP

请求 HTML

N 个对象

总共:

忽略传输时间。

资料里的典型模拟题

HTML 引用 4 张 JPEG:

N=4

采用 HTTP/1.1 非流水线持久连接。

因此:

这正是资料模拟题考查的模型。

四十二、持久流水线

客户端不用等前一个响应。

可以:

GET 1.jpg →
GET 2.jpg →
GET 3.jpg →
GET 4.jpg →

服务器连续:

← 1.jpg
← 2.jpg
← 3.jpg
← 4.jpg

因此若忽略传输时间和 TCP 拥塞窗口因素:

建 TCP

请求 HTML

一次性请求全部对象

于是:

无论引用对象有多少,理想情况下这些引用对象的请求交互只增加约 1 RTT。

四十三、三种 HTTP 模式放一起

假设:

1 HTML + N 个小对象

忽略传输时延。

非持久、串行

持久、非流水线

持久、流水线

这组三个结果非常值得背。

四十四、为什么有时候不能直接套 3RTT?

这是本资料第 6.6 特别强调的易错点。

因为 HTTP 下还有:

TCP。

如果数据非常大,例如多个 MSS,那么 TCP 的:

  • 拥塞窗口 cwnd;
  • 慢开始;
  • ACK;
  • 接收窗口;

都会影响传输时间。

例如初始:

cwnd = 1 MSS

即使服务器有 100 MSS 数据,也不能第一轮直接全发。

因此:

应用层分析得到的 RTT 是理想化交互开销,真正综合题还要结合第 5 章 TCP。

这也是为什么第 5 章和第 6 章特别容易联合出题。资料第 6.6 专门提醒了这一点。

四十五、HTTP 请求报文【高频】

基本结构:

请求行
首部行
空行
实体主体

例如:

GET /bbs/index.htm HTTP/1.1
Host: www.cskaoyan.com
Connection: Keep-Alive
User-Agent: Mozilla/5.0
Accept-Language: cn

45.1 请求行

GET /bbs/index.htm HTTP/1.1

三部分:

方法
资源
HTTP版本

四十六、HTTP 常见方法

资料列举:

方法功能
GET获取资源
HEAD获取首部
POST向服务器提交信息
PUT在指定位置存资源
DELETE删除资源
CONNECT代理相关

考试最重要的是:

GET
POST
HEAD

46.1 GET

例如:

GET /index.html HTTP/1.1

意思:

给我 /index.html。

46.2 HEAD

跟 GET 很像,但:

只要响应首部,不要实体内容。

常用于:

  • 检查资源;
  • 看修改时间;
  • 看长度;
  • 判断是否存在。

46.3 POST

例如:

POST /login HTTP/1.1

常用于:

  • 提交表单;
  • 上传数据;
  • 给服务器发送信息。

所以模拟题看到:

POST /index.htm HTTP/1.1

可以判断:

浏览器希望向服务器提交信息。

四十七、Host 字段

例如:

Host: www.test.edu.cn

它表示:

目标服务器主机。

不是:

客户端主机。

这是很常见的陷阱。

四十八、Connection

Connection: keep-alive

表示:

希望保持 TCP 连接。

而:

Connection: close

表示:

响应后关闭连接。

四十九、HTTP 响应报文

结构:

状态行
首部行
空行
实体主体

例如:

HTTP/1.1 404 Not Found

状态行包含:

HTTP版本
状态码
解释

五十、常见状态码

本资料重点举了:

202 Accepted
400 Bad Request
404 Not Found

408 做题不必把所有 HTTP 状态码全部背下来,但这些常见含义应认识。

五十一、代理服务器 Web Cache

代理服务器可以缓存:

请求
响应

例如:

用户A → Proxy → Internet → Web服务器

第一次:

Proxy 没有
→ 去服务器获取
→ 保存缓存

第二次:

用户B → Proxy

如果请求相同:

Proxy直接返回

不用再出互联网。

好处:

  • 减少外网流量;
  • 减少时延;
  • 减轻源服务器压力。

和 DNS 缓存思想其实很像:

空间换时间

五十二、整个第六章最重要的端口表【必须背】

资料最后专门汇总了这张表。

协议TCP/UDP熟知端口
FTP 数据TCP20
FTP 控制TCP21
TELNETTCP23
SMTPTCP25
DNSUDP53
TFTPUDP69
HTTPTCP80
POP3TCP110
SNMPUDP161

最需要背:

20 FTP数据
21 FTP控制
25 SMTP
53 DNS
80 HTTP
110 POP3

可以记成:

FTP 二十、二一;邮件二五;DNS 五三;网页八十;收邮件一一零。

五十三、服务器端口与客户端端口

这个概念贯穿整章。

服务器:

HTTP → 80
FTP  → 21
SMTP → 25

使用:

熟知端口。

客户端不是也用 80。

例如浏览器可能:

192.168.1.10:49152
        ↓
93.184.216.34:80

这里:

49152 = 客户端临时端口
80    = Web服务器熟知端口

所以错误说法:

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

错。

只有:

HTTP 服务器的默认监听端口是 80。

五十四、把第 4、5、6 章串起来:访问网页完整过程【★★★★★】

这是非常重要的综合框架。

假设:

电脑刚开机

访问:

http://www.abc.com/index.html

第 1 阶段:DHCP

主机还不知道:

IP
掩码
网关
DNS

所以:

DHCP

获取配置。

第 2 阶段:DNS

现在知道 DNS 地址。

浏览器:

www.abc.com

需要解析:

域名 → IP

于是 DNS。

第 3 阶段:ARP

假如 DNS / Web 服务器不在本地网络。

主机真正发送以太网帧时需要:

默认网关 MAC

于是:

ARP

得到:

网关IP → 网关MAC

第 4 阶段:TCP

得到 Web 服务器 IP:

浏览器临时端口
      ↓
服务器80

TCP 三次握手。

第 5 阶段:HTTP

发送:

GET /index.html HTTP/1.1
Host: www.abc.com

服务器响应。

第 6 阶段:加载引用资源

解析 HTML:

CSS
JS
图片
字体

继续发送 HTTP 请求。

第 7 阶段:TCP 释放

不再复用连接时:

四次挥手。

所以完整链路可以记为:

DHCP
 ↓
DNS
 ↓
ARP
 ↓
TCP三次握手
 ↓
HTTP请求/响应
 ↓
TCP四次挥手

当然是否每一步实际发生,要看:

  • DHCP 租约是否已有;
  • DNS 是否命中缓存;
  • ARP 是否命中缓存;
  • TCP 是否已有持久连接。

这恰好也是综合题最喜欢设置变化的地方。

五十五、DNS + HTTP 的 RTT 综合题

这类真题资料里已经出现过。

核心方法只有一句:

把每次必须等待响应之后才能继续的网络交互画成时间线。

例如无缓存:

DNS查询
 ↓
根
 ↓
顶级
 ↓
权限
 ↓
获得IP
 ↓
TCP连接
 ↓
HTTP

如果每次网络往返为一个 RTT,那么:

DNS 若经历 k 次往返
      +
TCP 建连 1 RTT
      +
HTTP 请求响应 1 RTT

因此:

关键在:

DNS 到底用了几次 RTT?

由:

  • 缓存;
  • 递归/迭代;
  • DNS 服务器所在位置;

决定。

五十六、第六章常见判断陷阱总整理

考试前把下面这些过一遍非常有效。

DNS

错误 DNS 负责数据传输 正确 DNS 负责名字解析

错误 DNS 通常使用 TCP 正确 按本资料 408 常规查询使用 UDP 53

错误 根 DNS 保存全部互联网主机地址 正确 根 DNS 主要告诉你顶级 DNS 在哪

错误 权限服务器不知道就一定“查询失败” 正确 DNS 可根据层级/委派继续定位

错误 DNS 挂了知道 IP 也不能访问 正确 知道 IP 仍能进行 IP 通信

FTP

错误 FTP 使用一条 TCP 正确 控制连接 + 数据连接

错误 20 端口用于控制 正确 21 控制,主动模式 20 数据

错误 控制连接传完一个文件就关闭 正确 控制连接贯穿会话

错误 数据连接一直保持 正确 一次数据传输后通常关闭

邮件

错误 SMTP 用来读取邮件 正确 SMTP 发送

错误 POP3 用来把邮件服务器 A 送到 B 正确 SMTP 服务器间发送

错误 MIME 取代 SMTP 正确 MIME 扩展 SMTP 可表示的数据类型

口诀:

SMTP推
POP3拉

HTTP

错误 HTTP 是有状态的 正确 无状态

错误 HTTP/1.1 默认非持久 正确 默认持久

错误 Host 是客户端主机 正确 Host 是目标服务器

错误 一个网页只有一个 HTTP 请求 正确 一个 HTML 可引用多个资源,每个资源都需要请求

错误 HTTP 客户端也使用 80 正确 客户端通常使用临时端口

五十七、最后建立一张“第六章大脑地图”

可以直接把下面这张作为复习框架:

                    第6章 应用层
                         │
       ┌─────────────────┼──────────────────┐
       │                 │                  │
    应用模型            DNS                FTP
       │                 │                  │
   C/S、P2P          域名→IP           文件传输
                         │                  │
                    UDP 53             TCP
                         │              ├─21 控制
                ┌────────┼───────┐      └─20 数据(主动)
                │        │       │
               根       顶级    权限
                ↑
              本地DNS
                │
         递归 + 迭代 + 缓存

                         │
            ┌────────────┴─────────────┐
            │                          │
          Email                       WWW
            │                          │
       ┌────┼────┐                URL HTTP HTML
       │    │    │                     │
     SMTP POP3 IMAP                   HTTP
      25   110                        TCP80
       │                              │
      发送                           请求响应
       │                         ┌─────┴─────┐
      MIME                       无状态    无连接
                                 │
                               Cookie
                                 │
                   HTTP/1.0 非持久
                   HTTP/1.1 持久
                     ├─非流水线
                     └─流水线

五十八、这一章复习优先级

如果以 408 应试效率排序,建议你优先掌握:

第一梯队:必须做到“看到题立即会做”

  1. DNS 四种服务器。
  2. DNS 递归与迭代。
  3. DNS 缓存与查询次数。
  4. HTTP 非持久/持久的 RTT 计算。
  5. HTTP 请求、响应报文。
  6. 网页访问完整过程:DNS → TCP → HTTP。

第二梯队:必须牢固记忆

  1. FTP 20/21 与两条连接。
  2. SMTP/POP3/IMAP 分工。
  3. SMTP 25、POP3 110。
  4. MIME。
  5. Cookie 与 HTTP 无状态。

第三梯队:理解即可

  1. C/S 与 P2P。
  2. URL/HTML。
  3. Web Proxy。
  4. FTP PORT/PASV 的细节。

你学完第 1~6 章以后,真正应该形成的已经不是六章独立知识,而是一条完整的网络通信链:

应用产生数据
    ↓
DNS找到服务器
    ↓
TCP/UDP确定进程通信方式
    ↓
IP负责跨网络路由
    ↓
ARP解决下一跳MAC
    ↓
数据链路层发送帧
    ↓
物理层发送信号

第 6 章正好是整本计算机网络最后把前五章重新串起来的一章。尤其 DNS+ARP+TCP+HTTP 的网页访问综合过程,建议作为全书的总复习主线反复画几遍。

On this page

一、本章考研重要度二、6.1 网络应用模型2.1 C/S 模型核心过程2.1.1 谁必须知道谁的地址?客户必须知道服务器地址服务器不需要事先知道客户地址2.2 C/S 的特点优点缺点2.3 P2P 模型2.4 为什么 P2P 可扩展性好?2.5 C/S 和 P2P 对比三、6.2 DNS —— 本章第一个超级重点3.1 为什么需要 DNS?3.2 DNS 基本属性【必背】四、DNS 的层次域名空间4.1 顶级域名国家顶级域通用顶级域基础结构域五、DNS 服务器 —— 高频5.1 根域名服务器5.2 顶级域名服务器5.3 权限域名服务器5.4 本地域名服务器六、DNS 查询:递归 vs 迭代【★★★★★】6.1 递归查询6.2 迭代查询6.3 考研默认查询方式【必须记】主机 → 本地域名服务器本地域名服务器 → 其他域名服务器七、完整 DNS 查询过程【一定会】第一步:主机查本地 DNS第二步:本地 DNS 查根 DNS第三步:查询 .com 顶级 DNS第四步:查询权限 DNS第五步:返回主机八、DNS 报文数量九、DNS 缓存【高频选择题】9.1 TTL9.2 一个经典陷阱十、DNS 查询次数题怎么做?十一、6.3 FTP 文件传输协议【★★★★】十二、FTP 最大特点:两条 TCP 连接12.1 控制连接12.2 数据连接十三、FTP 主动模式 PORT【高频】十四、FTP 被动模式 PASV主动与被动的本质区别PORTPASV十五、FTP 为什么要分两条连接?十六、FTP 是有状态协议十七、FTP 高频陷阱错误 1错误 2错误 3错误 4十八、6.4 电子邮件系统【★★★★】十九、电子邮件三大组成部分19.1 用户代理 UA19.2 邮件服务器二十、电子邮件中三个最重要的协议20.1 SMTP20.2 POP320.3 SMTP 与 POP3 的“推 / 拉”二十一、完整邮件发送过程【★★★★★】1 A 写邮件2 UA → A 的邮件服务器3 A 邮件服务器 → B 邮件服务器4 B 邮件服务器保存邮件5 B 查邮件二十二、SMTP【高频】22.1 SMTP 三阶段22.2 建立连接22.3 邮件发送命令为什么 RCPT 在 DATA 前?22.4 邮件结束二十三、SMTP 有什么局限?二十四、MIME【重点理解】二十五、POP3下载并删除下载并保留二十六、IMAP 和 POP3 的区别二十七、Web Mail 特别容易混二十八、6.5 万维网 WWW【★★★★★】二十九、WWW 三大核心技术三十、URL三十一、浏览器访问网站完整过程【★★★★★】第一步:解析 URL第二步:DNS第三步:建立 TCP第四步:HTTP GET第五步:服务器返回 HTTP Response第六步:浏览器解析 HTML三十二、HTTP 基本属性【必背】三十三、HTTP“无连接”是什么意思?三十四、HTTP“无状态”是什么意思?三十五、那网站怎么记住登录状态?35.1 Cookie 第一次访问35.2 第二次访问三十六、HTTP/1.0 与 HTTP/1.1【★★★★★】HTTP/1.0HTTP/1.1三十七、非持久连接三十八、一个对象为什么约需 2RTT?【★★★★★】第一个 RTT第二个 RTT三十九、非持久连接网页 RTT四十、HTTP/1.1 持久连接四十一、持久非流水线RTT 公式建 TCP请求 HTMLN 个对象资料里的典型模拟题四十二、持久流水线建 TCP请求 HTML一次性请求全部对象四十三、三种 HTTP 模式放一起非持久、串行持久、非流水线持久、流水线四十四、为什么有时候不能直接套 3RTT?四十五、HTTP 请求报文【高频】45.1 请求行四十六、HTTP 常见方法46.1 GET46.2 HEAD46.3 POST四十七、Host 字段四十八、Connection四十九、HTTP 响应报文五十、常见状态码五十一、代理服务器 Web Cache五十二、整个第六章最重要的端口表【必须背】五十三、服务器端口与客户端端口五十四、把第 4、5、6 章串起来:访问网页完整过程【★★★★★】第 1 阶段:DHCP第 2 阶段:DNS第 3 阶段:ARP第 4 阶段:TCP第 5 阶段:HTTP第 6 阶段:加载引用资源第 7 阶段:TCP 释放五十五、DNS + HTTP 的 RTT 综合题五十六、第六章常见判断陷阱总整理DNSFTP邮件HTTP五十七、最后建立一张“第六章大脑地图”五十八、这一章复习优先级