书籍详情
《HTTP》[37M]百度网盘|亲测有效|pdf下载
  • HTTP

  • 出版社:电子工业出版社
  • 出版时间:2020-07
  • 热度:6942
  • 上架时间:2024-06-30 09:08:33
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

编辑推荐

适读人群 :本书适合网站开发及运维人员,以及正考虑要实现HTTP/2或者希望了解HTTP/2如何工作的读者。

HTTP(Hypertext Transfer Protocol)是网站和浏览器之间交换消息的标准。在20年之后,它终于迎来了剧增的升级需求。通过添加对流、服务器推送、首部压缩和请求优先级策略的支持,HTTP/2在速度、安全性和效率上获得了巨大的提升。本书会教你高效使用HTTP/2需要的所有知识,例如,如何使用帧、多路复用及推送等新特性来优化Web性能。同时,你还会了解到一些关于流量控制和流依赖等高级话题的实际案例。我们可以使用这些易于上手的技术和最佳实践,来提升网站的性能。本书面向Web开发者以及网站管理员,内容包括:
• 面向Web开发者的HTTP/2知识;
• 升级的方法以及如何解决所遇到的问题;
• 实际的用例以及学习案例;
• 关于QUIC和HTTP/3的一些讨论。

内容简介

本书以易于理解、方便上手的方式,使用贴近用户的实例来解释 HTTP/2 协议。本书首先介绍为什么要升级到 HTTP/2 以及升级的方法 ;然后逐步深入,详细解释了 HTTP/2 协议本身及其对Web 开发的影响 ;之后介绍了部分高级内容,如流状态、HPACK 等 ;最后探讨了 HTTP 的未来。本书对于 Web 开发者和运维工程师来说是一本很有价值的参考书。

作者简介

Barry Pollard 是一位专业软件开发者,在开发、支持软件和基础架构方向拥有近20年的行业经验。他对Web技术,性能调优,安全以及技术实践非常感兴趣。他的博客是https://www.tunetheweb.com,您也可以在Twitter上找到他@tunetheweb。
郑维智,Akamai公司高级企业架构师,专注于公司的主要客户及战略合作伙伴。他也是Web性能优化和HTTP/2的布道者,为Akamai的产品开发团队提供技术建议和客户反馈。

目录

第1部分 向HTTP/2靠拢

第1章 万维网与HTTP 3

1.1 万维网的原理 .3

1.1.1 因特网与万维网 4

1.1.2 打开网页时会发生什么 5

1.2 什么是HTTP .9

1.3 HTTP的语法和历史 16

1.3.1 HTTP/0.9 16

1.3.2 HTTP/1.0 17

1.3.3 HTTP/1.1 23

1.4 HTTPS简介 .29

1.5 查看、发送和接收HTTP消息的工具.32

1.5.1 浏览器开发者工具 32

1.5.2 发送 HTTP 请求 34

1.5.3 其他工具 35

总结 36

第2章 通向HTTP/2之路 37

2.1 HTTP/1.1和当前的万维网 38

2.1.1 HTTP/1.1 根本的性能问题 40

2.1.2 HTTP/1.1 管道化 .42

2.1.3 网络性能瀑布流图 43

2.2 解决HTTP/1.1性能问题的方案 .45

2.2.1 使用多个 HTTP 连接 46

2.2.2 发送更少的请求 49

2.2.3 HTTP/1 性能优化总结 50

2.3 HTTP/1.1的其他问题 50

2.4 实际案例 .51

2.4.1 示例网站 1: amazon.com .52

2.4.2 示例网站 2 : imgur.com .56

2.4.3 这个问题究竟有多严重 .57

2.5 从HTTP/1.1到HTTP/2 .58

2.5.1 SPDY .58

2.5.2 HTTP/2 61

2.6 HTTP/2对Web性能的影响 62

2.6.1 展示 HTTP/2 能力的绝佳示例 62

2.6.2 对 HTTP/2 提升性能的期望 65

2.6.3 HTTP/1.1 的一些性能变通方法可能是反模式 70

总结 70

第3章 升级到HTTP/2. .72

3.1 HTTP/2的支持 72

