Http 基础

TCP

三次握手

四次挥手

QUIC

丢掉了 TCP、TLS 的包袱,基于 UDP,并对 TCP、TLS、HTTP/2 的经验加以借鉴、改进,实现了一个安全高效可靠的 HTTP 通信协议。凭借着 0 RTT 建立连接、平滑的连接迁移、基本消除了队头阻塞、改进的拥塞控制和流量控制等优秀的特性,QUIC 在绝大多数场景下获得了比 HTTP/2 更好的效果

建立链接

链接迁移

队头阻塞/多路复用

拥塞控制
Tcp

quic

HTTPS
HTTPS 协议的主要功能基本都依赖于 TLS/SSL 协议,TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性, 总起来就是对数据进行加密,建立安全通道,保证数据安全不被拦截以及进行双方真实身份认证

通信过程
浏览器向服务器 443 端口发起请求,会携带自己支持的加密算法 & hash 算法服务器收到请求,选择加密算法 & hash 算法,下发数字证书给浏览器,这个数字证书可以是从第三方证书机构申请,也可以是自制的如果是证书机构:服务器的运营人员向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等 如信息审核通过,CA会向申请者签发认证文件-证书。证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名。 其中签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA的私钥对信息摘要进行加密,密文即签名浏览器收到数字证书之后,开始验证数字证书验证过程:首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥。用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证证书签名的合法性(采用相同的散列函数计算得到信息摘要,然后,利用对应 CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即服务器的公开密钥是值得信赖的)。签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。浏览器验证数字证书有效,生成一个随机数 R, 并使用网站公钥对 R 加密,然后传给服务器服务器用私钥解密收到的 R,使用 R 用对称加密算法对网页内容加密,并传输给浏览器浏览器以 R 为密钥使用直接约定好的解密算法对网页内容进行解密之后数据请求响应都是用对称加密进行了

你可能感兴趣的:(httpquic)