http协议
怎么知道网站用的 http 协议版本?
F12-> network ->右击 Tab,勾选 Protocal
HTTP 和 HTTPS 的区别
s
HTTP: 超文本传输协议
- 端口 :80
- 明文传输,没有数据加密,不安全
- 不需要证书
HTTPS: 超文本传输安全协议
- 端口: 443
- SSL/TLS 加密传输协议
- https 需要 ca 证书,一般没有免费证书,需要一定的费用
HTTPS 的机密
HTTPS 的加密使用了对称加密和非对称加密的组合
HTTPS 加密的工作流程
- 建立连接
- 客户端向服务器发送连接请求。
- 服务器响应,并返回其 SSL 证书,其中包含了公钥。
- 验证证书
- 客户端收到服务器的证书后,会验证证书的有效性。这包括检查证书是否由受信任的证书颁发机构(CA)签发,以及是否在有效期内。
- 如果证书有效,则客户端生成一个随机的对称密钥,并使用服务器的公钥对其进行加密,然后将其发送回服务器。
- 建立安全连接
- 服务器接收到客户端发送的加密后的对称密钥,并使用私钥解密。
- 之后,客户端和服务器都拥有了相同的对称密钥,用于加密和解密通信内容。
- 安全通信
- 客户端和服务器使用这个对称密钥来加密和解密其之间的通信数据。
- 通信数据在传输过程中保持加密状态,从而防止被窃听或篡改。
关于加密过程中使用的加密算法:
对称加密:对称加密使用相同的密钥进行加密和解密。在 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 和其他优化提高了性能和可靠性,尤其在面对高延迟和丢包的网络环境下具有优势。