基本概念
-
HTTP: 超文本传输协议,是互联网应用最广泛的网络协议,是基于TCP的一个客户端和服务端请求和应答标准,用于从万维网服务器传输超文本到本地浏览器,是浏览器更加高效、网络传输减少。
-
HTTPS:就是HTTP的安全版本,在HTTP的基础上加入SSL层【传输层】作为信息安全通道,确保数据的安全传输和网络的真实性。
HTTP连接
实质上是TCP协议的长连接和短连接。
短连接: HTTP1.0 默认使用短连接,即每次请求都要重新发起连接,数据交换结束即关闭连接。
长连接: 从 HTTP1.1 起默认使用长连接,连接建立后不断开,然后再进行数据发送和接收,客户端和服务器之间用于传输数据的 TCP 连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。
HTTP各个版本的区别
HTTP1.0
- 默认使用短连接。
- 使用 If-Modified-Since,Expires来做缓存判断的标准。
- 存在带宽浪费现象,比如客户端仅需要对象的一部分,而服务端则将整个对象送来。
HTTP1.1
- 默认使用长连接。
- 引入更多的缓存判断标准:Etag、If-None-Match等。
- 允许请求资源的某个部分。
- 新增了24个状态码。
HTTP2.0
- 允许多路复用,做到同一个连接并发处理多个请求。
- 支持二进制编码。
- 将相同的首部进行压缩,不重复传输。
- 流量控制,对不同的流的流量进行精确控制。
- 支持服务器端推送(CSS和JS一起发送),不仅只是客户端发起请求,服务端可以自己发送一些数据。
HTTP3.0
- QUIC (Quick UDP Internet Connections)是基于UDP协议的。
- 解决了 TCP 的队头阻塞问题(某一个流的数据有丢包,则同样会阻塞在它之后传输的流数据传输)。而 http3.0 中不同的流之间真正的实现相互独立传输,互不干扰。
- 在切换网络时的依旧保持连接。
HTTP和HTTPS的区别
HTTP明文传输数据,不经过加密;HTTPS协议通过SSL增加了加密传输和身份认证的特性,比HTTP安全性高。
详细区别:
- HTTP明文传输不安全,HTTPS通过加密传输和身份认证更安全
- HTTP的端口号一般为80,HTTPS的端口号一般为443
- HTTP明文传输数据,HTTPS加密传输数据
- HTTP是无状态的,SSL是有状态的
- HTTPS需要CA证书
HTTPS的工作原理
- 客户端使用HTTPS的url访问服务器,建立SSL链接。
- 服务器接收到请求后,返回包含公钥的证书。
- 客户端和服务器协商SSL连接的加密等级。
- 客户端浏览器通过加密等级建立会话密钥,通过公钥加密会话密钥并发送给服务器。
- 服务器通过自己的私钥揭秘出会话密钥,与客户端之间建立通信。
HTTPS的优缺点
优点:
- HTTPS的身份认证特性可以保证数据发送到正确的客户端和服务器
- HTTPS比HTTP更安全,防止数据在传输过程中被窃取改变,保证了数据的完整性
- HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但大幅增加了攻击成本。
- HTTPS加密的网站在谷歌搜索排名更高
缺点:
- HTTPS的握手阶段比较费时,会使页面加载时间延长50%
- HTTPS缓存不如HTTP高效,会增加数据开销。
- SSL需要的CA证书费用较高
- SSL证书需要绑定IP,不能在同一个IP上绑定多个域名,ipv4资源无法支持这种消耗