WD
Classnote Docs课程课件
03

HTTP协议详解

学习目标:

  • 能区分 CS 架构与 BS 架构,并说明各自适用场景
  • 理解 HTTP 协议的定位、作用与基本工作流程
  • 掌握 URL、请求报文、响应报文、状态码等核心概念
  • 能区分 GET、POST 等常见请求方法的使用场景
  • 理解 HTTP 的无状态特性,以及 Cookie / Session 的基本作用

本章重点:

  • HTTP 在网络体系中的位置与请求-响应模型
  • URL 的组成、请求报文和响应报文结构
  • 常见状态码与请求方法的实际含义
  • 长连接、无状态、Cookie / Session 的基础理解
01 / Section

1. CS架构(Client/Server)

CS架构即客户端/服务器架构,是一种典型的两层架构模式。

diagram
客户端
(Client)
  • 安装专用软件
  • QQ客户端
  • 游戏客户端
⇄ ⇄ ⇄
网络
服务器
(Server)
  • 业务逻辑
  • 数据管理
  • 响应请求
┌─────────────┐         ┌─────────────┐
│   客户端     │  ⇄ ⇄ ⇄  │   服务器    │
│  (Client)   │  网络    │  (Server)   │
├─────────────┤         ├─────────────┤
│• 安装专用软件│         │• 业务逻辑    │
│• QQ客户端   │         │• 数据管理    │
│• 游戏客户端 │         │• 响应请求    │
└─────────────┘         └─────────────┘

1.1 典型应用场景

  • 📱 即时通讯软件(QQ、微信PC版)
  • 🎮 网络游戏(英雄联盟、王者荣耀)
  • 🗄️ 数据库管理工具(Navicat、SQL Developer)

1.2 优缺点

优点 缺点
响应速度快,体验流畅 需要安装专用客户端
功能丰富,可离线使用部分功能 跨平台需要单独开发
安全性较高 升级维护成本高
02 / Section

2. BS架构(Browser/Server)

BS架构即浏览器/服务器架构,是当今Web应用的主流架构。

diagram
浏览器
(Browser)
  • 无需安装
  • Chrome
  • Edge
HTTP
⇄ ⇄ ⇄
协议
服务器
(Server)
  • 业务逻辑
  • 返回HTML
  • CSS/JS
┌─────────────┐    HTTP    ┌─────────────┐
│   浏览器     │  ⇄ ⇄ ⇄    │   服务器    │
│ (Browser)   │  协议     │  (Server)   │
├─────────────┤           ├─────────────┤
│• 无需安装   │           │• 业务逻辑    │
│• Chrome    │           │• 返回HTML   │
│• Edge      │           │• CSS/JS     │
└─────────────┘           └─────────────┘

2.1 典型应用场景

  • 🌐 各类网站(新闻、博客、电商)
  • 📱 Web应用(在线文档、网盘)
  • 🔧 管理系统(OA、ERP、CRM)

2.2 优缺点

优点 缺点
无需安装,随时随地访问 依赖网络,离线功能有限
跨平台,一处开发处处运行 浏览器兼容性需要考虑
升级维护简单(服务器端) 性能受浏览器限制
03 / Section

3. CS vs BS 对比

对比维度 CS架构 BS架构
客户端 专用软件 浏览器
安装 需要下载安装 无需安装
更新 客户端需单独更新 服务器更新即可
跨平台 需要单独开发 天然跨平台
性能 响应快,体验好 受浏览器和网络影响
维护成本 高(多端维护) 低(服务端维护)

💡 发展趋势:现代应用趋向于混合架构:核心功能用CS(如微信PC版),轻量功能用BS(如微信小程序)

04 / Section

4. HTTP协议概述

4.1 什么是HTTP?

HTTP(HyperText Transfer Protocol,超文本传输协议)是用于传输超媒体文档(如HTML)的应用层协议。

4.2 HTTP发展历史

text
HTTP/0.9 (1991) → HTTP/1.0 (1996) → HTTP/1.1 (1997) → HTTP/2 (2015) → HTTP/3 (2022)
     ↑                                         ↑
   只有GET                                当前主流版本

4.3 HTTP在TCP/IP中的位置

