一、基础知识
1. WWW 基本概念
(1)WWW (万维网 World Wide Web),简称 Web。采用客户端 / 服务器 (C/S)架构
- Web 客户端:浏览器,用来访问 Web 服务器资源
- Web 服务器:存放网页资源,对外提供访问服务
(2)Web 服务器:大量互相连接的超文本系统,资源使用URL(统一资源标识符)唯一标识。
(3)URL:全局统一资源标识符,用户通过点击 URL,借助 HTTP 获取服务器资源。
2. HTTP 协议
(1)定义:超文本传输协议,应用层协议,互联网最常用网络协议,基于 TCP。服务器默认端口:80 端口。
(2)作用:浏览器客户端与 Web 服务器之间传输超文本 HTML 文档。
(3)架构:C/S 客户端服务器模型。
- 服务端程序:httpd、Nginx
- 客户端程序:Chrome、Firefox、Safari;命令行工具 wget、curl
(4)传输流程:客户端发起请求 → 服务器监听 80 端口 → 使用 HTTP 完成通信交互。
(5)HTML:超文本标记语言,用来编写 Web 页面文档。
3. HTTPS 协议
HTTPS = HTTP + SSL/TLS 安全套接层,在 HTTP 基础上增加加密、身份认证,构建安全 HTTP 通道。 三大安全保障:数据机密性、数据完整性、身份认证
- 数据机密性 使用对称加密算法加密原始数据,保证传输内容不会被窃听。
- 数据完整性 对原始数据计算生成特征码,传输时一并发送;接收方校验特征码,确认数据传输过程没有被篡改。私钥保存在服务端,公钥对外分发。
- 身份认证 依靠 CA 证书颁发机构。网站向 CA 申请证书;用户访问网站时拿到证书,验证证书合法性,确认访问的站点真实可靠,防止伪装钓鱼网站。
4. HTTP与HTTPS简单对比
| 层级 | 应用层 | HTTP+SSL/TLS 安全层 |
| 默认端口 | 80 | 443 |
| 安全性 | 明文传输,不安全 | 加密传输,防窃听、防篡改、身份校验 |
| 证书 | 不需要 CA 证书 | 需要 CA 数字证书 |
补充:
- Web 通信底层依托 TCP;HTTP 只是应用层通信规则。
- URL 定位网络资源,HTTP 负责把资源从服务器传给浏览器。
- HTTPS 对称加密做数据加密;非对称加密用来协商密钥、证书身份校验。
二、HTTP协议
1. 工作流程

上图展示HTTP一次完整的通信交互过程,浏览器是客户端,Web 服务器是服务端,共 4 个步骤:
(1)建立 TCP 连接
浏览器先和服务器完成 TCP 三次握手,建立 TCP 传输通道。HTTP 是应用层协议,依赖 TCP 传输。
(2)浏览器发送 HTTP 请求报文
浏览器组装 HTTP 请求报文,里面携带URL(要访问的资源地址)以及请求正文,通过已经建立好的 TCP 连接发给服务器。
请求报文包含:请求方法、URL、请求头、请求正文。
(3)服务器返回 HTTP 响应报文
服务器收到请求,处理访问资源,组装HTTP 响应报文(状态码、响应头、响应正文,正文一般就是 HTML 网页数据),回传给浏览器。浏览器拿到响应正文,渲染显示网页。
(4)断开 TCP 连接
HTTP/1.0 默认短连接,数据交互完毕之后,双方断开 TCP 连接,释放网络资源。
2. 报文格式
(1)请求报文:从客户向服务器发送请求报文,图(a)
1)请求行(第一行):方法 URL HTTP版本,空格分隔,末尾CRLF
– 方法:GET、POST、PUT、DELETE等;GET 一般不带请求体,POST 常用实体主体传数据
– URL:请求访问的资源路径
– HTTP 版本:HTTP/1.0、HTTP/1.1、HTTP/2
2)首部行(请求头):字段名: 值,每行结尾CRLF,可以有多组;存放浏览器信息、Cookie、内容类型等
3)空行(单独 CRLF):标志请求头结束,必不可少,用来分隔头部和实体主体
4)实体主体 (请求体):POST 请求才常用;GET 请求实体主体通常为空。
示例:
GET /index.html HTTP/1.1\\r\\n
Host: 127.0.0.1\\r\\n
User‑Agent: browser\\r\\n
\\r\\n
(2)响应报文:从服务器到客户的回答,图(b)
1)状态行(第一行):版本 状态码 短语,空格分隔,末尾 CRLF
– 版本:HTTP/1.1
– 状态码:3 位数字,代表结果;200 成功、404 找不到资源、500 服务器错误
– 短语:状态码文字说明,如 OK、Not Found
2)首部行(响应头):字段名: 值,多行;返回服务器信息、数据类型、Cookie 等
3)空行(CRLF):响应头结束标记
4)实体主体 (响应体):返回真正数据,HTML 网页、图片数据;部分响应可以没有主体(例如 304 重定向)
示例:
HTTP/1.1 200 OK\\r\\n
Content‑Type: text/html\\r\\n
\\r\\n
<html>hello</html>

由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。
补充:
CRLF(\\r\\n)回车换行是 HTTP 报文的分隔符,空行(单独的 CRLF)是头部结束的标志,没有这个空行服务器解析报文会出错。
HTTP 是面向文本,全部 ASCII 字符串,没有固定报文长度。
GET:请求体一般为空;POST 使用实体主体提交表单数据。
请求报文没有状态码;响应报文没有请求方法、URL,不要混淆。
实体主体不是必选:GET 请求、部分状态码响应(如 204)可以没有实体主体。

3. 抓包测试

Request Headers(343B)
GET / HTTP/1.1
Host: httpbin.org
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Request Headers(343B)
HTTP/1.1 200 OK
Date: Wed, 02 Sep 2026 07:24:33 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 9593
Connection: keep-alive
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Connection:
(1)keep-alive:长连接:HTTP通信结束,保持一定时间的连接再断开
(2)close:短连接:HTTP通信结束,立马断开连接


