http2/http3了解
2022-6-24 17:41:28 星期五
http协议进化图
http2:
1. 使用二进制传输, 而不是文本, 可以方便控制传输块的大小
2. 一个域名下的访问都通过一个链接
3. 必须要配合SSL使用, 监听443端口:
nginx: listen 443 ssl http2;
4. 服务器推送(资源加载的少了, 性能提升的不多, 浏览器缓存也需要考虑).
nginx: http2_push index.css http2_push_preload on; php: function pushImage($uri) { header("Link: <{$uri}>; rel=preload; as=image", false); return <<<HTML <img src="{$uri}"> HTML; }
http3:
1. 用UDP+QUIC 代替了TCP协议
1.1 其中 QUIC 意思是快速UDP网络链接, 起到了类似TCP的可靠性功能
1.2 但是 QUIC 不是在传输层作用, 而是在上一层, 也就是说, 如果升级了http3, 服务器和终端(电脑, 手机)之间的这些路由器, 交换机, 以及服务器和电脑上的操作系统都不用做什么改变, 便于推广
1.3 UDP+QUIC 减少了握手次数, 减少了丢包重传的概率, 减少了重传序号的歧义, 减少了阻塞
1.4 增加安全性, QUIC 将数据包拆的更小(不会超过每次最大的传输窗口大小MTU), 以每个小包为单位, 做加密解密; 不像是TCP, 把每次传输的数据(tcp计算出的最大窗口量, 可能有多个包)整个进行加密解密, 丢了一个数据, 就得等着重传, 全部接收完才能解密;
(安全分两种: 一种是不会被篡改, 一种是只要篡改, 接收端就会知道)
参考原文:
HTTP/2 服务器推送(Server Push)教程 - 阮一峰的网络日志 (ruanyifeng.com)
Using HTTP/2 Server Push with PHP (cloudflare.com)
http3: https://www.jianshu.com/p/dd9719c4c2c1
quic协议: https://www.jianshu.com/p/8f0b8d0a4832