Binary Frames

HTTP2 在TCP层之上 HTTP下增加了Binary Frames协议, 基于该协议HTTP Request/Response 可以被分拆成由Frame组成的Stream在TCP上传输。

Header Compression -- HPACK

使用HPACk压缩http header成二进制格式,使用静态和动态索引表来压缩Header内容。 对动态header value使用huffman算法编码成二进制格式。

详细信息可以参考:

Static Table Definition -- http://http2.github.io/http2-spec/compression.html#static.table.definition

Huffman Coding -- http://http2.github.io/http2-spec/compression.html#huffman.code

Stream & Multipexing

在同一条TCP链路上可以根据Stream的优先级,并发的错序发送不同Stream Frames

Server Push

Server可以就一个请求主动推送多个应答给客户端

Q&A

Browser和Web Server如何协商Http协议?

HTTP2 SPEC 3.2 介绍了Client应该如何使用Http的Upgrade头域协商Http协议从1到2的升级。

For example,

1. Client to Server

     GET / HTTP/1.1
Host: server.example.com
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings: <base64url encoding of HTTP/2 SETTINGS payload>

2. Server to Client

  If YES for upgrading to HTTP/2,

   HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c [ HTTP/2 connection ...

  If NO for upgrading to HTTP/2

  

     HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html ...

借用Jerry Qu那个博客的总结,大概应该是这样:Browser使用Http1来问Server能不能Upgrade 到 h2c(httpd2), 如果可以,Server 就用http1.1回一个101,表示我能,那么接下来Browser就可以使用http2和Server通信,否则Server就回一个200,继续走http1咯。。。

Server Push如何工作?

HTTP/2 Server Push 定义讨论了Server Push的功能规范,但是没有具体讨论什么时候该如何使用该功能。

Jerry Qu的这篇博客就如何使用Server Push功能的进行了简单讨论。正如博客所说,具体的做法有很多种,比如Server端定义一些策略或通过学习来决定什么时候如何发送Push Response。另外就是客户端可以使用x-push-serve头域来请求Sever端应该使用Push方法发送应答。

参考

0. HTTP 2

https://hpbn.co/http2/

1. HTTP2 RFC

https://tools.ietf.org/html/rfc7540#page-12

2. HPACK

http://http2.github.io/http2-spec/compression.html

HTTP/2 带来的新颖的更多相关文章

  1. 浅谈短视频APP的发展趋势

    2014年6月20日,在AppAnnie最新发布5月应用指数中,美拍荣登“非游戏类iOS榜单”全球下载量第一位置,成为全球iOS应用商店最热门APP.能在<AppAnnie应用指数>这份A ...

  2. C++如何解析函数调用

    C语言是一个简单的语言.用户针对每一个函数,只能设置一个唯一的函数签名.但是C++而言,就给了我们很多的灵活性: 你可以将多个函数设置为相同的名字(overloading) 你可以使用内置操作符重载( ...

  3. 【转】如何建立一个样式新颖的CSS3搜索框

    在线演示 搜索框大概是web开发中最常用的UI元素之一,我想基本没有必要去介绍如何使用它.无论是网站还是web应用,都会为了增强用户体验而添加它,那么你是不是也想过设计一个别致的搜索框? 在今天的文章 ...

  4. 新颖的O2O商业模式,江水平和他的装修队

    文/秦刚 江水平是我微信上的朋友,有一天他给我留言说,秦刚老师我觉得你应该采访我,因为我的商业模式非常新颖有趣,应该能够给很多创业者启发. 我让江水平把他的商业模式写给我,他效率很高,一天就写好给我了 ...

  5. OLED带来全新视觉体验

    2013年1月,在国际消费电子展(CES)上世界首款曲面OLED电视--LG OLED电视亮相,LG Display将曲面与OLED完美结合的面板技术让显示设备的外观和品质都达到了一个全新的高度,惊艳 ...

  6. .NET 4.6.2正式发布带来众多特性

    虽然大多数人的注意力都集中在.NET Core上,但与原来的.NET Framework相关的工作还在继续..NET Framework 4.6.2正式版已于近日发布,其重点是安全和WinForms/ ...

  7. float---浮动带来的影响与清除浮动带来的影响方法----在路上(20)

    使用float会带来哪些影响: 脱标:无行级块级之分: 相互贴靠:若想之间有空隙可用margin与padding: 顶边对齐: 文字环绕: 当使用float后,子标签脱离父标签,父标签就会失去高度,此 ...

  8. 日常css技巧小结(2)-- inline-block带来的迷惑

    一.问题描述 在平时布局中,inline-block使用的频率比很高,主要是因为可以让行标签设置宽高.我在布局过程中,发现了两个“问题”, 1行标签.display:inline-block之后的行标 ...

  9. Node.js 给前端带来了什么

    在软件开发领域,前端工程师曾经是一个比较纠结的职业.在Web技术真正发展起来之前的相当长一段时间里,由于技术门槛很低,前端工程师行业一直是鱼龙混杂的状态.其中很多号称是Web开发者的人实际上并没有什么 ...

随机推荐

  1. ORA-09817

    连接数据库的时候报:ORA-09817:write to audit file,在网上搜索了下,发现时oracle安装目录下面的磁盘空间不够,有不少人给出了解决办法,下面即是一例: 连接oracle  ...

  2. android锁屏软件制作

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mingyue_1128/article/details/33726515 转载请标明出处http:/ ...

  3. 设计模式-(6)适配器 (swift版)

    用来解决接口适配问题的三种模式:适配器模式,桥接模式,外观模式. 一,概念 适配器模式,将一个类的结构转换成用户希望的另一个接口,使得原本接口不兼容的类能在一起工作.换句话说,适配器模式就是链接两种不 ...

  4. mysql03---触发器

    触发器trigger:某条数据改变,希望其他数据也改变(一张表的数据改变,另一张表的数据也变).监测insert,update,delete.能够监测增删改并出发增删改. 监测点(table)监测事件 ...

  5. USACO35 翻转奶牛(尺取法)

    通过这道题了解了不少有关翻转的知识呢...... 首先,我们枚举翻转的区间长度k,假设i有个按钮,按下就可以让i~i+k-1翻转,那就有两个状态,按i或不按i(因为按两次相当于没按),那就往后扫一遍, ...

  6. WdatePicker.js的使用方法(转)

    WdatePicker.js的使用方法 博客分类: 其他   1. 跨无限级框架显示 无论你把日期控件放在哪里,你都不需要担心会被外层的iframe所遮挡进而影响客户体验,因为My97日期控件是可以跨 ...

  7. android ndk环境搭建,如果是mac,请先装mac make编译器(可以使用Xcode进行安装)

    Android SDK:android-sdk-mac_86Android NDK: android-ndk-r4b-darwin-x86EclipseADTCDTANT搭建Android SDK开发 ...

  8. GIT+Gitolite+Gerrit 环境搭建 ***

    系统环境:Ubuntu12.04 服务器上安装git+gitolite+gitweb root@server: 为搭建git服务器终端,假设ID为 192.168.199.117 或域名为: http ...

  9. hdu 3333(树状数组 + 离线操作)

    Turing Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. vertical-align 和line-height 以及baseline的解析

    line-height是相对于font-size来计算的,vertical-align的百分比值是相对于line-height来计算的,vertical-align的默认是baseline; demo ...