3.1.1 浏览器对 HTTP/2 的支持 73

3.1.2 服务器对 HTTP/2 的支持 78

3.1.3 兼容不支持 HTTP/2 的情况 80

3.2 网站开启HTTP/2的方法 .81

3.2.1 在 Web 服务器上开启 HTTP/2 81

3.2.2 反向代理实现 HTTP/2 84

3.2.3 通过 CDN 实现 HTTP/2 87

3.2.4 小结 .89

3.3 常见问题 .89

总结 93

第2部分 使用HTTP/2

第4章 HTTP/2协议基础 97

4.1 为什么是HTTP/2而不是HTTP/1.2 97

4.1.1 使用二进制格式替换文本格式 .99

4.1.2 多路复用代替同步请求 .100

4.1.3 流的优先级和流量控制 .103

4.1.4 首部压缩 104

4.1.5 服务端推送 105

4.2 如何创建一个HTTP/2连接 .105

4.2.1 使用 HTTPS 协商 106

4.2.2 使用 HTTP upgrade 首部 .113

4.2.3 使用先验知识 116

4.2.4 HTTP Alternative Services 117

4.2.5 HTTP/2 前奏消息 117

4.3 HTTP/2帧 119

4.3.1 查看 HTTP/2 帧 .119

4.3.2 HTTP/2 帧数据格式 126

4.3.3 HTTP/2 消息流示例 128

4.3.4 其他帧 143

总结 148

第5章 实现HTTP/2推送 149

5.1 什么是HTTP/2服务端推送 .149

5.2 如何推送 .153

5.2.1 使用 HTTP link 首部推送 153

5.2.2 查看 HTTP/2 推送 .156

5.2.3 使用 link 首部从下游系统推送 .159

5.2.4 更早推送 162

5.2.5 使用其他方式推送 168

5.3 HTTP/2推送在浏览器中如何运作 171

5.3.1 查看推送缓存如何工作 .172

5.3.2 使用 RST_STREAM 拒绝推送 .175

5.4 如何实现条件推送 176

5.4.1 在服务端跟踪推送的资源 .176

5.4.2 使用 HTTP 条件请求 176

5.4.3 使用基于 cookie 的推送 177

5.4.4 使用缓存摘要 178

5.5 推送什么 .179

5.5.1 你能推送什么 179

5.5.2 应该推送什么 180

5.5.3 自动化推送 181

5.6 HTTP/2推送常见问题.182

5.7 HTTP/2推送对性能的影响.184

5.8 对比推送和预加载 185

5.9 HTTP/2推送的其他应用场景188

总结190

第6章 HTTP/2优化 192

6.1 HTTP/2对Web开发者的影响 192

6.2 一些HTTP/1.1优化方法是否成了反模式194

6.2.1 HTTP/2 请求依然有开销.194

6.2.2 HTTP/2 不是没有限制.197

6.2.3 越大的资源压缩越有效.199

6.2.4 带宽限制和资源竞争 201

6.2.5 域名分片202

6.2.6 内联资源203

6.2.7 总结 .203

6.3 在HTTP/2下依然有效的性能优化技术204

6.3.1 减少要传输的数据量 204

6.3.2 使用缓存防止重复发送数据.211

6.3.3 Service Worker 可以大幅减少网络加载.215

6.3.4 不发送不需要的内容 216

6.3.5 HTTP 资源暗示 .217

6.3.6 减少最后 1 公里的延迟.219

6.3.7 优化 HTTPS .219

6.3.8 和 HTTP 无关的性能优化技术.222

6.4 同时对HTTP/1.1和HTTP/2做优化222

6.4.1 计算 HTTP/2 流量 .223

6.4.2 在服务端检测 HTTP/2 支持224

6.4.3 在客户端检测 HTTP/2 支持228

6.4.4 连接合并 228

6.4.5 还要为 HTTP/1.1 的用户优化多久.230

总结 231

第3部分 HTTP/2进阶

第7章 高级HTTP/2概念 235

7.1 流状态 .236

7.2 流量控制 .239

7.2.1 流量控制示例 240

7.2.2 在服务器上设置流量控制.244

7.3 流优先级 .244

7.3.1 流依赖关系 245

