蓝盟云服务,Http协议是具有丰富开发经验的程序员必不可少的工具

发布者:上海IT外包 来源:www.linemore.com

   虽然我每天都看到它,但由于http协议的问题,很多人如果没有积极的准备就无法做出很好的反应。
  HTTP 2.0协议面试问题让面试官动摇
  今天,我们来谈谈http 2.0和之前版本之间的区别。
  一,HTTP的定义
  HTTP协议(超文本传输协议,超文本传输协议)是用于将超文本从WWW服务器传输到本地浏览器的传输协议。
  二,HTTP开发的历史。
  HTTP 2.0协议面试问题让面试官动摇
  第三,HTTP 2.0与1.0的性能
  与HTTP 1.x相比,HTTP 2.0的出现大大提高了Web性能。
  HTTP 2.0协议面试问题让面试官动摇
  这是Akamai的官方演示,用于说明HTTP/2性能相对于之前的HTTP/1.1的显着改进。同时,要求379张图像。加载时间比较显示了HTTP/2在速度方面的优势。
  第四,HTTP 2.0和1.1之间的区别。
  稍后我们将以几种方式讨论HTTP 2.0和HTTP 1.1之间的区别,我们将在其中解释其中的原理。
  差异1:多路复用
  多路复用允许单个HTTP/2连接同时发起多个请求 - 响应消息。看一个例子:
  HTTP 2.0协议面试问题让面试官动摇
  完全访问过程首次请求index.html页面,之后浏览器将请求style.css和scripts.js的文件。左侧的图像按顺序加载到两个文件中,右侧的图像并行加载。
  我们知道底层HTTP确实依赖于TCP协议。问题是如何在同一个连接上同时发生两个请求响应?
  首先,您应该知道TCP连接相当于两个管道(一个用于服务器到客户端,一个用于服务器)。流水线中的数据传输通过字节码传输,并且每个字都对传输进行排序。这些部分都是一个接一个的。
  例如,如果客户端希望向服务器发送两个单词Hello和World,则他只能发送Hello然后发送World。无法同时发送这两个单词。否则,服务器可能会收到HWeolrllod(请注意它是混合并发送的,但订单尚未凌乱)。这样服务器就坏了。在上一个问题中,你能同时发送Hello和World这个词吗?当然,也可以将数据分成包并标记每个包。当它完成时,它是1H 2W 1e 2o 1l 2r 1l 2l 1o 2d。通过这种方式,服务器根据标签区分这两个单词。实际传输效果如下:
  HTTP 2.0协议面试问题让面试官动摇
  为了达到以前的效果,我们引入了一个新概念:二进制框架。
  二进制结构层位于应用层(HTTP/2)和传输层(TCP或UDP)之间。 HTTP/2不会修改TCP协议,但会尽可能使用TCP功能。
  HTTP 2.0协议面试问题让面试官动摇
  在二进制帧层中,HTTP/2将所有传输的信息分成帧并以二进制格式对其进行编码,其中头信息封装在HEADER帧中,相应的请求体封装在DATA框架内。
  优化HTTP性能的关键不是高带宽,而是低延迟。 TCP连接随时间自动调整,最初限制最大连接速度,如果数据传输成功,则传输速度随时间增加。这种调整称为TCP慢启动。因此,建立本质上突发且短暂的HTTP连接效率非常低。
  HTTP/2允许通过使所有数据流共享相同的连接来更有效地使用TCP连接,从而允许大带宽实际提供HTTP性能。
  通过以下两个图,我们可以更深入地理解多路复用:
  HTTP 2.0协议面试问题让面试官动摇
  HTTP/1
  HTTP 2.0协议面试问题让面试官动摇
  HTTP/2
  总结:多路复用技术:多个单一连接资源,降低服务器链路压力,减少内存使用,提高连接性能,减少TCP启动速度,提高传输速度。
  差异二:第一次压缩
  为何压缩?在HTTP/1中,HTTP请求和响应由三部分组成:状态行,请求/响应头和消息体。通常,消息体将使用gzip压缩,或者它将传输压缩的二进制文件(例如图像,音频),但状态行和标题不会被压缩,而是直接以纯文本形式传输。
  随着Web功能变得越来越复杂,每个页面生成的请求数量也会增加,这意味着标头中会消耗更多流量。特别是,每次都会传输UserAgent和Cookie,并且不会频繁更改。内容完全是浪费。然后我们用共同语言来解释压缩原理。标头压缩必须位于支持HTTP/2的浏览器和服务器之间。
  维护一个相同的静态表,其中包含常见的标题名称以及特别常见的标题名称和值的组合;
  保留同一个数据透视表的副本以动态添加内容;
  支持基于Huffman静态代码表的Huffman编码;
  静态词典有两个功能:
  对于完美匹配的头键值对,例如“:方法: GET”,您可以使用单个字符表示;
  对于标题名称可以匹配的键值对,例如“cookie: xxxxxxx”,名称可以用字符表示。
  HTTP/2中的静态字典如下(仅采用以下部分内容,完整表格如下):
  HTTP 2.0协议面试问题让面试官动摇
  同时,浏览器和服务器都可以将键值对添加到动态字典中,然后键值对可以用字符表示。重要的是要注意动态字典的上下文与为每个HTTP/2连接维护不同的字典有关。在传输过程中使用字符而不是键值对大大减少了数据传输
  差异三:HTTP2支持推送服务器
  推送服务器是一种在客户端请求数据之前发送数据的机制。当代网页使用大量的: HTML资源,样式表,脚本,图像等。必须在HTTP/1.x中明确请求每个资源。这可能是一个非常缓慢的过程。浏览器首先获取HTML,然后在分析和评估页面时逐步获取更多资源。由于服务器必须等待浏览器发出所有请求,因此网络通常处于非活动状态且未充分利用。
  为了改善延迟,HTTP/2引入了服务器推送,允许服务器在浏览器明确请求之前将资源发送到浏览器。服务器通常知道页面需要许多额外的资源,当它响应浏览器的第一个请求时,它可以开始增加这些资源。这允许服务器充分利用可能不活动的网络来改善页面加载时间。
  HTTP 2.0协议面试问题让面试官动摇
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部