HTTP和HTTPS协议

146 阅读3分钟

什么是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.91991只有一个请求行,没有请求头和请求体;服务器没有响应头,只有响应体;返回内容以ASCII字符流,因为都是HTML格式的文件。
1.01996新增请求头、请求体;支持携带压缩类型、编码格式、内容类型、状态码、浏览器缓存、userAgent等。
1.11997持久连接;新增host、cookie请求头字段;引入Chunk transfre机制,支持动态内容生成,到目前为止始终存在TCP慢启动、TCP连接共享带宽却无法区分重要连接、TCP的队头阻塞
2.02015通过引入在HTTP和传输层个间新增二进制分层帧对请求和响应数据分帧编号,进而实现多路复用;设置请求优先级;头部压缩;服务器推送。
3.02018基于UDP的QUIC协议被视为第三代HTTP协议,它在解决HTTP 2的TCP 对头阻塞和 多个RTT问题的同时实现了类似TCP的流量控制、TLS加密、多路复用、快速握手等功能。

SSL 实现的基本流程

WechatIMG58的副本.jpeg

  1. 协商加密算法,浏览器A向服务器B提供一些可选的加密算法,B从中选定自己支持的算法,并告知A。
  2. 服务器鉴别,服务器B向浏览器A发送一份数字证书,A使用证书的颁发机构CA的公开发布的公钥验证证书的合法性。
  3. 会话密钥的计算,由浏览器A随机生成一个秘密数,用服务器B的公钥进行加密后发送给B。双方根据协商的算法产生一个共享的会话密钥。
  4. 加密数据的传输,双方使用会话密钥进行加密和解密他们之间传送的数据,并验证数据的完整性。

HTTPS 特性

  • 双向的身份验证
  • 数据传输加密
  • 保护数据完整性
  • 防止重放攻击

HTTPS请求方法

E9C9221F-99C6-4D2B-9BA5-E3F398F6405E.png