diagram
第4层 - 应用层 (Application Layer)
HTTP
(网页)
FTP
(文件传输)
SMTP
(邮件)
DNS
(域名解析)
第3层 - 传输层 (Transport Layer)
TCP / UDP
端口号(80/443)
第2层 - 网络层 (Network Layer)
IP 协议
IP地址
第1层 - 数据链路层 (Data Link Layer)
以太网 / WiFi / 物理网络
MAC地址
┌────────────────────────────────────────────────────────────┐
│  第4层 - 应用层 (Application Layer)                         │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐       │
│  │   HTTP   │ │   FTP    │ │  SMTP    │ │  DNS     │       │
│  │  (网页)   │ │ (文件传输)│ │  (邮件)   │ │ (域名解析)│       │
│  └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘       │
├───────┼────────────┼────────────┼────────────┼──────────────┤
│  第3层 - 传输层 (Transport Layer)                           │
│       │            │            │            │              │
│       └────────────┴──────┬─────┴────────────┘              │
│                           ↓                                │
│                    ┌──────────────┐                        │
│                    │ TCP / UDP    │  ◄── 端口号(80/443)    │
│                    └──────┬───────┘                        │
├───────────────────────────┼────────────────────────────────┤
│  第2层 - 网络层 (Network Layer)                             │
│                           ↓                                │
│                    ┌──────────────┐                        │
│                    │ IP 协议       │  ◄── IP地址           │
│                    └──────┬───────┘                        │
├───────────────────────────┼────────────────────────────────┤
│  第1层 - 数据链路层 (Data Link Layer)                        │
│                           ↓                                │
│            ┌──────────────────────────┐                    │
│            │ 以太网 / WiFi / 物理网络  │  ◄── MAC地址       │
│            └──────────────────────────┘                    │
└────────────────────────────────────────────────────────────┘

各层职责

层级 名称 核心功能 典型协议/设备
4 应用层 为用户应用程序提供服务 HTTP、FTP、SMTP、DNS
3 传输层 端到端连接,可靠传输 TCP、UDP
2 网络层 寻址和路由选择 IP、路由器
1 数据链路层 物理传输,帧封装 以太网、交换机
05 / Section

5. HTTP工作流程

完整请求-响应流程

diagram
1️⃣ 客户端与服务器建立TCP连接(三次握手) 2️⃣ 客户端发送HTTP请求报文 3️⃣ 服务器处理请求,生成响应 4️⃣ 服务器返回HTTP响应报文 5️⃣ 客户端接收响应,渲染页面 6️⃣ 关闭TCP连接(四次挥手)
┌─────────────────────────────────────────────────────────┐
│  1️⃣  客户端与服务器建立TCP连接(三次握手)                │
│  2️⃣  客户端发送HTTP请求报文                              │
│  3️⃣  服务器处理请求,生成响应                            │
│  4️⃣  服务器返回HTTP响应报文                              │
│  5️⃣  客户端接收响应,渲染页面                            │
│  6️⃣  关闭TCP连接(四次挥手)                             │
└─────────────────────────────────────────────────────────┘

请求-响应时序图

diagram
客户端服务器
建立连接
请求报文
(Request)
响应报文
(Response)
关闭连接
    客户端                              服务器
      │                                    │
      │---------- 1. 建立连接 ------------>| 
      │                                    │
      │---------- 2. 请求报文 ------------>│
      │         (Request)                  │
      │                                    │
      │<--------- 3. 响应报文 ------------│
      │                    (Response)      │
      │                                    │
      │---------- 4. 关闭连接 ------------>│
      │                                    │
06 / Section

6. URL详解

6.1 URL的组成部分

diagram
https://www.example.com:8080/path/to/page?name=value#section
协议https
域名www.example.com
端口8080
路径/path/to/page
查询参数name=value
锚点section
https://www.example.com:8080/path/to/page?name=value#section
└───┘   └─────────────┘ └──┘ └────────────┘ └────────┘ └───┘
  │           │          │        │           │        │
  │           │          │        │           │        └─ 锚点
  │           │          │        │           └─ 查询参数
  │           │          │        └─ 路径
  │           │          └─ 端口
  │           └─ 域名
  └─ 协议

6.2 各部分的含义

部分 说明 示例
协议 访问资源使用的协议 http、https、ftp
域名 服务器的地址 www.baidu.com
端口 服务监听的端口号 80(HTTP默认)、443(HTTPS默认)
路径 服务器上的资源位置 /index.html、/api/users
查询参数 传递给服务器的额外数据 ?page=1&size=10
07 / Section

7. HTTP请求

7.1 请求报文结构

http
▶ 请求行(Request Line)
GET /index.html HTTP/1.1

▶ 请求头(Request Headers)
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
Cookie: sessionId=xxx

▶ 空行

▶ 请求体(Request Body)【可选】
username=admin&password=123

7.2 HTTP请求方法

GET vs POST 对比

特性 GET POST
用途 获取数据 提交数据
数据位置 URL参数中(?key=value) 请求体中
数据大小 有限制(URL长度限制) 无限制
安全性 参数暴露在URL中 相对安全
缓存 可被缓存 默认不被缓存
幂等性 幂等(多次请求结果相同) 非幂等

