【皇家赌场手机版】HTTP2天性预览和抓包分析,性情和抓包分析

一分钟预览 HTTP2 特点和抓包分析

2016/09/26 · JavaScript
· HTTP/2

初稿出处: 段隆贤   

【皇家赌场手机版】HTTP2天性预览和抓包分析,性情和抓包分析。背景

方今,http互联网请求量日益充分,以下是httparchive总结,从贰零壹叁-11-01到二零一四-09-01的伏乞数量和传导大小的动向图:

皇家赌场手机版 1

此时此刻大多数份客户端&服务端架构的应用程序,都是用http/1.1接连的,现代浏览器与单个域最瓜达拉哈拉接数,都在4-伍个左右,由上海体育场面Total
Requests数据,若是不用CDN分流,平均有十多个左右的串行请求。
HTTP2
是一九九六年公告http1.1后的2遍重大的句斟字酌,在磋商层面改良了以上难题,裁减能源占用,来,直接感受一下差别:

HTTP/2 is the future of the Web, and it is
here!
那是 Akamai 公司建立的二个合法的言传身教,用以表明 HTTP/2 比较于事先的
HTTP/1.1 在性质上的庞然大物进步。 同时请求 379 张图纸,从Load time
的相比较能够见见 HTTP/2 在速度上的优势。

皇家赌场手机版 2

正文全体源码和抓包文件在github

http2 协议

HTTP/2 源自 SPDY/2,正式版http2规格标准叫做PRADOFC
7540,发布于二〇一六年十二月130日。

  • RFC 7540 – Hypertext Transfer Protocol Version 2
    (HTTP/2)

  • RFC 7541 – HPACK: Header Compression for
    HTTP/2

  • fex-team翻译的 htt第22中学国和英国文对照.md)

HTTP/2 跟 SPDY 仍有例外的地点,主假如以下两点:

  1. HTTP/2 补助明文 HTTP 传输,而 SPDY 强制行使 HTTPS

  2. HTTP/2 信息头的压缩算法选择 HPACK,而非 SPDY 采纳的 DELEFT

即使困难重重,照旧把网站升级到http2了,遇坑如《phpcms
v9站http升级到https加http2遭遇到坑》。

背景

近来,http网络请求量日益增进,以下是httparchive总括,从二零一三-11-01到二〇一五-09-01的央浼数量和传导大小的大势图:

皇家赌场手机版 3

 

当下大多数份客户端&服务端框架结构的应用程序,都是用http/1.1再而三的,现代浏览器与单个域最奥斯汀接数,都在4-5个左右,由上海体育地方Total
Requests数据,若是不用CDN分流,平均有21个左右的串行请求。
HTTP2
是一九九七年透露http1.1后的二次首要的改进,在商榷层面改革了以上难点,减弱能源占用,来,直接感受一下差距:

HTTP/2 is the future of the Web, and it is
here!
那是 Akamai 公司确立的2个官方的示范,用以表明 HTTP/2 相比较于事先的
HTTP/1.1 在性质上的小幅提高。 同时伸手 379 张图纸,从Load time
的比较能够见到 HTTP/2 在速度上的优势。

皇家赌场手机版 4

 

正文全体源码和抓包文件在github

HTTP/2 源自 SPDY/2

SPDY 体系协议由谷歌(谷歌(Google))开发,于 二〇〇八 年堂而皇之。它的宏图目的是降低 一半的页面加载时间。当下众多闻明的网络商户都在友好的网站或 APP 中动用了
SPDY 类别协议(当前流行版本是
SPDY/3.1),因为它对质量的晋级是路人皆知的。主流的浏览器(谷歌、火狐、Opera)也都早已经支撑
SPDY,它已经成为了工业标准,HTTP Working-Group 最后决定以 SPDY/2
为根基,开发 HTTP/2。HTTP/2标准于二零一五年4月以RAV4FC 7540正式刊出。

而是,HTTP/2 跟 SPDY 仍有例外的地方,首倘若以下两点:

HTTP/2 帮助明文 HTTP 传输,而 SPDY 强制行使 HTTPS
【皇家赌场手机版】HTTP2天性预览和抓包分析,性情和抓包分析。HTTP/2 音信头的压缩算法选择 HPACK ,而非 SPDY 选取的 DEFLATE(谢谢网络朋友
逸风之狐指正)

协和式飞机文书档案请见:rfc7540:HTTP2

http2 特点

http2 性能,http2
demo

  • HTTP/2’s binary framing layer

  • Streams, messages, and frames

  • Request and response multiplexing

  • Stream prioritization

  • One connection per origin

  • Flow control

  • Server push

  • Header compression

(1)二进制

HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x
的文本格式。二进制协议分析起来更高速。

(2)二进制格式

HTTP/1
的乞求和响应报文,都是由起始行、首部和实体正文(可选)组成,各部分之间以文件换行符分隔。

HTTP/2 将请求和响应数据分割为更小的帧,并对它们选取二进制编码。

帧(Frame):HTTP/2 数据通讯的小不点儿单位。

音信(Message):指 HTTP/2 中逻辑上的 HTTP
音讯。例如请求和响应等,新闻由多个或三个帧组成

流(Stream):存在于连接中的二个虚构通道。流能够承接双向新闻,各种流都有三个唯一的整数
ID。

HTTP/2中,同域名下全部通讯都在单个连接上做到,这一个一而再能够承接任意数量的双向数据流。各种数据流都以消息的款式发送,而音信又由一个或五个帧组成。多少个帧之间能够乱序发送,因为遵照帧首部的流标识能够另行组建。

Frame 是 HTTP/2 二进制格式的功底,Frame 的骨干格式如下

+-----------------------------------------------+
|                 Length (24)                   |
+---------------+---------------+---------------+
|   Type (8)    |   Flags (8)   |
+-+-------------+---------------+-------------------------------+
|R|                 Stream Identifier (31)                      |
+=+=============================================================+
|                   Frame Payload (0...)                      ...
+---------------------------------------------------------------+

字段含义可查阅协议

皇家赌场手机版 5

http2.png

(3)多路复用

HTTP/1.X 存在线端阻塞(head-of-line blocking)的标题。HTTP/1.1
试过用流水生产线(pipelining)来缓解这些难点,
可是效益并不优良(数据量较大照旧速度较慢的响应,
会阻碍排在他背后的央浼)。HTTP 管道技术不能够大规模利用。

