http协议

怎么知道网站用的 http 协议版本?

F12-> network ->右击 Tab,勾选 Protocal

HTTP 和 HTTPS 的区别

s

HTTP: 超文本传输协议

  1. 端口 :80
  2. 明文传输,没有数据加密,不安全
  3. 不需要证书

HTTPS: 超文本传输安全协议

  1. 端口: 443
  2. SSL/TLS 加密传输协议
  3. https 需要 ca 证书,一般没有免费证书,需要一定的费用

HTTPS 的机密

HTTPS 的加密使用了对称加密和非对称加密的组合

HTTPS 加密的工作流程

  1. 建立连接
  • 客户端向服务器发送连接请求。
  • 服务器响应,并返回其 SSL 证书,其中包含了公钥。
  1. 验证证书
  • 客户端收到服务器的证书后,会验证证书的有效性。这包括检查证书是否由受信任的证书颁发机构(CA)签发,以及是否在有效期内。
  • 如果证书有效,则客户端生成一个随机的对称密钥,并使用服务器的公钥对其进行加密,然后将其发送回服务器。
  1. 建立安全连接
  • 服务器接收到客户端发送的加密后的对称密钥,并使用私钥解密。
  • 之后,客户端和服务器都拥有了相同的对称密钥,用于加密和解密通信内容。
  1. 安全通信
  • 客户端和服务器使用这个对称密钥来加密和解密其之间的通信数据。
  • 通信数据在传输过程中保持加密状态,从而防止被窃听或篡改。

关于加密过程中使用的加密算法:

  • 对称加密:对称加密使用相同的密钥进行加密和解密。在 HTTPS 连接建立过程中,对称加密算法用于加密实际的数据传输,因为对称加密算法通常速度较快,适合大量数据的加密和解密。

  • 非对称加密:非对称加密使用一对密钥,即公钥和私钥。公钥用于加密数据,私钥用于解密数据。在 HTTPS 连接建立过程中,服务器的公钥用于加密客户端生成的对称密钥,确保只有服务器持有对应的私钥才能解密对称密钥,从而保证通信的机密性。

HTTP1.1、 HTTP2、HTTP3

HTTP/1.1

HTTP/1.1 是最早的标准化版本,最初定义于 RFC 2616。

特点:

  • 每次请求都需要建立新的 TCP 连接。
  • 串行传输:在同一连接上,客户端和服务器一次只能发送一个请求或响应。
  • 阻塞:某个请求/响应的延迟会阻塞后续请求/响应。
  • 头部冗余:每个请求都会携带相同的头部信息。

缺点:

  • 性能瓶颈:多个资源请求会受到连接数限制,影响性能。
  • 网络利用率低:因为串行传输和头部冗余,导致网络利用率低下。

HTTP2

HTTP/2 是 HTTP/1.1 的进化版本,通过 Google 的 SPDY 协议演化而来,目前由 RFC 7540 定义。

特点:

  • 多路复用:在同一连接上,允许多个请求和响应同时交错传输。
  • 头部压缩:减少了头部信息的大小,降低了数据传输量。
  • 服务器推送:服务器可以主动向客户端推送资源,提高性能。
  • 优化流程:通过二进制协议优化了数据传输流程。

优点:

  • 性能提升:多路复用和头部压缩等特性大幅提高了性能。
  • 资源利用率提高:同一连接上多个请求共享资源,提高了网络利用率

HTTP3

HTTP/3 是基于 UDP 的新协议,旨在进一步提高性能,由 IETF 的 QUIC 协议演化而来。

特点:

  • 基于 UDP:通过 QUIC 协议实现,使用 UDP 作为传输层协议,避免 TCP 的一些限制。
  • 多路复用:与 HTTP/2 类似,支持在同一连接上并行传输多个请求和响应。
  • 0-RTT:支持 0-RTT(零往返时间),可以更快地建立连接和传输数据。
  • 抗丢包:QUIC 实现了自己的流量控制和拥塞控制,更好地适应了丢包情况。

优点:

进一步提高性能:通过 UDP 和其他优化,进一步提高了性能和可靠性。
减少网络延迟:支持 0-RTT 可以减少连接建立时间,降低延迟。

总的来说,HTTP/2 在 HTTP/1.1 的基础上引入了多路复用和头部压缩等特性,大幅提升了性能。而 HTTP/3 则在 HTTP/2 的基础上进一步通过使用 UDP 和其他优化提高了性能和可靠性,尤其在面对高延迟和丢包的网络环境下具有优势。