HTTP与HTTPS总结
HTTP和HTTPS协议的区别与工作原理
问题
总结 HTTP 和 HTTPS 协议的特点、区别及工作原理。
解答
HTTP 协议
HTTP(HyperText Transfer Protocol)是超文本传输协议,基于 TCP/IP 协议,默认端口 80。
特点:
- 无状态:每次请求独立,服务器不保留连接信息
- 明文传输:数据未加密,可被窃听
- 简单快速:请求方法简单,通信速度快
请求方法:
| 方法 | 描述 |
|---|---|
| GET | 获取资源 |
| POST | 提交数据 |
| PUT | 更新资源 |
| DELETE | 删除资源 |
| HEAD | 获取响应头 |
| OPTIONS | 查询支持的方法 |
HTTPS 协议
HTTPS = HTTP + TLS/SSL,默认端口 443。
TLS 握手过程:
客户端 服务器
| |
| 1. ClientHello (支持的加密套件、随机数) |
| -------------------------------------> |
| |
| 2. ServerHello (选定加密套件、随机数) |
| + 服务器证书 |
| <------------------------------------- |
| |
| 3. 验证证书,生成预主密钥 |
| 用服务器公钥加密发送 |
| -------------------------------------> |
| |
| 4. 双方用三个随机数生成会话密钥 |
| 后续通信使用对称加密 |
| <====================================> |
加密方式:
// 对称加密:加解密使用同一密钥,速度快
// 常用算法:AES、DES
// 非对称加密:公钥加密,私钥解密,速度慢
// 常用算法:RSA、ECC
// HTTPS 结合两者:
// 1. 非对称加密交换密钥
// 2. 对称加密传输数据
HTTP 与 HTTPS 对比
| 特性 | HTTP | HTTPS |
|---|---|---|
| 端口 | 80 | 443 |
| 安全性 | 明文传输 | 加密传输 |
| 证书 | 不需要 | 需要 CA 证书 |
| 速度 | 快 | 稍慢(握手开销) |
| SEO | 权重低 | 权重高 |
HTTP 版本演进
HTTP/1.0
- 每次请求新建 TCP 连接
HTTP/1.1
- 持久连接(Connection: keep-alive)
- 管道化请求
- 缓存控制增强
HTTP/2
- 二进制分帧
- 多路复用(一个连接并行多个请求)
- 头部压缩(HPACK)
- 服务器推送
HTTP/3
- 基于 QUIC(UDP)
- 更快的连接建立
- 解决队头阻塞
常见状态码
// 2xx 成功
200 OK // 请求成功
201 Created // 资源创建成功
204 No Content // 成功但无返回内容
// 3xx 重定向
301 Moved Permanently // 永久重定向
302 Found // 临时重定向
304 Not Modified // 使用缓存
// 4xx 客户端错误
400 Bad Request // 请求语法错误
401 Unauthorized // 未认证
403 Forbidden // 禁止访问
404 Not Found // 资源不存在
// 5xx 服务器错误
500 Internal Server Error // 服务器内部错误
502 Bad Gateway // 网关错误
503 Service Unavailable // 服务不可用
关键点
- HTTPS 通过 TLS/SSL 在 HTTP 基础上增加加密层,防止数据被窃听和篡改
- TLS 握手使用非对称加密交换密钥,后续通信使用对称加密保证效率
- HTTP/2 引入多路复用解决 HTTP/1.1 的队头阻塞问题
- HTTPS 需要 CA 证书验证服务器身份,防止中间人攻击
- 现代网站应优先使用 HTTPS,浏览器对 HTTP 站点会标记为”不安全”
目录