多路复用,代替本来的队列和鸿沟机制。正是全体的呼吁都以透过一个 TCP三番五次出现实现。流辅助优先级流量控制

HTTP/2
的多路复用个性,使得能够在一个接二连三上同时开辟四个流,双向传输数据。每一趟请求/响应使用不一样的
Stream ID。通过 Stream ID 标识,全部的乞请和响应都同时跑在一条 TCP
链接上。
当流并发时,就会波及到流的优先级和凭借。优先级高的流会被先行发送。图片请求的预先级要小于
CSS 和
SC卡宴IPT,这几个陈设能够保险主要的东西得以被先行加载完。http2下边每一个流都拥有和谐的公示的流量窗口,它能够界定另一端发送数据。

(4)头压缩

HTTP
1.1请求的大大小小变得尤为大,有时照旧会超过TCP窗口的开始大小,那会严重拖累发送请求的速度。因为它们供给拭目以俟带着ACK的响应回来以往,才能一而再被发送。

HTTP/2 对新闻头采取 HPACK
(专为http2尾部设计的压缩格式)实行削减传输,能够节省新闻头占用的网络的流量。而
HTTP/1.x 每一趟请求,都会带走多量冗余头音讯,浪费了无数带宽财富。

(5)服务端推送

服务端能够在发送页面 HTML
时积极推送其余能源,而不用等到浏览器解析到对应岗位,发起呼吁再响应。例如服务端能够积极把
JS 和 CSS 文件推送给客户端,而不供给客户端解析 HTML 再发送那几个请求。

服务端能够积极推送,客户端也有任务挑选收取与否。假若服务端推送的能源已经被浏览器缓存过,浏览器能够透过发送
OdysseyST_STREAM 帧来拒绝接收。

因为理论相比于 HTTP 1.x ,在同时包容 HTTP/1.1
完全语义,进一步裁减了互连网延迟。

HTTP/2 源自 SPDY/2

SPDY 种类协议由谷歌(谷歌)开发,于 2008 年公然。它的布署性指标是下落 二分一的页面加载时间。当下游人如织名牌的互连网商家都在团结的网站或 APP 中使用了
SPDY 体系协议(当前流行版本是
SPDY/3.1),因为它对质量的升迁是引人侧目标。主流的浏览器(谷歌、火狐、Opera)也都早已经支持SPDY,它已经成为了工业标准,HTTP Working-Group 最后决定以 SPDY/2
为根基,开发 HTTP/2。HTTP/2标准于二〇一四年二月以EnclaveFC 7540正经刊出。

然而,HTTP/2 跟 SPDY 仍有分裂的地点,主借使以下两点:

HTTP/2 援救明文 HTTP 传输,而 SPDY 强制行使 HTTPS
HTTP/2 音讯头的压缩算法选择 HPACK ,而非 SPDY 选用的 DEFLATE(多谢网上好友
逸风之狐指正)

研讨文书档案请见:rfc7540:HTTP2

HTTP2特性大概浏览

浏览器和web服务协助意况

http2
帮忙清单

对以前端开发人士来说,无疑收缩了在前端方面的优化学工业作。比如Coca Cola图&文件合并||内容内嵌||域名分片

HTTP2天性大概浏览

1. 二进制协议

HTTP/2 采取二进制格式传输数据,而非 HTTP/1.x 的文本格式

皇家赌场手机版 6

由上海体育场地能够见到HTTP2在本来的应用层和HTTP层添加了一层二进制传输。

二进制协议的1个利益是,能够定义额外的帧。

HTTP/2
定义了近十种帧(详情可分析抓包文件),为未来的高档应用打好了基础。借使利用文本完毕那种意义,解析数据将会变得老大麻烦,二进制解析则有利得多。
RFC7540:Frame
Definitions
皇家赌场手机版 7
共谋中定义的帧

设置配备

从 Nginx 1.9.5 开始,http_v2_module 已经替换了
ngx_http_spdy_module,安装版本用1.10.1

nginx

./configure --with-http_v2_module

mac

brew options nginx
brew install nginx --with-http2

http1.0的缺点

1. 二进制协议

HTTP/2 选用二进制格式传输数据,而非 HTTP/1.x 的文本格式

皇家赌场手机版 8

 

由上航海用教室能够见到HTTP2在本来的应用层和HTTP层添加了一层二进制传输。

二进制协议的1个益处是,能够定义额外的帧。

HTTP/2
定义了近十种帧(详情可分析抓包文件),为今天的高等应用打好了基础。假若使用文本完毕那种意义,解析数据将会变得相当麻烦,二进制解析则有利得多。
RFC7540:Frame Definitions

皇家赌场手机版 9

协议中定义的帧

2. 多路复用

HTTP/2
复用TCP连接,在二个接连里,客户端和浏览器都足以同时发送多少个请求或答复,而且不用依据顺序依次对应,那样就制止了”队头堵塞”(见TCP/IP详解卷一)。
各种 Frame Header 都有二个 Stream ID
就是被用来落到实处该天性。每一次请求/响应使用不一致的 Stream ID。就如同三个 TCP
链接上的多寡包通过 IP: POMuranoT 来差别出多少包去往哪儿一样。
皇家赌场手机版 10

rfc7540: HTTP2
Multiplexing中对Multiplexing的说明

Streams and Multiplexing

   A "stream" is an independent, bidirectional sequence of frames
   exchanged between the client and server within an HTTP/2 connection.
   Streams have several important characteristics:

   o  A single HTTP/2 connection can contain multiple concurrently open
      streams, with either endpoint interleaving frames from multiple
      streams.

   o  Streams can be established and used unilaterally or shared by
      either the client or server.

   o  Streams can be closed by either endpoint.

   o  The order in which frames are sent on a stream is significant.
      Recipients process frames in the order they are received.  In
      particular, the order of HEADERS and DATA frames is semantically
      significant.

   o  Streams are identified by an integer.  Stream identifiers are
      assigned to streams by the endpoint initiating the stream.

配置https

HTTP/2 协议自身并不曾必要必须依据 TLS 计划,不过 Chrome 和 Firefox
均代表只支持 HTTP/2 Over
TLS。一方面更安全,希望怜惜以及偏重用户的心曲,一方面选用 TLS
的加密机制能够更好地穿透互连网中间节点。需求先布署https。

