温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

HTTP3的示例分析

发布时间:2022-02-19 11:56:46 来源:亿速云 阅读:182 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关HTTP3的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

HTTP3是HTTP协议的最新版本。从诞生之初,HTTP就是交换超文本文档的首选应用层协议。多年来,为了跟上互联网的发展,以及WWW上交换的内容种类增加,HTTP进行了几次重大升级,而HTTP/3就是目前的最新版本。

HTTP3的示例分析

HTTP 2问题

前篇已整体介绍HTTP 2,就此,此篇只说下HTTP/2的问题

  1. 在底层使用了TCP的情况下,TCP的慢启动;拥塞窗口尺寸设置不合理导致的性能急剧下降的问题没有得到解决。基因在此,无法改变
  2. HTTP 2多路复用只是减少了连接数,队头阻塞的问题并没有得到完全解决。如果TCP丢包率超过2%,HTTP/2表现将不如HTTP1.1。因为HTTP1 是分开使用的TCP连接,具体对比如下示意图所示:
HTTP3的示例分析

HTTP 3

HTTP 3是在QUIC基础上发展出来的。底层使用UDP进行数据传输,但上层仍然使用HTTP/2。HTTP2与UDP之前存在一个QUIC层,TLS加密过程在此层处理。QUICK存在两个版本,早期Google打头阵的QUIC称之为gQUIC,IETF标准化后称之为IQUIC。与HTTP对比,HTTP/3整体如下:

HTTP3的示例分析

整个HTTP家族对比如下:

HTTP3的示例分析

HTTP3特点:

  • 使用UDP作为传输层进行通信
  • 从协议本身保证了安全性,QUIC在建立连接的握手过程中就完成了TLS加密握手
  • 建立连接快,正常只需要1RTT即可建立连接。如果有缓存之前的secret信息,则直接验证和建立连接,此过程0RTT。建立连接时,也可以带有少量业务数据。
HTTP3的示例分析
  • 不和具体底层连接绑定,QUIC为每个连接的两端分别分配了一个唯一ID,上层连接只认这对逻辑ID。网络切换或者断连时,只需要继续发送数据包即可完成连接的建立
  • 使用QPACK进行头部压缩,因为HPACK要求传输过程有序,这会导致队头阻塞。而QPACK不存在这个问题
  • HTTP/3在header中定义了一个新header:Alt-Svc: h4=":20003":表示服务器在20003端口开了一个20003端口用于HTTP/3服务

补充

  • 使用以下代码可以判断是否有使用HTTP/2

    (function(){
     // 保证这个方法只在支持loadTimes的chrome浏览器下执行
     if(window.chrome && typeof chrome.loadTimes === 'function') {
         var loadTimes = window.chrome.loadTimes();
         var spdy = loadTimes.wasFetchedViaSpdy;
         var info = loadTimes.npnNegotiatedProtocol || loadTimes.connectionInfo;
         // 就以 「h3」作为判断标识
         if(spdy && /^h3/i.test(info)) {
             return console.info('本站点使用了HTTP/2');
         }
     }
     console.warn('本站点没有使用HTTP/2');
    })();


感谢各位的阅读!关于“HTTP3的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI