You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
android-notes/PPT/深入理解 HTTP
Omooo e31765de8f Update README.md 5 years ago
..
README.md Update README.md 5 years ago
深入理解 HTTP【Keynote 版】.key add 深入理解 HTTP 5 years ago
深入理解 HTTP【PDF 版】.pdf add 深入理解 HTTP 5 years ago

README.md

深入理解 HTTP,从 HTTP/1.x 到 HTTP/3

本篇是这次分享的大纲,PTT 以及相关资源都放到文末了。

这次给大家带来的分享主题是,深入理解 HTTP,从 HTTP/1.x 到 HTTP/3。

HTTP 是应用层最常见的协议,本次分享先从大家最熟悉也是应用最广泛的 HTTP/1.x 开始,再到大幅度改善性能的 HTTP/2,最后再到未来发展趋势的 HTTP/3。

在 20 世界 90 年代初期,互联网世界还很匮乏,计算机处理能力低、存储容量有限,网上的资源大多都是纯文本。这一时期的 HTTP 被定义为 0.9 版本,它只支持 "Get" 式的从服务端获取 HTML 文本。需要特殊说明的是,0.9 版本并不是一个正式版本。

在 1996 年,正式发布了 HTTP/1.0,它是一个互联网标准。它引入了:

  • 增加了 HEAD、POST 等方法
  • 增加了相应状态码,标记可能的错误原因
  • 引入了协议版本号的概念
  • 引入了 HTTP Header 的概念,让 HTTP 处理请求和响应更加灵活
  • 传输的数据不再仅限于文本

HTTP/1.0 已经有现代 HTTP 的雏形了,但是随着互联网的发展,各种图片、音视频格式的出现,HTTP/1.0 显然已不能满足需求,同时还有短连接造成巨大的性能损耗,没多久,HTTP/1.1 发布,它有以下特点:

  • 增加了 PUT、DELETE 等新方法
  • 增加了缓存管理和控制
  • 长连接
  • 允许响应数据分块(chunked)
  • 强制要求 Host 头部,让互联网主机托管成为可能

现在广泛使用的版本就是 HTTP/1.1,很难想象,这竟然是一个二十多年前的版本。

HTTP 基于请求响应模型,这就导致应用层面的队头阻塞问题,同时并未对 Header 头部进行压缩,当携带大量头部数据,比如 Cookie 时,传输效率自然不堪。

Google 率先发布了 SPDY 协议,后续 IETF 组织在 SPDY 协议的基础上,在 2015 年正式发布 HTTP/2,此时 HTTP 已经没有小版本号的概念了。HTTP/2 增加了一下特性:

  • 多路复用
  • 二进制分帧层,不再是纯文本
  • 头部压缩 HPACK 算法
  • 请求优先级
  • 服务器推送
  • 增强了安全性,“事实上” 的加密通信

但是 HTTP/2 只是在应用层解决了由请求响应模型造成的队头阻塞问题,并未解决在传输层由于 TCP 必须保证资源有序到达所带来的 TCP 队头阻塞问题,那该怎么办呢?

那就把 TCP 换掉咯?emmm,HTTP/3 正是这样做的,HTTP/3 底层不再依赖于 TCP,而是 UDP。目前 HTTP/3 正处于草案阶段,它带来了以下特性:

  • 减少了 TCP 三次握手及 TLS 握手时间
  • 改进了拥塞控制
  • 避免队头阻塞的多路复用
  • 连接迁移
  • 前向冗余纠错

资源下载:

PTT

参考书籍