# 创建一个私钥文件:

openssl genrsa -des3 -out server.key 1024

openssl req -new -key server.key -out server.csr

openssl rsa -in server.key -out server_nopass.key

# 结合密钥和证书生成请求,创建一个自签署的CA证书

openssl req -new -x509 -days 3650 -key server_nopass.key -out server.crt

配置nginx

server
{
    listen 443 ssl http2;
    server_name  www.kailian.com;
    index index.php index.html;
    root  /data/web/www;
    ssl on;
    ssl_certificate /usr/local/etc/nginx/server.crt;
    ssl_certificate_key /usr/local/etc/nginx/server_nopass.key;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
    keepalive_timeout 70;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m; 

    charset utf-8;
    location ~ .*\.php$
    {
        include fastcgi.conf;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
    }

}

http1.0被抱怨最多的就是连接不能够复用,和head of line
blocking那五个难点。明白这一个难题有3个万分至关心重视要的前提:客户端是根据域名来向服务器建立连接,一般PC端浏览器会针对单个域名的server同时建立6~八个一而再,手提式有线电话机端的连接数则一般控制在4~五个。显著连接数并不是越来越多越好,能源开发和一体化延迟都会随之增大。

2. 多路复用

HTTP/2
复用TCP连接,在二个连续里,客户端和浏览器都足以而且发送七个请求或答复,而且不用根据顺序依次对应,那样就防止了”队头堵塞”(见TCP/IP详解卷一)。
各种 Frame Header 都有二个 Stream ID
就是被用于落到实处该性子。每趟请求/响应使用分歧的 Stream ID。就好像同贰个 TCP
链接上的数码包通过 IP: PO福睿斯T 来分化出多少包去往哪个地方一样。

皇家赌场手机版 11

rfc7540: HTTP2
Multiplexing中对Multiplexing的说明

Streams and Multiplexing A “stream” is an independent, bidirectional
sequence of frames exchanged between the client and server within an
HTTP/2 connection. Streams have several important characteristics: o A
single HTTP/2 connection can contain multiple concurrently open streams,
with either endpoint interleaving frames from multiple streams. o
Streams can be established and used unilaterally or shared by either the
client or server. o Streams can be closed by either endpoint. o The
order in which frames are sent on a stream is significant. Recipients
process frames in the order they are received. In particular, the order
of HEADERS and DATA frames is semantically significant. o Streams are
identified by an integer. Stream identifiers are assigned to streams by
the endpoint initiating the stream.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Streams and Multiplexing
 
   A "stream" is an independent, bidirectional sequence of frames
   exchanged between the client and server within an HTTP/2 connection.
   Streams have several important characteristics:
 
   o  A single HTTP/2 connection can contain multiple concurrently open
      streams, with either endpoint interleaving frames from multiple
      streams.
 
   o  Streams can be established and used unilaterally or shared by
      either the client or server.
 
   o  Streams can be closed by either endpoint.
 
   o  The order in which frames are sent on a stream is significant.
      Recipients process frames in the order they are received.  In
      particular, the order of HEADERS and DATA frames is semantically
      significant.
 
   o  Streams are identified by an integer.  Stream identifiers are
      assigned to streams by the endpoint initiating the stream.

3. 数据流

数码流发送到二分一的时候,客户端和服务器都得以发送信号(途乐ST_STREAM帧),撤除以此数据流。1.1版裁撤数据流的唯一方法,正是倒闭TCP连接。那正是说,HTTP/2
能够废除某贰次呼吁,同时保障TCP连接还开辟着,可以被其它请求使用。

测试

chrome插件

ssllabs翻开https配置是不是够快

在 Chrome 地址栏输入chrome://net-internals/#http2,打开 Chrome 自带的
HTTP/2 查看工具,可查看 HTTP/2 帧新闻

Wireshark抓包查看

连日来不可能复用会招致每趟请求都经历三回握手和慢运维。贰遍握手在高延迟的光景下影响较强烈,慢运营则对文本类大请求影响较大。

3. 数据流

数量流发送到六分之三的时候,客户端和服务器都得以发送信号(陆风X8ST_STREAM帧),裁撤那么些数据流。1.1版裁撤数据流的绝无仅有办法,正是关闭TCP连接。那便是说,HTTP/2
可以收回某2遍呼吁,同时确定保证TCP连接还打开着,能够被其余请求使用。

4. 头消息压缩:

HTTP/2 对音讯头选用
HPACK
进行削减传输,能够节省音信头占用的互联网的流量。而 HTTP/1.x
每趟请求,都会带走大批量冗余头音讯,浪费了过多带宽能源。
HTTP2对http头建立索引表,相同的头只发送hash
table 的index, 同时还用了霍夫曼编码和观念的gzip压缩。

连带材质

  • http2
    讲解

  • http2 home

  • http2
    专题

  • 【协议分析】HTTP2优势分析

head of line
blocking
会促成带宽不可能被充裕利用,以及后续健康请求被堵塞。若是有5个请求同时发生,对于http1.0的兑现,在第一个请求没有接到回复此前,后续从应用层发出的乞求只可以排队,请求2,3,4,七头能等请求1的response回来之后才能每个发出。一旦请求1的request因为何原因没有到达服务器,或许response因为互连网不通没有立刻回到,影响的正是富有继续请求,难题就变得相比较严重了。

4. 头音讯压缩:

HTTP/2 对消息头采纳
HPACK
进行压缩传输,能够节约音信头占用的网络的流量。而 HTTP/1.x
每一回请求,都会教导大量冗余头音讯,浪费了很多带宽能源。
HTTP2对http头建立索引表,相同的头只发送hash
table 的index, 同时还用了霍夫曼编码和观念的gzip压缩。

5. 服务器推送

服务端能够更快的把能源推送给客户端。例如服务端能够积极把 JS 和 CSS
文件推送给客户端,而不要求客户端解析 HTML
再发送那一个请求。当客户端须要的时候,它早已在客户端了。

那正是说存在一个题材,如若客户端设置了缓存怎么做。有二种情势(来自社区)

  • 客户端能够透过安装SETTINGS_ENABLE_PUSH为0值公告服务器端禁止使用推送
  • 发现缓存后,客户端和服务器都得以发送信号(汉兰达ST_STREAM帧),撤除这一个数据流。
  • cache-digest(提案)

    rfc7540: HTTP2 Server
    Push

    #### 6. 流优先级

    HTTP2允许浏览器钦点能源的优先级。

    rfc7540: Stream
    Priority

