您好,欢迎光临本网站![请登录][注册会员]  
文件名称: http2-explained
  所属分类: 网络基础
  开发工具:
  文件大小: 1mb
  下载次数: 0
  上传时间: 2019-04-19
  提 供 者: dev****
 详细说明:《http2讲解》这篇文档会从技术和协议层面介绍HTTP/2协议,主要内容包括HTTP/2协议产 生的背景、协议本身、实现和未来http讲解 Notice:ThisistheSimplifiedChinesetranslationofhttp2explainedThankDanielStenberg for his great work 介 《htp2讲解》这篇文档会从技术和协议层面介绍HTTP2协议,主要内容包括HTTP2协议产 生的背景、协议本身、实现和未来。原作者为 Daniel Stenbergo 阅读请访问: 中文版 ●英文原版 翻译进度 正在进行第二遍 areview,对应英文原始版本1.12。我会用注释形式标记出翻译的不太好地方, 如果有童鞋想来帮忙的话,请提PR或者郎件我。 目前第五章和第八章需要深度校对! 具体进度是这样的 介紹 http讲解 章节 总体质量 02 03 05 06 07 08 09 10 12 4 主要翻译者 Calvin Zhang Simon xia 其他贡献者 介紹 http讲解 1.背景 这篇文档会从技术和协议层面来介绍htp2。文档起源于2014年4月我在斯德哥尔摩做了一次 相关的演讲,在那之后我对演讲內容的细节进行了一些解释和补充,从而写出了这篇文档。 正式版ht!2规格标准叫做RFC7540,发布于2015年5月15日:htt:/www.rfc editor. org/rfc/rfc7540 txt 如果你有在这篇文章中发现任何我的失误造成的错误或疏漏,请帮我指正。我会在后续版本 中修改。 为了让阅读体验更流畅,在这篇文章中我会使用"htp2”来指代这一新协议,但请记住该协议的 正式名字是HTTP/2 11关于作者 我的名字叫做 Danie! Stenberg,在Mo训ia工作。在过去20年,我一值致力于开源事业,参与 了多个网络方面的项目。可能我最广为人知的身份是cu和bcur的首席开发者。同时,我也 参与了|EtfhttPbis工作组多年,工作在HTTP1.1和hp2标准化的一线 Email: danielhaxx.se TWitter: bader Web: danielhaxx se Blog: daniel haxx. se/blog 12帮助我! 如果你在该文档里面发现任何错误、疏漏,请发送给我一份相关段落更改后的版本,我会进 行修正并且注明所有对文档有贡献的人!希望能将这份文档变得越来越好。 这篇文档可以在http://daniel.haxx.se/http2下载。 13许可证 这篇文档基于 Createiye Commons attribution4.0发布 http://creativecommons.org/licenses/by/4.0/ 背景 http讲解 14文档历史 CC 该文档的第一版发布于2014年4月25日。下面是最近主要改动的更新历史 Version 1.13 Converted the master version of this document to markdown syntax 13: Mention more resources updated links and descriptions 12: Updated the Quic description with reference to draft .8.5: Refreshed with current numbers 3.4: The average is now 40 TCP connections 6.4: Updated to reflect what the spec says Version 1.12 .1.1: Http/2 is now in an official Rfc 6.5.1: Link to the hack rfc 9.1:MentiontheFirefox36+configswitchforhttp2 12.1: Added section about QUIC Version 1.11 Lots of language improvements mostly pointed out by friendly contributors .8.3.1:MentionnginxandApachehttpdspecificacitivities Version 1.10 1: The protocol has been " okayed 4.1: Refreshed the wording since 2014 is last year .Front:Addedimageandcallithttp2explained"there,fixedlink 1.4: Added document history section Many spelling and grammar mistakes corrected 14: Added thanks to bug reporters .2.4:Betterlabelsforthehttpgrowthgraph 6.3: Corrected the wagon order in the multiplexed train ●6.5.1: HAcK draft12 Version 1.9 Updatedtohttp:/2draft-17andPackdraft-11 背景 http讲解 .Addedsection10.http2inChromium"(e=onepagelongernow · Lots of spell fixes At 30 implementations now 8.5: Added some current usage numbers 8.3: Mention internet explorer too 8.3.1 Added"missing implementations 8.4.3: Mention that tls also increases success rate 背景 http讲解 2.HTTP的现状 几乎所有互联网上的内容都采用了HTTP1.1作为通信协议。人们在该协议上投入了大量精 力,所以基于它的基础架构也得以日臻完善。而得益于此,在现有的HTTP协议之上构建新的 方案会比从底层建立新的协议要容易得多。 21HTTP11过于庞大 HTTP刚诞生的时候只被当作是一个相对简单直观的协议,但时闫证明了早期的设计并不尽人 意。于1996年发布的、描逑HTTP10规范的RFC1945只有60页,但仅仅3年之后、描述 HTTP1.1规范的RFC2616就一下增长到了176页。而当我们在TF小组对该规范进行更新 时,它更是被拆分成了总页数更多的六个文档(这就是RFC7230及其文件族的由来与诞 生)。总而言之,HTP1.1包含了太多细节和可选的部分,这让它变得过于庞大。 22过多的可选项 HTTP1.1不仅包含了井常多的细枝末节,同时也为未来的扩展预留了很多选项。这种事无巨 细的风格导致在现有的软件生态中,几乎没有任何实现真正实现了协议中提及的所有细节, 甚至要弄清楚“所有细节”到底包括哪些细节都非常困难。而这也导致了很多最初不常用的功能 在后来的实现中很少会被支持,而有些最初实现了的功能,却又很少被使用。 随着时间推移,这些当初看似被边缘化的功能逐渐被用上,客户端和服务器的互用性 (interoperability)问题就被暴露了出来。HTTP管线化(HttpPipelining)就是一个非常好 的例子。 23未能被充分利用的TcP HTTP1.1很难榨干TCP协议所能提供的所有性能。HTTP客户端和浏览器必须要另辟蹊徑的去 找到新的解决方案来降低页面载入时间。 与此同时,人们也尝试去用新的协议來替代TCP,但结果证明这也非常困难。无奈之下,我 们只能尝试同时改进TCP协议本身和基于TCP的上层协议。 简单来说,我们可以通过更好的利用TCP来减少传输过程中的暂停,并充分挖掘利用那些本 可以用于发送接受更多数据的时间。下面几段我们将会着重讨论这些问题。 24传输大小和资源数量 HTTP的现状 http讲解 如果仔细观察打开那些最流行的网站首页所需要下载的资源的话,会发现一个非常明显的趋 势。近年来加载网站首页需要的下载的数据量在逐渐增加,并已经超过了19MB。但在这里 我们更应该关心的是:平均每个页面为了完成显示与渲染所需要下戕的资源数已经超过了100 正如下图所示,这种趋势已经持续了很长一段时间,并且没有减缓的迹象。该图表中绿色直 线展示了传输数据大小的增长,红色直线展示了平均请求资源数量的增长。 2100K 100 number of objects 80 800K 2011-2015 2.5恼人的延迟 HTTP1.1对网络延迟非常敏感。部分 Page Load Time As RTT Decreases 原因是 Http Pipelining还存有很多问 4.000 题,所以对大部分用户来说这项技术是3,500 被默认关闭的。 3.000 2.500 虽然近几年来网络带宽增长非常快,然 而我们却并没有看到网络延迟有对应穆2.000 1.500 度的降低。在高延迟的网络上(比如移 1000 动设备),即使拥有高连接速率,也很 500 难获得优质快速的网络体验。 另外一个需要低延迟的场景是某些视频 RTT 服务,如视频会议、游戏和一些类似无法预生成待发送数据流的服务。 26线头阻塞( Head of line blocking) HTTP的现状 http讲解 Http Pipelining是这样一种技术:在等待上一个请求响应的同时,发送下一个请求。(译者 注:作者这个解释并不完全正确,HttpPipelining其实是把多个HTTP请求放到一个TCP连接 中一一发送,而在发送过程中不需要等待服务器对前一个请求的响应;只不过,客户端还是 要按照发送请求的顺序来接收响应。)但就像在超市收银台或者银行柜台排队时一样,你并不 知道前面的顾客是干脆利索的还是会跟收银员/柜员磨蹭到世界未日(译者注:不管怎么说, 服务器(即收银员/柜员)是要按照顺序处理请求的,如果前一个请求非常耗时(顾客磨 蹭),那么后续请求都会受到影响),这就是所谓的线头阻塞( Head of line blocking)。 当然,你可以在选择队伍吋候就做 好功课,去排一个你认为最快的队 伍,或者甚至另起一个新的队伍 (译者注:即新建一个TCP连 接)。但不管怎么样,你总归得先 选择一个队伍,而且一旦选定之 后,就不能更换队伍。 但是,另起新队伍会导致资源耗费 和性能损失(译者注:新建TCP连 接的开销非常大)。这种另起新队 伍的方式只在新队伍数量很少的情 况下有作用,因此它并不具备可扩 展性。(译者注:这段话意思是 说,靠大量新建连接是不能有效解决延迟问题的,即 Http Pipelining并不能彻底解决 Head of line blocking问题。)所以针对此词题并没有完美的解决方案。 这就是为什么,即使在2015年的今天,大部分桌面浏览器仍然会选择默认关闭HTTP pipelining这一功能的原因 而关于这个问题的更多细节,可以参阅Feox的 bugzilla#264354。 HTTP的现状
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: http2-explained
 输入关键字,在本站1000多万海量源码库中尽情搜索: