版本
http 0.9
http 1.0
- MIME type: 内容格式扩充
- 增加请求头、响应头的概念, 以及协议版本号、状态码、缓存、内容编码等
- 新增 POST、DELETE、PUT、HEAD 请求方式
http 1.1
- 管线化(并行请求)
- 长连接
- 缓存
- 断点传输
http2
- 多路复用: 可以在单个连接上同时处理多个请求和响应, 解决了队头阻塞问题, 提高了并发性能
- 二进制分帧: http2 将传输信息分割成更小的消息和帧, 并做了二进制编码, 二进制格式解析更高效, 减少了解析复杂文本格式的开销
- 头部压缩: http2 使用 HPACK 算法对请求和响应头进行压缩, 减少了传输数据大小
- 服务端推送: 支持服务端主动向客户端推送资源, 不需要客户端显示请求, 可以减少客户端请求数量
HTTPS
HTTPS 是超文本传输安全协议, 基于HTTP协议, 使用 TLS/SSL 协议加密数据
TLS 握手过程
- 客户端发出请求
- 支持的协议版本, 比如 TLS 1.2
- 客户端生成的随机数
- 支持的加密方法, 比如 RSA 公钥加密
- 支持的压缩方法
- 服务端响应
- 确认使用的加密通信协议版本
- 服务端生成的随机数, 稍后用于生成 对话密钥
- 确认加密方法
- 服务器证书
- 客户端回应
- 一个随机数, 用服务器公钥加密
- 编码改变通知, 随后的信息使用协商好的加密方法和密钥发送
- 握手结束通知
三个随机数能增加解密难度, 一个伪随机可能完全不随机, 可是是三个伪随机就十分接近随机了
- 服务端的最后回应
服务端收到客户端的第三个随机数之后, 计算生成本次会话所用的 会话密钥
- 编码改变通知
- 服务器握手结束通知
随后客户端和服务器进入加密通信