7.3.2 流权重 248

7.3.3 为什么优先级策略如此复杂.251

7.3.4 Web 服务器和浏览器中的优先级策略.252

7.4 HTTP/2一致性测试 .255

7.4.1 服务端一致性测试 255

7.4.2 客户端一致性测试 258

总结 258

第8章 HPACK首部压缩 259

8.1 为什么需要首部压缩 259

8.2 压缩的运作方式 261

8.2.1 查表法 262

8.2.2 更高效的编码技术 263

8.2.3 Lookback( 反查 ) 压缩.264

8.3 HTTP正文压缩 265

8.4 HTTP/2的HPACK首部压缩 267

8.4.1 HPACK 静态表 268

8.4.2 HPACK 动态表 269

8.4.3 HPACK 首部类型 269

8.4.4 Huffman 编码表 275

8.4.5 Huffman 编码脚本 276

8.4.6 为什么 Huffman 编码不总是最佳的 278

8.5 HPACK压缩实例 .279

8.6 客户端和服务端对HPACK的实现285

8.7 HPACK的价值 .287

总结 287

第4部分 HTTP的未来

第9章 TCP、QUIC和HTTP/3 .291

9.1 TCP的低效率因素,以及HTTP 292

9.1.1 创建 HTTP 连接的延迟.293

9.1.2 TCP 拥塞控制对性能的影响.295

9.1.3 TCP 低效率因素对 HTTP/2 的影响.303

9.1.4 优化 TCP 307

9.1.5 TCP 和 HTTP 的未来 313

9.2 QUIC .313

9.2.1 QUIC 的性能优势 .315

9.2.2 QUIC 和网络技术栈 316

9.2.3 什么是 UDP,为什么 QUIC 基于它317

9.2.4 标准化 QUIC .320

9.2.5 HTTP/2 和 QUIC 的不同.322

9.2.6 QUIC 的工具 .325

9.2.7 QUIC 实现 .327

9.2.8 你应该使用 QUIC 吗 327

总结 328

第10章 HTTP将何去何从 .329

10.1 关于HTTP/2的争议,以及它没有解决的问题330

10.1.1 反对 SPDY 的观点 330

10.1.2 隐私问题和 HTTP 中的状态.332

10.1.3 HTTP 和加密 .337

10.1.4 传输协议的问题 340

10.1.5 HTTP/2 太过于复杂 344

10.1.6 HTTP/2 是一种权宜之计.345

10.2 HTTP/2的实际应用 .345

10.3 HTTP/2的未来版本,HTTP/3或者HTTP/4会带来什么347

10.3.1 QUIC 是 HTTP/3 吗 347

10.3.2 更进一步改进 HTTP 二进制协议348

10.3.3 在传输层之上进一步优化 HTTP 348

10.3.4 什么时候会需要新的 HTTP 版本.351

10.3.5 如何引入未来版本的 HTTP 352

10.4 将HTTP当作一个更通用的传输协议.352

10.4.1 使用 HTTP 语义和消息来传递非 Web 流量 353

10.4.2 使用 HTTP/2 二进制成帧层354

10.4.3 使用 HTTP 启动另一个协议.355

总结 359

附录A 将常见Web服务器升级到HTTP/2 .360


前言/序言