对于http1.0的缺点优化方案

5. 服务器推送

服务端能够更快的把能源推送给客户端。例如服务端能够积极把 JS 和 CSS
文件推送给客户端,而不要求客户端解析 HTML
再发送那几个请求。当客户端必要的时候,它已经在客户端了。

那么存在贰个题目,假设客户端设置了缓存如何做。有两种方法(来自社区)

  • 客户端能够透过设置SETTINGS_ENABLE_PUSH为0值公告服务器端禁止使用推送
  • 意识缓存后,客户端和服务器都得以发送信号(汉兰达ST_STREAM帧),裁撤那个数据流。
  • cache-digest(提案)

    rfc7540: HTTP2 Server
    Push

    #### 6. 流优先级

    HTTP2允许浏览器钦命财富的先行级。

    rfc7540: Stream
    Priority

浏览器补助

皇家赌场手机版 12

主流浏览器都只帮助 HTTP/2 Over TLS

竭泽而渔连接无法复用

浏览器支持

主流浏览器都只帮衬 HTTP/2 Over TLS

node中启用http2

node中能够用spdy模块来运行应用,spdy的api,与https是同样的且主流浏览器只支持HTTP/2
Over TLS,须要布署 私钥和证件,本地自签约服务器配置可参看引用6,7

const express = require('express');
const fs =  require('fs');
const http2 = require('spdy');
const path = require('path');
const options = {
    key: fs.readFileSync('./keys/privatekey.pem'),
    cert: fs.readFileSync('./keys/certificate.pem')
};
const app = new express();
http2
  .createServer(options, app)
  .listen(8080, ()=>{
    console.log(`Server is listening on https://localhost:8080.
     You can open the URL in the browser.`)
  }
)
app.use("/",(req,res)=>{

  res.send("hello http2!");
})

如上,对于已存在的连串只要修改几行代码就足以选拔http2.0了。

请求头和响应头:
皇家赌场手机版 13

表明:新版的Chrome,对不安全的注明(如本地的自签定服务)会降级到http1.1,firefox不会产出此题材。

启动server push

app.get("/",(req,res)=>{
    var stream = res.push('/app.js', {   //服务器推送
    status: 200, // optional
    method: 'GET', // optional
    request: {
      accept: '*/*'
    },
    response: {
      'content-type': 'application/javascript'
    }
  })
  stream.on('error', function() {
  })
  stream.end('console.log("http2 push stream, by Lucien ");')

  res.send(`hello http2!
    <script src="/app.js"></script>`);//express 并没有host static ,这个app.js 来自push 
})

源码在github

响应

皇家赌场手机版 14

皇家赌场手机版 15

http1.0协议头里能够安装Connection:Keep-Alive。在header里设置Keep-Alive能够在任其自流时间内复用连接,具体复用时间的长度能够由服务器控制,一般在15s左右。到http1.1之后Connection的暗中认可值正是Keep-阿里ve,要是要关张连接复用必要显式的设置Connection:Close。一段时间内的连天复用对PC端浏览器的体会帮忙十分的大,因为多数的呼吁在汇聚在一小段时日之内。但对移动app来说,功效一点都不大,app端的请求相比分散且时间跨度相对较大。所以移动端app一般会从使用层寻求其余化解方案,长连接方案依旧伪长连接方案:

node中启用http2

node中能够用spdy模块来运转应用,spdy的api,与https是一致的且主流浏览器只补助HTTP/2
Over TLS,需求配置 私钥和证书,本地自签定服务器配置可参照引用6,7

JavaScript

const express = require(‘express’); const fs = require(‘fs’); const
http2 = require(‘spdy’); const path = require(‘path’); const options = {
key: fs.readFileSync(‘./keys/privatekey.pem’), cert:
fs.readFileSync(‘./keys/certificate.pem’) }; const app = new express();
http2 .createServer(options, app) .listen(8080, ()=>{
console.log(`Server is listening on . You can
open the URL in the browser.`) } ) app.use(“/”,(req,res)=>{
res.send(“hello http2!”); })

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const express = require(‘express’);
const fs =  require(‘fs’);
const http2 = require(‘spdy’);
const path = require(‘path’);
const options = {
    key: fs.readFileSync(‘./keys/privatekey.pem’),
    cert: fs.readFileSync(‘./keys/certificate.pem’)
};
const app = new express();
http2
  .createServer(options, app)
  .listen(8080, ()=>{
    console.log(`Server is listening on https://localhost:8080.
     You can open the URL in the browser.`)
  }
)
app.use("/",(req,res)=>{
    
  res.send("hello http2!");
})

如上,对于已存在的项目只要修改几行代码就能够使用http2.0了。

请求头和响应头:

表明:新版的Chrome,对不安全的证书(如本地的自签定服务)会降级到http1.1,firefox不会产出此题材。

启动server push

JavaScript

app.get(“/”,(req,res)=>{ var stream = res.push(‘/app.js’, {
//服务器推送 status: 200, // optional method: ‘GET’, // optional
request: { accept: ‘*/*’ }, response: { ‘content-type’:
‘application/javascript’ } }) stream.on(‘error’, function() { })
stream.end(‘console.log(“http2 push stream, by Lucien “);’)
res.send(`hello http2! <script
src=”/app.js”></script>`);//express 并没有host static
,这个app.js 来自push })

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
app.get("/",(req,res)=>{
    var stream = res.push(‘/app.js’, {   //服务器推送
    status: 200, // optional
    method: ‘GET’, // optional
    request: {
      accept: ‘*/*’
    },
    response: {
      ‘content-type’: ‘application/javascript’
    }
  })
  stream.on(‘error’, function() {
  })
  stream.end(‘console.log("http2 push stream, by Lucien ");’)
 
  res.send(`hello http2!
    <script src="/app.js"></script>`);//express 并没有host static ,这个app.js 来自push
})

源码在github

响应

抓包分析

