什么是HTTP?
Hyper Text Transfer Protocal,译为超文本传输协议,它是一个基于请求与响应、无状态的、应用层的协议。互联网上应用最广泛的一种网络协议,所有的WWW文件传输都必须遵守这个协议,设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
什么是HTTPS?
HTTPS是一种安全的 HTTP协议,它用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
SSL协议:译为安全套接层协议,1994年Netscape公司开发的安全协议,广泛应用于基于万维网的各种网络应用(但不限于万维网应用)。SSL是作用在端系统应用层的 HTTP和运输层之间,在TCP之上建立起一个安全通道,为通过TCP传输的应用层数据提供安全保障。TLS协议:译为传输层安全协议,1995年,Netscape将SSL转交给互联网工程任务组(IETF),希望能够将其标准化。IETF在SSL 3.0的基础上设计了TLS协议,为所有基于TCP的网络应用提供安全数据传输服务。
HTTP协议的发展历程
| 版本 | 年份 | 特性 |
|---|---|---|
| 0.9 | 1991 | 只有一个请求行,没有请求头和请求体;服务器没有响应头,只有响应体;返回内容以ASCII字符流,因为都是HTML格式的文件。 |
| 1.0 | 1996 | 新增请求头、请求体;支持携带压缩类型、编码格式、内容类型、状态码、浏览器缓存、userAgent等。 |
| 1.1 | 1997 | 持久连接;新增host、cookie请求头字段;引入Chunk transfre机制,支持动态内容生成,到目前为止始终存在TCP慢启动、TCP连接共享带宽却无法区分重要连接、TCP的队头阻塞 |
| 2.0 | 2015 | 通过引入在HTTP和传输层个间新增二进制分层帧对请求和响应数据分帧编号,进而实现多路复用;设置请求优先级;头部压缩;服务器推送。 |
| 3.0 | 2018 | 基于UDP的QUIC协议被视为第三代HTTP协议,它在解决HTTP 2的TCP 对头阻塞和 多个RTT问题的同时实现了类似TCP的流量控制、TLS加密、多路复用、快速握手等功能。 |
SSL 实现的基本流程
- 协商加密算法,浏览器A向服务器B提供一些可选的加密算法,B从中选定自己支持的算法,并告知A。
- 服务器鉴别,服务器B向浏览器A发送一份数字证书,A使用证书的颁发机构CA的公开发布的公钥验证证书的合法性。
- 会话密钥的计算,由浏览器A随机生成一个秘密数,用服务器B的公钥进行加密后发送给B。双方根据协商的算法产生一个共享的会话密钥。
- 加密数据的传输,双方使用会话密钥进行加密和解密他们之间传送的数据,并验证数据的完整性。
HTTPS 特性
- 双向的身份验证
- 数据传输加密
- 保护数据完整性
- 防止重放攻击