前言
我在很早的时候就开始关注 HTTP/2 了。据称,使用这种新技术,不需要做太多事情就能获得性能提升,同时 Web 开发者也不再需要使用一些凌乱的变通方法,这绝对是令人振奋的。然而,现实比理想要骨感得多,我为弄清楚如何在我的Apache 服务器上部署它,以及弄清楚它对性能的影响花费了一段时间之后,发现缺乏文档,这很是令我沮丧。我写了一些博客介绍如何设置HTTP/2,这些博客很受欢迎。
与此同时,我开始参与 GitHub 上的一些 HTTP/2 项目,并泡在 Stack Overflow 上,关注相关的主题并帮助解答类似的问题。当 Manning 来电话,寻找人写一本关于HTTP/2 的书时,我抓住了机会。我并没有参与 HTTP/2 标准的制定,但我觉得我和那些曾经听过这项技术,但却对它缺乏了解,正在苦苦挣扎的网络开发者有很多共同语言。
在编写本书的一年半时间里,HTTP/2 已经成为主流,并被越来越多的网站使用。随着软件的更新,部署相关的问题变得越来越简单,我希望本书中描述的一些问题很快成为历史,但我怀疑还需要几年的时间,启用 HTTP/2 才能变得容易。
你启用了 HTTP/2 后,应该可以立即看到性能提升,不需要进行太多的配置,也不需要非常理解它。然而,天下没有免费的午餐,协议及部署中的细枝末节,要求网站管理者对协议有更深的理解。Web 性能优化是一个蓬勃发展的行业,HTTP/2是另一个工具,它是一种有趣的技术,会带来很多机会。
网上有大量的信息,如果你有时间并愿意去寻找、过滤和理解这些信息,阅读不同的意见,甚至直接与协议设计者和实现者沟通,会让你收获很多。然而,面对HTTP/2 这样大的主题,如果我能在一本书的范围和深度内解释相关的技术,给你提供有用的参考,激起你的兴趣,那么这本书就算实现了目标。

关于本书
本书以一种易于理解、方便上手的方式,使用实际的案例来解释协议。协议规范枯燥且难以理解,因此本书力求通俗易懂,使用贴近用户的案例来讲解。
本书目标读者
本书的目标读者为网络开发者、网站管理员以及想要了解互联网技术如何运作的人。本书旨在提供 HTTP/2 的完整描述,以及其中的技术细节。尽管有大量关于该主题的博客、文章,但大多数都是关于特定主题的粗略或详细的介绍。本书会详述整个协议及其中的许多复杂特性,以帮助读者阅读和理解规范,以及一些深层次的文章。HTTP/2 的创建主要是为了提高性能,因此任何对 Web 性能优化感兴趣的人都会从本书获得有用的知识。此外,本书还包含许多参考资料,以供大家延伸阅读。
本书组织结构
全书共有 10 章,分为 4 部分。
第 1 部分解释了为什么要升级到 HTTP/2,以及升级的方法。
第 1 章介绍了一些背景知识,即使那些只对互联网有基本了解的人也应该能够掌握这些知识。
第 2 章讨论了 HTTP/1.1 的问题,以及为什么需要 HTTP/2。
第 3 章描述了为网站启用 HTTP/2 的方法,以及在此过程中会出现的一些复杂问题。附录对本章中的内容做了补充,提供了流行的 Web 服务器 Apache、Nginx 和 IIS 的安装说明。
从第 2 部分开始,逐步深入,讲述协议本身,以及它对 Web 开发实践所带来的影响。
第 4 章介绍了 HTTP/2 协议的基础知识,如何建立 HTTP/2 连接以及 HTTP/2帧的基本格式。
第 5 章介绍了 HTTP/2 推送,它是协议全新的特性,其允许服务端主动发送浏览器尚未请求的资源。
第 6 章介绍了 HTTP/2 对 Web 开发实践所带来的影响。
第 3 部分介绍了协议较深层的技术,Web 开发者以及 Web 服务器管理员目前可能无法对它们做出控制 :
第 7 章介绍了 HTTP/2 规范中的状态、流量控制和优先级策略等概念,以及在具体实现中 HTTP/2 一致性差异。
第 8 章深入探讨了 HPACK 协议,该协议用于 HTTP/2 中的 HTTP 首部压缩。
第 4 部分着眼于 HTTP 的未来。
第 9 章介绍了 TCP、QUIC 和 HTTP/3。技术更迭的脚步永远不会停止,现在开发人员已经在寻找改进 HTTP/2 的方法。本章讨论了 HTTP/2 未解决的低效问题,以及如何在后续版本中改进它们 :HTTP/3。
第 10 章介绍了除 HTTP/3 之外的其他可以改进 HTTP 的方法,包括对在HTTP/2 标准化过程中所出现问题的反思,以及在实际应用中这些问题的影响。
读完本书,读者应该对 HTTP/2 和相关技术有很好的掌握,应该对 Web 性能优化有更深入的了解,同时也为将来 QUIC 和 HTTP/3 的发布做好了准备。