能够用chrome
内部自带的工具(chrome://net-internals/)查看http2流量,但以此包新闻量相比少,结构不如大家熟稔的Fiddler%E6%9F%A5%E7%9C%8Bhttp2%E6%B5%81%E9%87%8F,%E4%BD%86%E8%BF%99%E4%B8%AA%E5%8C%85%E4%BF%A1%E6%81%AF%E9%87%8F%E6%AF%94%E8%BE%83%E5%B0%91%EF%BC%8C%E7%BB%93%E6%9E%84%E4%B8%8D%E5%A6%82%E6%88%91%E4%BB%AC%E7%86%9F%E6%82%89%E7%9A%84Fiddler)
or Wireshark清晰。

Fiddler是平素作为中间代理,能够作为客户端直接与服务端通讯,能够像浏览器那样直接解密https,直接旁观https报文,
唯独由于受限于.NET
Framework暂不扶助Http2.

用wireshark直接抓包 https:443端口的流量是那般的:
皇家赌场手机版 16

数码被加密了,协议细节完全看不到。
这里介绍了一种方法取得私钥解包。
抓包https包时要把代理关了,不然私钥不是同3个,wireshark不能够解包(被那一个坑了两小时T
T)。

皇家赌场手机版 17

皇家赌场手机版 18

3个包内有八个例外的Steam ID

皇家赌场手机版 19

追踪解密后TCP流能够看看,由于多路复用,各样分裂的伸手交替传输不相同的帧,所以流数据是乱的。但在一如既往帧内数据依然如常的。

方案一:基于tcp的长链接

抓包分析

能够用chrome
内部自带的工具(chrome://net-internals/)查看http2流量,但那些包新闻量比较少,结构不如大家耳熟能详的Fiddler%E6%9F%A5%E7%9C%8Bhttp2%E6%B5%81%E9%87%8F,%E4%BD%86%E8%BF%99%E4%B8%AA%E5%8C%85%E4%BF%A1%E6%81%AF%E9%87%8F%E6%AF%94%E8%BE%83%E5%B0%91%EF%BC%8C%E7%BB%93%E6%9E%84%E4%B8%8D%E5%A6%82%E6%88%91%E4%BB%AC%E7%86%9F%E6%82%89%E7%9A%84Fiddler)
or Wireshark清晰。

Fiddler是从来作为中间代理,能够看成客户端直接与服务端通讯,能够像浏览器这样直接解密https,直接看出https报文,
不过出于受限于.NET
Framework暂不协助Http2.

用wireshark直接抓包 https:443端口的流量是那般的:

数码被加密了,协议细节完全看不到。
这里介绍了一种方法取得私钥解包。
抓包https包时要把代理关了,不然私钥不是同一个,wireshark不可能解包(被这么些坑了两钟头T
T)。

二个包内有三个不等的Steam ID

追踪解密后TCP流可以看到,由于多路复用,种种差别的请求交替传输差异的帧,所以流数据是乱的。但在平等帧内数据依旧好端端的。

最后

最终,HTTP2有更高的传输速度,更少的财富占用,能够去除各个品质优化tricks(如css
sprite,inline-image.)
倒车WEB开发的美好将来T.T

于今更加多的移位端app都会确立一条自个儿的长链接通道,通道的实现是基于tcp协议。基于tcp的socket编制程序技术难度相对复杂很多,而且须要团结制定商业事务,但推动的报恩也不小。消息的反映和推送变得更及时,在请求量产生的时刻点还是能减轻服务器压力(http短连接形式会反复的创始和销毁连接)。不止是IM
app有如此的坦途,像天猫商城那类电商类app都有友好的专属长连接通道了。以往产业界也有为数不少成熟的方案可供选用了,google的protobuf正是内部之一。

最后

最后,HTTP2有更高的传输速度,更少的能源占用,可以去除各类质量优化tricks(如css
sprite,inline-image.)
倒车WEB开发的美好以往T.T

参考资料

  1. Turn-on HTTP/2 today!
  2. Hypertext Transfer Protocol Version 2
    (HTTP/2)
  3. npm spdy
  4. npm spdy push
  5. How to create a self-signed SSL
    Certificate
  6. HPACK: Header Compression for
    HTTP/2
  7. 用Node.js创造自签署的HTTPS服务器

方案二:http long-polling

参考资料

  1. Turn-on HTTP/2 today!
  2. Hypertext Transfer Protocol Version 2
    (HTTP/2)
  3. npm spdy
  4. npm spdy push
  5. How to create a self-signed SSL
    Certificate
  6. HPACK: Header Compression for
    HTTP/2
  7. 用Node.js制造自签署的HTTPS服务器

    1 赞 收藏
    评论

皇家赌场手机版 20

客户端在始发状态就会发送三个polling请求到服务器,服务器并不会立即赶回工作数据,而是等待有新的政工数据发生的时候再回去。所以总是会一向被保证,一旦结束立即又会倡导叁个新的polling请求,如此反复,所以一向会有3个三番五次被保险。服务器有新的剧情爆发的时候,并不供给等待客户端建立3个新的总是。做法固然简易,但有些难点要求攻克才能落实平稳可信赖的业务框架:

和观念的http短链接相比,长连接会在用户增进的时候不小的增添服务器压力

挪动端网络环境复杂,像wifi和4g的网络切换,进电梯导致互连网一时半刻断掉等,那些现象都要求考虑怎么重建健康的接二连三通道。

那种polling的形式平稳并倒霉,须要做好数据可相信性的保管,比如重发和ack机制。

polling的response有恐怕会被中间代理cache住,要处理好事情数据的超时机制。

皇家赌场手机版 21

long-polling格局还有部分缺点是力不从心理战木胜的,比如每一次新的央浼都会带上重复的header音讯,还有数据通道是单向的,主动权精通在server那边,客户端有新的工作请求的时候无法及时传递。

方案三:http streaming

同long-polling不一样的是,server并不会结束初叶的streaming请求,而是不断的经过那一个通道再次回到最新的事务数据。明显那么些数据通道也是单向的。streaming是由此在server
response的头顶里增添”Transfer Encoding:
chunked”来报告客户端后续还会有新的数量来临。除了和long-polling相同的困难之外,streaming还有多少个毛病:

稍许代理服务器会等待服务器的response甘休以往才会将结果推送到请求客户端。对于streaming那种永远不会终结的主意来说,客户端就会直接处于等候response的长河中。

作业数据不恐怕遵照请求来做分割,所以客户端没收到一起数码都亟待协调做协议分析,也正是说要做要好的商议定制。

streaming不会时有发生重复的header数据。

方案四:web socket

WebSocket和价值观的tcp
socket连接相似,也是依照tcp协议,提供双向的数据通道。WebSocket优势在于提供了message的概念,比基于字节流的tcp
socket使用更简明,同时又提供了价值观的http所贫乏的长连接功效。但是WebSocket相对较新,贰零壹零年才起草,并不是具有的浏览器都提供了支撑。各大浏览器厂商最新的版本都提供了支持。

解决head of line blocking

Head of line
blocking(以下简称为holb)是http2.0事先网络体验的最大祸源。健康的请求会被不正规的乞请影响,而且那种经验的花费受互连网环境影响,出现随机且难以监察和控制。为了消除holb带来的推迟,协议设计者设计了一种新的pipelining机制。

皇家赌场手机版 22

只是pipelining并不是耶稣,它也设有许多弱点:

pipelining只可以适用于http1.1,一般的话,协理http1.1的server都须求帮助pipelining。

唯有幂等的呼吁能运用pipelining,非幂等请求比如POST无法动用,因为请求之间大概会存在程序注重关系。

head of line
blocking并不曾完全获得缓解,server的response照旧讲求各种再次回到,遵从FIFO(first
in first
out)原则。也等于说假设请求1的response没有回到,2,3,4,5的response也不会被送重临。

四头的http代理服务器不协理pipelining。

和不帮助pipelining的老服务器协商有标题。

或是会招致新的Front of queue blocking难题。

幸亏因为有这么多的题材,各大浏览器厂商依旧是历来就不扶助pipelining,要么正是默许关掉了pipelining机制,而且启用的规则万分严峻。能够参见chrome对于pipeling的标题讲述。

HTTP2的优势

二进制分帧

http1.x出生的时候是公开协议,其格式由三片段构成:start line(request
line恐怕status
line),header,body。要辨识这3有个别就要做协议分析,http1.x的辨析是依照文本。基于文本协议的格式解析存在先特性缺陷,文本的表现方式有多样性,要到位健壮性考虑的风貌必然很多,二进制则差异,只认0和1的重组。基于那种考虑http2.0的协商分析决定使用二进制格式,达成方便人民群众且健壮。

http2.0用binary格式定义了贰个1个的frame,和http1.x的格式比较如下图:

皇家赌场手机版 23

http2.0的格式定义更近乎tcp层的方法,那张二机制的方法特别连忙且精简。

length定义了全方位frame的启幕到结束

type定义frame的类型

flags用bit位定义一些器重的参数

stream id用作流控制

payload便是request的正文了

缘何么能在不改变 HTTP/1.x 的语义、方法、状态码、U本田CR-VI 以及首部字段…..
的情景下, HTTP/2 是如何做到「突破 HTTP1.1
的品质限制,立异传输质量,实现低顺延和高吞吐量」?

首要之一正是在 应用层和传输层(TCP or UDP)之间扩大叁个二进制分帧层。

在二进制分帧层中, HTTP/2
会将兼具传输的音讯分割为更小的音讯和帧,并对它们采纳二进制格式的编码
,个中 HTTP1.x 的首部新闻会被打包到 HEADE普拉多 frame,而相应的 Request Body
则封装到 DATA frame 里面。

皇家赌场手机版 24

HTTP/2 通信都在一个接连上做到,这几个一而再能够承接任意数量的双向数据流。

在过去,HTTP 质量优化的重点并不在于高带宽,而是低延迟。TCP
连接会趁着年华开始展览本身「调谐」,开头会限制连接的最大速度,假诺数量成功传输,会趁机时间的延迟进步传输的快慢。那种协调则被喻为
TCP
慢运行。具体复习:《再深谈TCP/IP三步握手&四步挥手原理及衍生难点—长文解剖IP》、《从网卡发送数据再谈TCP/IP协议—网络传输速度总计-网卡构造》

鉴于那种原因,让原本就有着突发性和短时性的 HTTP 连接变的不行不算。

HTTP/2 通过让具有数据流共用同多少个连接,能够更实惠地行使 TCP
连接,让高带宽也能确实的劳动于 HTTP 的品质提高。

总结:

单连接多财富的不二法门,收缩服务端的链接压力,内存占用更少,连接吞吐量更大

是因为 TCP
连接的滑坡而使互连网堵塞情况能够革新,同时慢运行时间的回落,使拥挤堵塞和丢包复苏速度更快

皇家赌场手机版 25

多路复用 (Multiplexing)||连接共享

多路复用允许同时经过单一的 HTTP/2 连接发起多重的伸手-响应音讯。

家喻户晓 ,在 HTTP/1.1 协议中
「浏览器客户端在同近期间,针对同一域名下的请求有必然数额限制。超越限定数量的乞请会被封堵」。

Clients that use persistent connections SHOULD limit the number of
simultaneous connections that they maintain to a given server. A
single-user client SHOULD NOT maintain more than 2 connections with any
server or proxy. A proxy SHOULD use up to 2*N connections to another
server or proxy, where N is the number of simultaneously active users.
These guidelines are intended to improve HTTP response times and avoid
congestion.

source:RFC-2616-8.1.4 Practical Considerations

诸如TCP建立连接时一回握手有1.五个OdysseyTT(round-trip
time)的延迟,为了幸免每一遍请求的都经历握手带来的推移,应用层会选取不一致政策的http长链接方案。又比如说TCP在建立连接的中期有慢运维(slow
start)的性情,所以连日来的录用总是比新建连接属性要好

下图总计了不相同浏览器对该限制的数额。

来源:Roundup on Parallel Connections

皇家赌场手机版 26

那也是为什么一些站点会有多个静态能源 CDN 域名的原故之一

地方协议分析中关系的stream id就是作为连接共享机制的:

几个request对应一个stream并分配二个id,那样三个连连上得以有四个stream,每一种stream的frame能够专断的名不副实在一块,接收方可以依据stream
id将frame再归属到各自差异的request里面。因此 HTTP/2
能多路复用(Multiplexing) ,允许同时经过单一的 HTTP/2
连接发起多重的请求-响应消息。

皇家赌场手机版 27

因而 HTTP/2 能够很简单的去落到实处多流并行而不用重视建立四个 TCP
连接,HTTP/2 把 HTTP
协议通讯的主导单位压缩为三个三个的帧,这么些帧对应着逻辑流中的消息。并行地在同多个TCP 连接上双向交流消息。

眼前还波及过接二连三共享之后,必要优先级和乞请依赖的建制同盟才能一蹴而就重庆大学请求被封堵的问题。http2.0里的每种stream都能够设置又优先级和凭借(Dependency)。优先级高的stream会被server优先处理和重返给客户端,stream还足以重视别的的sub
streams。优先级和依靠都是能够动态调整的。动态调整在多少场景下很有用,假想用户在用你的app浏览商品的时候,飞速的滑行到了货物列表的最底层,但日前的伸手头阵出,借使不把前边的请求优先级设高,用户眼下浏览的图形要到最后才能下载达成,显著体验没有安装优先级好。同理重视在多少场景下也有妙用。

首部减弱(Header Compression)

http1.x的header由于cookie和user agent很不难膨胀,而且每一遍都要再一次发送。

HTTP/1.1并不协理 HTTP 首部压缩,为此 SPDY 和 HTTP/2 应运而生

此地普及一个小知识点。以往大家都知道tcp有slow
start的风味,一次握手之后初叶发送tcp
segment,第3回能发送的远非被ack的segment数量是由initial tcp
window大小决定的。那几个initial tcp
window根据平台的兑现会有出入,但貌似是1个segment也许是4k的深浅(3个segment大致是1500个字节),约等于说当你发送的包大小超过那个值的时候,要等前面包车型地铁包被ack之后才能发送后续的包,鲜明这种气象下延迟更高。intial
window也并不是越大越好,太大会导致互连网节点的鸿沟,丢包率就会扩展,具体细节能够参考IETF那篇小说。http的header以后暴涨到有大概会超过这一个intial
window的值了,所以更显示压缩header的首要。

压缩算法的取舍

SPDY/2使用的是gzip压缩算法,但后来面世的三种攻击格局BREACH和C中华VIME使得即便走ssl的SPDY也足以被破解内容,最终归结考虑选取的是一种叫HPACK的压缩算法。那多少个漏洞和连锁算法能够点击链接查看更加多的底细,不过那种漏洞主要存在于浏览器端,因为须求经过javascript来注入内容并察看payload的变更。

于今SPDY 使用的是通用的DEFLATE算法,而 HTTP/2
则应用了特别为首部压缩而设计的HPACK算法。

http2.0利用encoder来减弱供给传输的header大小,通信双方分别cache一份header
田野s表,既防止了再也header的传输,又减小了特殊要求传输的轻重缓急。高效的压缩算法能够一点都不小的压缩header,减弱发送包的多寡从而下跌延迟。

皇家赌场手机版 28

服务端推送(Server Push)

服务端推送是一种在客户端请求之前发送数据的机制。在 HTTP/第22中学,服务器能够对客户端的2个伸手发送四个响应。Server Push 让 HTTP1.x
时日使用内嵌财富的优化手段变得没有意义;假若2个伸手是由你的主页发起的,服务器很恐怕会响应主页内容、logo
以及样式表,因为它知道客户端会用到那些事物。这一定于在二个 HTML
文档内集合了拥有的财富,但是与之比较,服务器推送还有二个十分大的优势:能够缓存!也让在依据同源的图景下,不一致页面之间能够共享缓存财富成为或者。

皇家赌场手机版 29

http2.0引入RST_STREAM类型的frame,能够在不断开连接的前提下撤销某些request的stream,表现更好。

重置连接表现更好

成都百货上千app客户端都有撤消图片下载的职能场景,对于http1.x来说,是经过设置tcp
segment里的reset
flag来公告对端关闭连接的。那种措施会一向断开连接,下次再发请求就无法不再度建立连接。http2.0引入大切诺基ST_STREAM类型的frame,能够在相连开连接的前提下废除有个别request的stream,表现更好。

流量控制(Flow Control)

TCP协议通过sliding window的算法来做流量控制。发送方有个sending
window,接收方有receive window。http2.0的flow control是看似receive
window的做法,数据的接收方通过报告对方本人的flow
window大小表明自个儿还还可以多少数量。只有Data类型的frame才有flow
control的效应。对于flow control,假如接收方在flow
window为零的动静下依然愈多的frame,则会回来block类型的frame,那张场景一般注解http2.0的配备出了难点。

更安全的SSL

HTTP2.0应用了tls的拓展ALPN来做协议升级,除此之外加密那块还有七个改成,HTTP2.0对tls的安全性做了近一步压实,通过黑名单机制禁止使用了几百种不再安全的加密算法,一些加密算法恐怕还在被持续利用。借使在ssl协商进度其中,客户端和server的cipher
suite没有交集,直接就会促成协商未果,从而请求战败。在server端铺排http2.0的时候要尤其注意那或多或少。

关于 HTTP/2 的 Server Push 以及 HTTP/2 的缓存策略

典型难点:

「假使客户端早已在缓存中有了一份 copy 怎么办?」还要 Push 吗?

详情参见另三个答案:

HTTP/2 对现行反革命的网页访问,有啥样大的优化呢?浮以后怎么着地点

PS:

强烈推荐阅读 Mark Nottingham 在Velocity Beijing 2015皇家赌场手机版 ,的
speech:HTTP/2 for Front-End Developers,关于 HTTP/2
下的前端品质优化相关。

Slide 地址:HTTP/2 for Front-End Developers

依据OSI互连网分层模型,IP是互联网层协议,TCP是传输层协议,而HTTP是应用层的合计。在那三者之间,SPDY和WebSocket都以与HTTP相关的说道,而TCP是HTTP底层的说道。

HTTP2的前行历史

一、http

HTTP协议通过多年的行使,发现了部分相差,首假如性质方面包车型地铁,包涵:

HTTP的连九歌题,HTTP客户端和服务器之间的相互是运用请求/应答形式,在客户端请求时,会树立三个HTTP连接,然后发送请求音讯,服务端给出应答新闻,然后连接就关闭了。(后来的HTTP1.1协理持久连接)

因为TCP连接的建立过程是有付出的,假诺应用了SSL/TLS费用就更大。

在浏览器里,二个网页包涵众多财富,蕴涵HTML,CSS,JavaScript,图片等等,那样在加载2个网页时要同时打开连接受同一服务器的两个一连。

HTTP音信头难题,以往的客户端会发送多量的HTTP音讯头,由于二个网页只怕必要50-九十八个请求,就会有相当的大的音信头的数据量。

HTTP通讯格局难题,HTTP的央浼/应答格局的对话都是客户端发起的,缺少服务器布告客户端的建制,在急需通告的意况,如聊天室,游戏,客户端应用须求不停地轮询服务器。

而SPDY和WebSocket是从不一致的角度来消除那个不足中的一有个别。除了那多少个技巧,还有其余技术也在针对那几个不足建议立异。

二、SPDY

SPDY的严重性指标是压缩四分之二上述的页面加载时间,然则呢不扩充安插的复杂,不影响客户端和服务端的Web应用,只供给浏览器和Web服务器帮忙SPDY。重要有以下几:

多路复用,1个TCP连接上同时跑三个HTTP请求。请求可设定优先级。

除去不须要的HTTP头,压缩HTTP头,以减小供给的网络带宽。

行使了SSL作为传输协议提供数据安全。

对传输的数据应用gzip举办压缩

提供服务方发起通讯,并向客户端推送数据的机制。

实质上,SPDY正是想不影响HTTP语义的状态下,替换HTTP底层传输的协议来增长速度页面加载时间。

SPDY的消除办法正是布署了2个会话层协议–帧协议,消除多路复用,优先级等题材,然后在其上贯彻了HTTP的语义。

SPDY的出世和展现表明了两件事情:一是在存活互联网设备基础和http协议广泛应用的前提下,是足以经过修改协议层来优化http1.x的。二是针对性http1.x的改动确实效果明摆着而且产业界反馈很好。正是那两点让IETF(Internet
Enginerring Task
Force)开头正儿八经考虑制定HTTP2.0的安排,最后决定以SPDY/3为蓝图起草HTTP2.0,SPDY的有的统一筹划人士也被邀请参与了HTTP2.0的陈设。

三、WebSocket

WebSocket则提供利用3个TCP连接举行双向通信的编写制定,包罗互连网协议和API,以替代网页和服务器采纳HTTP轮询举行双向通信的机制。

实为上来说,WebSocket是不压制HTTP协议的,不过由于现存多量的HTTP基础设备,代理,过滤,身份注明等等,WebSocket借用HTTP和HTTPS的端口。

出于选择HTTP的端口,因而TCP连接建立后的握手音信是依据HTTP的,由服务器判断那是五个HTTP协议,照旧WebSocket协和式飞机。
WebSocket连接除了创设和关闭时的握手,数据传输和HTTP没丁点关系了。

WebSocket也有本身一套帧协议。

四、SPDY和WebSocket的关系

SPDY和WebSocket的涉及比较复杂。

补给关系,二者关键性不一致。SPDY更注重于给Web页面包车型大巴加载提速,而WebSocket更强调为Web应用提供一种双向的通信机制以及API。

竞争关系,二者消除的题材有搅和,比如在服务器推送上SPDY和WebSocket都提供了方案。

承前启后关系,试想,假如SPDY的尺码早于WebSocket,WebSocket完全能够侧重于API,利用SPDY的帧机制和多路复用机制落到实处该API。
谷歌(Google)建议草案,说WebSocket能够跑在SPDY之上。WebSocket的连年建立在SPDY的流之上,将WebSocket的帧映射到SPDY的帧上。

众擎易举关系,如微软在HTTP Speed+Mobility中所做的。

http2的竞争兄弟

  1. HTTP Speed+Mobility

再有叁个幽默的技巧叫做HTTP Speed+Mobility,和SPDY一样都以HTTP
2.0规范的竞争者,HTTP Speed+Mobility来自微软。HTTP
SM借鉴了SPDY和WebSocket的说道,将双边揉为一体,又富有取舍。

HTTP SM的安顿性条件包含:

保存HTTP的语义,那一点和SPDY一致,但也正应这么,放任了SPDY里的ServerPush。

遵从分层的互连网架构,TCP能做的,HTTP SM不做,因而去除了SPDY的流控。

接纳现有标准,因而利用HTTP/1.1 Upgrade
header机制,借用了WebSocket的抓手提式有线电话机制和帧格式。

客户端驾驭内容的支配,由此不强制行使压缩和SSL/TLS。

设想到网络的资费和电力,这一点考虑到了运动装备以及物联网,提供了Credit
Control机制。

HTTP SM分以下几层:

会话层和帧协议,这一部分取自WebSocket协议。包罗握手提式有线话机制,以及帧格式。

流层,这一部分重点借鉴SPDY,包含多路复用,流优先级,但扩大了Credit
Control。那部分作为 WebSocket共同商议的恢弘。

HTTP层,在流层上贯彻HTTP语义,那部分也借鉴自SPDY。

  1. Network-Friendly HTTP

NF是HTTP 2.0候选方案之一,主要建议以下立异:

对HTTP头的称呼进行二进制编码

对通用HTTP头实行分组

恳请/应答的多路复用

支行模型

NF同样定义了帧和流,

  1. WAKA

WAKA也是HTTP 2.0候选方案之一,是HTTP协议原文者罗伊Fielding建议的2个提案。

WAKA扶助多路复用,扶助先行级。WAKA提议了三个新的HTTP方法,RENDESportage和MONITOPAJERO。

参考资料:

Gitbook 《HTTP2 讲解》 by Calvin Zhang and Simon Xia:http2讲解 –
GitBook

HTTPS、SPDY 以及 HTTP/2 质量简单相比较:A Simple Performance Comparison of
HTTPS, SPDY and HTTP/2

HTTP/2 的缩减算法–HPACK:HPACK: Header Compression for HTTP/2

NGINX HTTP/2
白皮书:

NGINX Blog–升高 HTTP/2 品质的 柒个小提议:

7 Tips for Faster HTTP/2 Performance

[译]使用HTTP/2升高质量的多少个建议

HTTP/2 for a Faster Web

O’Reilly
HTTP2-high-perf-browser-networking:

HTTP/2 新天性浅析:HTTP/2 新特色浅析

凯文 blog 关于 HTTP/2 的比比皆是归档:HTTP/2 | Kevin岳父的网志

Can i use 上有关协助HTTP/2 的浏览器:Can I use… Support tables for
HTML5, CSS3, etc

本文重要内容来自:《HTTP 2.0的那一个事》

小说由笔者精炼而成,原著:再谈HTTP2质量提高之背后原理-HTTP2历史解剖 –
Network – 周海军的个人网站

Leave a Comment.