出自neuq-acm技术部后端组(yh,wyx,wtl)
当IETF正式标准化HTTP/2时,Google正在独立构建一个新的传输协议,名为gQUIC。它后来成为新互联网草案,并被命名为QUIC。gQUIC最初的实验证明,在网络条件较差的情况下,gQUIC在增强网页浏览体验方面的效果非常好。因此,gQUIC的发展势头越来越好,IETF的大多数成员赞成建立一个在QUIC上运行的HTTP新规范。这个新的倡议被称为HTTP/3,以区别于当前的HTTP/2标准。
HTTP3.0的优化
连接方式
首次连接
首次连接时客户端和服务端的密钥协商和数据传输过程,其中涉及了DH算法的基本过程:
1、客户端对于首次连接的服务端先发送client hello请求。
2、服务端生成一个素数p和一个整数g,同时生成一个Ks_pri为私钥, 然后计算出公钥 = mod p,服务端将,p,g三个元素打包称config,后续发送给客户端。
3、客户端随机生成一个自己的私钥,再从config中读取g和p,计算客户端公钥 = mod p。
4、客户端使用自己的私钥和服务端发来的config中读取的服务端公钥,生成后续数据加密用的密钥K = mod p。
5、客户端使用密钥K加密业务数据,并追加自己的公钥,都传递给服务端。
6、服务端根据自己的私钥和客户端公钥生成客户端加密用的密钥K = mod p。
7、为了保证数据安全,上述生成的密钥K只会生成使用1次,后续服务端会按照相同的规则生成一套全新的公钥和私钥,并使用这组公私钥生成新的密钥M。
8、服务端将新公钥和新密钥M加密的数据发给客户端,客户端根据新的服务端公钥和自己原来的私钥计算出本次的密钥M,进行解密。
之后的客户端和服务端数据交互都使用密钥M来完成,密钥K只使用1次。
后续连接
前面提到客户端和服务端首次连接时服务端传递了config包,里面包含了服务端公钥和两个随机数,客户端会将config存储下来,后续再连接时可以直接使用,从而跳过这个1RTT,实现0RTT的业务数据交互。
客户端保存config是有时间期限的,在config失效之后仍然需要进行首次连接时的密钥交换。
不同点是QUIC实现了在同一物理连接上可以有多个独立的逻辑数据流,实现了数据流的单独传输,解决了TCP中队头阻塞问题
QUIC是基于UDP的,所以QUIC可以实现使用0-RTT和1-RTT来建立连接。具体来说:完成QUIC交易的连接的Session ID会缓存在浏览器内存里,如果用户再次打开该页面,无需建立TLS连接,直接使用缓存Session ID 对应的加密参数,服务器可以根据Session ID在缓存里查找对应的加密参数,并完成加密。
QUIC 放弃了 TCP,而是使用其兄弟协议 UDP(用户数据报协议)。UDP 是 TCP 的“对立面”;它是不可靠的(从一端发送的数据可能永远不会被另一端收到,而另一端无法知道有什么东西丢失了),并且它是无序的(后发送的数据可以超过前发送的数据,到达乱七八糟)。然而,UDP 非常简单,新协议通常建立在 UDP 之上。
QUIC 恢复了 TCP 的可靠性和顺序,但没有引入相同数量的往返和延迟。例如,如果客户端重新连接到服务器,客户端可以在第一个数据包中发送重要的加密数据,使服务器能够使用与先前协商的相同加密来恢复旧连接,而无需任何额外的往返。
现在很多网站都有实时推送的需求,比如聊天,客服咨询等
HTTP协议:定时的发送请求给服务器
WebSocket协议:主要发送请求给服务器
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
ws是WebSocket的表示
GET ws://localhost/chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
101状态码表示服务器响应客户端升级协议的请求对协议进行切换
HTTP/1.1 101
Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: chat
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_50216270/article/details/117875950
内容来源于网络,如有侵权,请联系作者删除!