常见请求方法

方法 用途
GET 获取资源
POST 提交数据,创建资源
PUT 更新资源(全量)
DELETE 删除资源
PATCH 更新资源(部分)
HEAD 获取响应头

7.3 常见请求头

请求头 说明
Host 指定服务器域名和端口
User-Agent 客户端信息(浏览器类型、版本)
Accept 客户端可接受的响应类型
Content-Type 请求体的媒体类型
Cookie 携带的Cookie数据
08 / Section

8. HTTP响应

8.1 响应报文结构

http
▶ 状态行(Status Line)
HTTP/1.1 200 OK

▶ 响应头(Response Headers)
Content-Type: text/html
Content-Length: 1234
Set-Cookie: sessionId=xxx
Cache-Control: no-cache

▶ 空行

▶ 响应体(Response Body)
<html>...HTML内容...</html>

8.2 HTTP状态码

状态码分类

范围 类别 含义
2xx 成功 请求被成功处理
3xx 重定向 需要进一步操作
4xx 客户端错误 请求有语法错误或无法完成
5xx 服务器错误 服务器处理请求时出错

常见状态码

状态码 名称 说明
200 OK 请求成功
201 Created 资源创建成功
301 Moved Permanently 永久重定向
302 Found 临时重定向
304 Not Modified 使用缓存
400 Bad Request 请求格式错误
403 Forbidden 禁止访问
404 Not Found 资源不存在
500 Internal Server Error 服务器内部错误
502 Bad Gateway 网关错误
503 Service Unavailable 服务不可用

8.3 常见响应头

响应头 说明
Content-Type 响应体的媒体类型
Content-Length 响应体的字节长度
Set-Cookie 服务器设置的Cookie
Location 重定向的目标URL
Cache-Control 缓存控制策略
09 / Section

9. HTTP连接管理

9.1 短连接 vs 长连接

HTTP/1.0 短连接

text
建立连接 → 请求-响应 → 关闭连接

建立连接 → 请求-响应 → 关闭连接

建立连接 → 请求-响应 → 关闭连接

每个请求都要新建TCP连接,效率低。

HTTP/1.1 长连接(Keep-Alive)

text
建立连接 → 请求1-响应1 → 请求2-响应2 → ... → 请求N-响应N → 关闭连接

一个TCP连接可发送多个请求,效率高。

9.2 无状态特性

HTTP是无状态协议,服务器不会保存客户端的状态信息。每次请求都是独立的,服务器无法识别请求是否来自同一个客户端。

9.3 Cookie和Session

由于HTTP是无状态协议,CookieSession技术用于在多次请求之间保持用户状态。

简要介绍

特性 Cookie Session
存储位置 客户端浏览器 服务器端
典型用途 记住登录状态、用户偏好 保存用户会话数据
安全性 较低(可被篡改) 较高

Cookie工作流程

diagram
第1次访问 服务器设置Cookie 后续访问浏览器 > < 浏览器 请求 生成Cookie 请求+Cookie< 响应(Set-Cookie)
第1次访问          服务器设置Cookie            后续访问
浏览器 ─────────>  │  ┌─────────────┐    <───────── 浏览器
       请求        │  │ 生成Cookie  │         请求+Cookie
                   │  └─────────────┘
                   │         │
                   │<────────┘
                   │  响应(Set-Cookie)

📚 注意:Cookie和Session的详细原理、安全机制以及实际应用将在后续会话技术专题课程中深入讲解。本节仅作概念性介绍。

本章小结

本章核心概念:HTTP 是 Web 世界中最基础的应用层协议,浏览器与服务器之间的大多数交互,都是基于“请求—响应”模型完成的。

你现在应该掌握

  • 能区分 CS 架构与 BS 架构,并说出各自特点
  • 能拆解一个 URL,并说明各组成部分的作用
  • 能读懂 HTTP 请求报文和响应报文的基本结构
  • 能识别常见请求方法与状态码的业务含义
  • 能理解 HTTP 无状态的特点,以及 Cookie / Session 为什么会出现
10 / Section

总结

知识点 核心内容
CS架构 客户端/服务器,需安装专用软件
BS架构 浏览器/服务器,无需安装
HTTP协议 应用层协议,基于请求-响应模式
URL组成 协议+域名+端口+路径+参数+锚点
请求方法 GET获取,POST提交,PUT更新,DELETE删除
状态码 2xx成功,3xx重定向,4xx客户端错误,5xx服务器错误
连接管理 HTTP/1.1长连接,无状态协议,Cookie维持会话