美文网首页
简易认知:HTTP、HTTPS、SPDY、HTTP2

简易认知:HTTP、HTTPS、SPDY、HTTP2

作者: 卡门001 | 来源:发表于2020-09-04 10:10 被阅读0次

HTTP 0.9

HTTP0.9 只支持一种方法—— Get,请求只有一行。

HTTP 1.0

HTTP1.0 版本发布,大大丰富了 HTTP 的传输内容,除了文字,还可以发送图片、视频等,这为互联网的发展奠定了基础。

  • 2.1 GET hello.html HTTP1.0
  • 2.2 User-Agent:NCSA_Mosaic2.0(Windows3.1)
  • 2.3 200 OK
  • 2.4 Date: Tue, 15 Nov 1996 08:12:31 GMT
  • 2.5 Server: CERN3.0 libwww2.17
  • 2.6 Content-Type: texthtml
  • 2.7 body
    <HTML>
        一个包含图片的页面
           <IMGSRCIMGSRC="smile.gif">
      <HTML>

HTTP 1.1

HTTP1.1 - 作为一个目前使用最广泛的协议版本

  • 3.1 可以复用连接
  • 3.2 增加 pipeline(只有幂等的请求可以使用 pipeline)
  • 3.3 chunked 编码传输
  • 3.4 etag,cache-control等缓存
  • 3.5 引入内容协商机制,包括语言,编码,类型等
  • 3.6 请求消息和响应消息都支持 Host 头域
  • 3.7 新增了 OPTIONS,PUT, DELETE, TRACE, CONNECT 方法

缺点

  • 在传输数据时,每次都要重新建立连接,对移动端特别不友好
  • 传输内容是明文,不够安全
  • header 内容过大,每次请求 header 变化不大,造成浪费
  • keep-alive 给服务端带来性能压力

HTTPS

HTTPS 是以安全为目标的 HTTP 通道,在HTTP下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

  • 4.1 一种是建立一个信息安全通道,保证数据传输的安全
  • 4.2 另一种就是确认网站的真实性( ca 申请证书)

SPDY

SPDY - SPDY 并不是新的一种协议,而是在 HTTP 之前做了一层会话层

  • 5.1 页面加载时间 (PLT) 减少 50%。
  • 5.2 无需网站作者修改任何内容,将部署复杂性降至最低,无需变更网络基础设施
  • 5.3 与开源社区合作开发这个新协议
  • 5.4 收集真实性能数据,验证这个实验性协议是否有效

SPDY 引入了一个新的二进制分帧数据层,以实现多向请求和响应、优先次序、最小化及消除不必要的网络延迟,目的是更有效地利用底层 TCP 连接。

HTTP2

HTTP/2 于 2015 年标准化,主要目的是优化性能。其特性如下:

  • 6.1 使用二进制分帧层
    在应用层与传输层之间增加一个二进制分帧层,以此达到在不改动 HTTP 的语义,HTTP 方法、状态码、URI 及首部字段的情况下,突破HTTP1.1 的性能限制,改进传输性能,实现低延迟和高吞吐量。

  • 6.2 多路复用(Multiplexing)
    对带宽的利用率不够,HTTP2.0 采用了多路复用的方式,可以并行发送多个请求,提高对带宽的利用率

    • 6.3 数据流优先级
  • 在多路并发处理中,HTTP2.0 对数据流可以设置优先值,这个优先值决定了客户端和服务端处理不同的流采用不同的优先级策略。

  • 取消某个正在传输的数据流(通过发送 RST_STREAM 帧),而不关闭 TCP 连接
    tips

    • 它允许服务端将资源推送到客户端缓存,我们访问淘宝等网站时,经常会发现很多请求的请求头部分会提示“provisional headers are shown”,这通常就是直接从缓存加载了资源,因此请求根本没有被发送。观察 Chrome Network 的 Size 列,这种请求的该字段一般都是 from disk cache 或者 from memroy cache.
      Chrome 可以通过 F2(开发工具)- Networ-Status选中(Protocol与Scheme)


      image.png
从使用 Chrome 查看,目前主流网站基本都已经部分使用了 HTTP/2:
知乎、bilibili、GIthub 使用了 wss 协议。

也有很多网站使用了 SSE(格式如 data:image/png;base64,<base64 string>)

而且很多网站都有使用 HTTP/2 + QUIC,该协议的新名称是 HTTP/3,它是基于 UDP 的 HTTP 协议。
  • 6.4 服务端推送

    • 服务端推送在http1.x使采用websocket)
    • 2.0直接由浏览器自动完成,该推送对 Web App 是隐藏的,由浏览器处理)
  • 6.5 头部压缩

    • HTTP/2 的消息头使用二进制格式,而非文本格式
    • 使用专门设计的 HPack 算法压缩, 使用首部表来跟踪和存储之前发送的键值对,对于相同的内容,不会再每次请求和响应时发送。

HTTP/2.0 与 SPDY 不同的地方,主要有如下两

  • HTTP2.0 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPS。
  • HTTP2.0 消息头的压缩算法采用 HPACK,而非 SPDY 采用的 DEFLATE。

相关文章

  • 简易认知:HTTP、HTTPS、SPDY、HTTP2

    HTTP 0.9 HTTP0.9 只支持一种方法—— Get,请求只有一行。 HTTP 1.0 HTTP1.0 版...

  • http2 协议

    http2 协议 HTTP/2 源自 SPDY/2,正式版http2规格标准叫做RFC 7540,发布于2015年...

  • OkHttp - 源码解析

    特点:支持HTTP2/SPDY黑科技(Http2 优化了头部压缩,多路复用多个http请求共用一个TCP连接)so...

  • 2015年值得关注的几个WEB技术

    HTTP2 HTTP2在今年中应该就可以定稿,这无疑是web界的一个大事。HTTP2从google的SPDY中借鉴...

  • 最新关注IT技术

    一、通信协议 SPDY HTTP / 2 gRPC over HTTP2 (google)不同于REST 二、移动...

  • Http Https SPDY

    HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事 HTTP2.0的奇妙日常 淘宝全站HTTPS实践...

  • OkHttp和android网络请求框架的几种对比

    okhttp是高性能的http库,支持同步、异步,而且实现了spdy、http2、websocket协议,api很...

  • OKHttp3源码阅读

    OKHttp牛逼之处 1.支持HTTP2/SPDY黑科技 --->okHttp中分包就分为Http1 和Http2...

  • Okhttp操作文档

    Okhttp介绍 OkHttp是一个高效的Http客户端,有如下的特点: 支持HTTP2/SPDY黑科技 sock...

  • OkHttp源码解析

    OkHttp优点 OkHttp是一个高效的Http客户端,有如下的特点: 支持HTTP2/SPDY黑科技 sock...

网友评论

      本文标题:简易认知:HTTP、HTTPS、SPDY、HTTP2

      本文链接:https://www.haomeiwen.com/subject/ydxzsktx.html