第 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 网络应用模型
网络应用主要有两种组织方式:
- 客户/服务器模型 C/S
- 对等模型 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/S | P2P |
|---|---|---|
| 中心服务器 | 有 | 通常没有 |
| 节点地位 | 不平等 | 大致平等 |
| 客户间直接通信 | 通常不直接 | 可以 |
| 管理 | 集中、简单 | 分散、复杂 |
| 可扩展性 | 较差 | 较好 |
| 单点故障 | 可能明显 | 相对较弱 |
| 安全管理 | 较容易 | 较困难 |
资料中的模拟题专门考过:
“P2P 相比 C/S 更加安全和稳定。”
这个说法错误。P2P 虽然去中心化、健壮性较好,但节点动态性强,安全和管理通常更困难。
三、6.2 DNS —— 本章第一个超级重点
DNS:
Domain Name System
域名系统核心功能一句话:
把域名转换为 IP 地址。
例如:
www.cskaoyan.com
↓ DNS
113.105.xx.xx3.1 为什么需要 DNS?
计算机真正通信依赖的是:
IP 地址但人不容易记:
142.250.72.14人更容易记:
www.google.com所以 DNS 本质就是一套:
名字 → 地址的分布式数据库。
3.2 DNS 基本属性【必背】
按本资料的 408 考试口径:
应用层协议:DNS
模型:C/S
传输层:UDP
服务器端口:53即:
| 协议 | 传输层 | 端口 |
|---|---|---|
| DNS | UDP | 53 |
这张端口表在选择题里非常重要。
四、DNS 的层次域名空间
例如:
www.cskaoyan.com从右往左:
com
↑
顶级域
cskaoyan
↑
二级域
www
↑
更低级域注意:
级别越高越靠右。
可以画成:
.
│
┌──────┼──────┐
com cn org
│
cskaoyan
│
www4.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
↓
权限 DNSWindows 网络配置里的:
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 LiveTTL 到期:
缓存失效需要重新查询。
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
↓
收件人十九、电子邮件三大组成部分
资料分为:
- 用户代理 UA
- 邮件服务器
- 邮件协议
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
邮件服务器B20.2 POP3
Post Office Protocol Version 3。
用于:
邮件服务器
↓
用户也就是:
取邮件。
20.3 SMTP 与 POP3 的“推 / 拉”
非常适合考试。
SMTP:
发送端主动把邮件送过去叫:
Push,推。
POP3:
用户主动向服务器索取邮件叫:
Pull,拉。
二十一、完整邮件发送过程【★★★★★】
假设:
A → B1 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 | 服务器端口 |
|---|---|---|
| SMTP | TCP | 25 |
22.1 SMTP 三阶段
SMTP 通信分成:
- 连接建立
- 邮件传输
- 连接释放
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 + 后端数据库。
这是高频考点。
35.1 Cookie 第一次访问
服务器生成:
12345响应:
Set-Cookie: 12345浏览器保存:
网站域名 + Cookie35.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所以每个额外对象通常还需要:
1RTTRTT 公式
有:
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
HEAD46.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 Found408 做题不必把所有 HTTP 状态码全部背下来,但这些常见含义应认识。
五十一、代理服务器 Web Cache
代理服务器可以缓存:
请求
响应例如:
用户A → Proxy → Internet → Web服务器第一次:
Proxy 没有
→ 去服务器获取
→ 保存缓存第二次:
用户B → Proxy如果请求相同:
Proxy直接返回不用再出互联网。
好处:
- 减少外网流量;
- 减少时延;
- 减轻源服务器压力。
和 DNS 缓存思想其实很像:
空间换时间五十二、整个第六章最重要的端口表【必须背】
资料最后专门汇总了这张表。
| 协议 | TCP/UDP | 熟知端口 |
|---|---|---|
| FTP 数据 | TCP | 20 |
| FTP 控制 | TCP | 21 |
| TELNET | TCP | 23 |
| SMTP | TCP | 25 |
| DNS | UDP | 53 |
| TFTP | UDP | 69 |
| HTTP | TCP | 80 |
| POP3 | TCP | 110 |
| SNMP | UDP | 161 |
最需要背:
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:
浏览器临时端口
↓
服务器80TCP 三次握手。
第 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 应试效率排序,建议你优先掌握:
第一梯队:必须做到“看到题立即会做”
- DNS 四种服务器。
- DNS 递归与迭代。
- DNS 缓存与查询次数。
- HTTP 非持久/持久的 RTT 计算。
- HTTP 请求、响应报文。
- 网页访问完整过程:DNS → TCP → HTTP。
第二梯队:必须牢固记忆
- FTP 20/21 与两条连接。
- SMTP/POP3/IMAP 分工。
- SMTP 25、POP3 110。
- MIME。
- Cookie 与 HTTP 无状态。
第三梯队:理解即可
- C/S 与 P2P。
- URL/HTML。
- Web Proxy。
- FTP PORT/PASV 的细节。
你学完第 1~6 章以后,真正应该形成的已经不是六章独立知识,而是一条完整的网络通信链:
应用产生数据
↓
DNS找到服务器
↓
TCP/UDP确定进程通信方式
↓
IP负责跨网络路由
↓
ARP解决下一跳MAC
↓
数据链路层发送帧
↓
物理层发送信号第 6 章正好是整本计算机网络最后把前五章重新串起来的一章。尤其 DNS+ARP+TCP+HTTP 的网页访问综合过程,建议作为全书的总复习主线反复画几遍。