第一次看到 2015(40) 那道 HTTP 请求报文题,我盯着 Connection: close 想:这不明明是「保持连接」嘛,怎么选项说它「使用持续连接」是错的?
后来才懂:Connection: close 恰恰是主动声明「这次说完就断开」 ,是非持续连接的写法。持续连接写的是 Connection: keep-alive(HTTP/1.1 默认就保持,通常省略)。这一个字段,就是考试爱挖的坑。
这篇把 HTTP 的报文、状态码、以及「持续 vs 非持续」这条影响性能的主线讲透,并直接用近年真题练手。
〇、先花两分钟:HTTP 是「顾客点单、厨房出菜」
HTTP(超文本传输协议)是浏览器和 Web 服务器之间的「对话语言」:浏览器发请求报文 (我要哪个页面),服务器回响应报文(页面内容 + 状态)。
关键特征:
-
应用层协议 ,基于 TCP,默认端口 80(HTTPS 是 443);
-
无状态:服务器不记得你上一次请求过什么(所以才需要 Cookie 来「记仇」);
-
一个页面往往由多个对象组成(HTML + 图片 + 脚本),怎么传这些对象,决定了快慢。
一句话:HTTP = 浏览器点单、服务器出菜,无状态、靠 TCP 传输。
图示:客户端发
GET /index.html HTTP/1.1,服务器回200 OK+ 页面;下方对比非持续(每对象新建 TCP)与持续(复用同一 TCP)连接
一、HTTP 报文结构
请求报文:
GET /index.html HTTP/1.1 ← 请求行:方法 路径 版本
Host: www.test.edu.cn ← 首部行(多个)
Connection: close
Cookie: 123456
← 空行
(实体主体,GET 通常为空)
常见方法:GET(获取)、POST(提交)、HEAD(只取首部)。
响应报文:
HTTP/1.1 200 OK ← 状态行:版本 状态码 短语
Content-Type: text/html
← 空行
(实体主体:页面内容)
二、状态码(必背)
| 类别 | 含义 | 常见 |
|---|---|---|
| 1xx | 信息性(继续) | 100 |
| 2xx | 成功 | 200 OK |
| 3xx | 重定向 | 301 永久移动、302 临时 |
| 4xx | 客户端错误 | 404 Not Found、403 禁止 |
| 5xx | 服务器错误 | 500 内部错误 |
记法:2 成功、3 跳转、4 你错了、5 它崩了。
三、持续连接 vs 非持续连接(性能主线)
一个 Web 页常含多个对象(HTML + 好几张图)。怎么传这些对象,是 HTTP 性能的核心:
-
非持续连接(HTTP/1.0 默认) :每取一个对象,就新建一个 TCP 连接,传完就关。N 个对象 = N 次 TCP 握手(每次约 2 RTT:握手 1 RTT + 传 1 RTT)。开销巨大。
-
持续连接(HTTP/1.1 默认) :一个 TCP 连接传完所有对象再关。建连一次,后面对象连续传,开销小得多。
⚠️ 易错 :Connection: close = 非持续(传完即断);keep-alive 或省略 = 持续。看到 close 别当成「保持」。
四、Cookie:给「无状态」补记忆
HTTP 本身无状态,但服务器想记住你是谁(登录态、购物车)。做法:
-
服务器首次响应时带
Set-Cookie首部,把一小段身份标识发给浏览器; -
浏览器存下,之后每个请求都带
Cookie首部回传; -
服务器据此识别你。
所以 Cookie: 123456 出现在请求报文里,就说明浏览器之前访问过该站点(2015(40) 的考点)。
五、真题拆解 1:访问 Web 用不到的协议(2014(40),答案 D)
使用浏览器访问某大学 Web 网站主页时,不可能使用到的协议是?
访问网站会用到:
-
PPP:若通过拨号/点对点链路接入(链路层封装);
-
ARP:浏览器所在主机要发 IP 包,需 ARP 解析同网段网关 MAC;
-
UDP:DNS 解析域名默认走 UDP;
-
SMTP :这是发电子邮件的协议,浏览网页用不到。
答案:D(SMTP)。
六、真题拆解 2:Connection: close 的含义(2015(40),答案 C)
浏览器请求报文含
GET /index.html HTTP/1.1、Host: ...、Connection: close、Cookie: 123456。下列叙述错误的是?
-
A「请求浏览 index.html」✓ 对;
-
B「在 <www.test.edu.cn> 上」✓ 对(Host 首部);
-
C「请求使用持续连接」✗ 错 ------
Connection: close表示非持续,传完即断; -
D「曾经浏览过该站」✓ 对(有 Cookie)。
答案:C(错误叙述)。
七、真题拆解 3:非持续连接的对象开销(2024(40),答案 D)
浏览器不支持并行 TCP,使用非持久 HTTP/1.0 请求 1 个 web 页 + 同站 7 个小图像。从建立 TCP 连接起,到接收完所有内容,至少需多少个 RTT?
非持续:每个对象(1 页 + 7 图 = 8 个对象)都新建一个 TCP 连接,每个对象约 2 RTT(握手 1 RTT + 传 1 RTT)。
8 对象 × 2 RTT = 16 RTT。
答案:D(16)。
八、真题拆解 4:持久连接耗时(2022(40),答案 B)
HTTP/1.1(持久连接)请求 news408.html(1 MSS)引用 1 幅图像(3 MSS),RTT=10ms,已解析域名。从建立 TCP 起到收完至少多久?
持久连接只建一次 TCP(约 1 RTT),之后 html 与图像在同一连接上依次传,合计约 4 RTT = 40ms(建立连接 + 取 html + 取图像,含请求与确认开销)。
答案:B(40ms)。对比:若用非持续,会远超此值(见上题逻辑)。
九、17 年真题考在哪
| 年份(题号) | 考法 | 答案 |
|---|---|---|
| 2014(40) | 访问 Web 用不到的协议 | D(SMTP) |
| 2015(40) | 请求报文各首部含义(Connection/Cookie) | C(非持续) |
| 2022(40) | HTTP/1.1 持久连接取多对象耗时 | B(40ms) |
| 2024(40) | 非持久 HTTP/1.0 多对象 RTT 数 | D(16) |
命题规律 :①Connection: close 是非持续还是持续,年年考变体;②持续 vs 非持续的对象传输 RTT 计算是高频大题(2022、2024);③「用到/用不到哪些协议」考协议栈全局观(2014)。
十、易错点清单
| 易错点 | 正确说法 |
|---|---|
| Connection: close 是持续连接 | 错,是非持续(传完即断) |
| HTTP/1.0 默认持续连接 | 错,HTTP/1.0 默认非持续;1.1 才默认持续 |
| 非持续连接只握手一次 | 错,每个对象都新建 TCP,N 对象 = N 次握手 |
| HTTP 是有状态的 | 错,无状态,靠 Cookie 补记忆 |
| 404 是服务器错误 | 错,404 是客户端错(找不到资源),5xx 才是服务器 |
| 浏览网页会用到 SMTP | 错,SMTP 是发邮件,与浏览无关 |
| Cookie 存在服务器 | 错,Cookie 存在浏览器,每次请求带回 |
速查表(文末收藏版)
HTTP:应用层,基于 TCP,端口 80(HTTPS 443),无状态
请求报文:请求行(GET/POST 路径 版本) + 首部 + 空行 + 实体
响应报文:状态行(版本 状态码 短语) + 首部 + 空行 + 实体
状态码:2成功 3重定向 4你错(404) 5它崩(500)
Cookie:服务器 Set-Cookie → 浏览器存 → 之后请求带 Cookie(补记忆)
持续连接(HTTP/1.1默认):一个 TCP 传所有对象
非持续(HTTP/1.0) :每对象新建 TCP,N 对象≈2N RTT
Connection: close = 非持续;keep-alive/省略 = 持续
真题:2014(40) SMTP不用;2015(40) close=非持续;2022(40) 40ms;2024(40) 16 RTT
本文依据 :谢希仁《计算机网络(第 8 版)》第 6 章 6.3;真题年份题号来自 zhenti_all.json(2009--2025 计网 no 33--40)。
图示:客户端发