首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊http/2

聊聊http/2

作者头像
IMWeb前端团队
发布2018-01-08 17:03:51
6630
发布2018-01-08 17:03:51
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队

本文作者:IMWeb 九月 原文出处:IMWeb社区 未经同意,禁止转载

随着web的发展,http/1.x 已经很难满足现在的需求,Google 因此开发了 SPDY 作为尝试, http/2 在此基础上应运而生。 此外,Google 已经宣布,2016年移除 Chrome 里对 SPDY 和 NPN 的支持,到此这个实验性的项目也算是功德圆满,可以寿终正寝了,在此不表。

命名

Is it HTTP/2.0 or HTTP/2?

The Working Group decided to drop the minor version (“.0”) because it has caused a lot of confusion in HTTP/1.x. In other words, the HTTP version only indicates wire compatibility, not feature sets or “marketing.”

参考 http://http2.github.io/faq/#is-it-http20-or-http2

rfc2616rfc7540

如果要说 http/1.1 最大的改进,大概要算 长连接 吧,而 http/2 的改进则更多一点:

  1. 使用二进制传输,取代之前的文本传输
  2. 连接复用(多路复用),并行
  3. 协议握手改进(ALPN)
  4. 重置(RST_STREAM)
  5. 优先级和依赖性
  6. Header 压缩
  7. 服务器推
  8. 流量控制

另外,关于 ALPN 和 NPN 可以参考 https://zlb.me/2013/07/19/npn-and-alpn/

http 还是 https

足够的关注使得 http2 在 TLS 上得以正常运作,SPDY 只支持 TLS,所以按理说TLS也应成为 http2 必需的组件,但出乎意料的是 http2 仅将TLS作为可选部分。然而,全球两大浏览器领导者 - Firefox和Chrome明确地表示,他们只实现基于TLS的http2。虽然有些浏览器厂商的发言人宣称他们不会实现这种 http2 会话方式,但IE团队已公开表示他们会实现,与此同时,curl已经支持该方式

只选择 TLS 的原因包括了保护用户隐私(妈妈再也不用担心运营商劫持了),早期的评估结果表明,将新的协议建立在 TLS 上(443端口)更可能成功。这也是因为所有来自80端口的流量都会被当作HTTP 1.1或者是其某个变种,而不是另外一个种全新的协议。

关于 ssl/tls,参考:http://drops.wooyun.org/tips/6002

支持情况

说来这么多,最关心的还是这货现在能不能用,答案是肯定的,不信你去看看 twitter.com (骗你的,这网站根本就不存在)

服务器支持

参考: https://github.com/http2/http2-spec/wiki/Implementations 很遗憾,到目前为止 nginxapache httpd 还不支持

浏览器支持

参考:http://caniuse.com/#feat=http2 看起来挺美好的,最新版本都支持了,然并卵:

  1. 兼容怎么办?
  2. 怎么升级?
  3. 切换到 https 会遇到什么问题?性能上会有多大影响?
  4. 合并打包策略还适用吗?
  5. 缓存策略是否依然有效?
  6. ...

参考:

  1. http://http2.github.io/
  2. https://www.gitbook.com/book/ye11ow/http2-explained/details
  3. https://github.com/http2/http2-spec/wiki/Implementations
  4. https://github.com/http2/http2-spec
  5. http://tools.ietf.org/html/rfc2616
  6. http://tools.ietf.org/html/rfc7540
  7. http://tools.ietf.org/html/rfc7301
  8. http://caniuse.com/#feat=http2
  9. https://zlb.me/2013/07/19/npn-and-alpn/
  10. http://tools.ietf.org/id/draft-agl-tls-nextprotoneg-03.html
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命名
    • Is it HTTP/2.0 or HTTP/2?
    • 从 rfc2616 到 rfc7540
    • http 还是 https
    • 支持情况
      • 服务器支持
        • 浏览器支持
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档