QUIC与HTTP/3实战:现代网络协议解析与性能优化

978-7-115-68738-8
作者: 李龙彦
译者:
编辑: 贾静
分类: 其他

图书目录:

第 一部分 网络协议基础知识

第 1章 TCP/IP基础知识 2

1.1 网络协议简介 2

1.2 TCP/IP简介 2

1.2.1 应用层 3

1.2.2 传输层 4

1.2.3 网络层 5

1.2.4 网络接口层 6

1.3 网站是如何加载的 7

1.3.1 DNS解析 8

1.3.2 TCP连接建立 10

1.3.3 TLS连接建立 12

1.3.4 HTTP请求及应答 20

1.4 小结 21

第 2章 HTTP基础知识 22

2.1 HTTP主要版本 22

2.1.1 HTTP/1.1 22

2.1.2 HTTP/2 25

2.1.3 HTTP/3 30

2.2 HTTP特性之缓存 32

2.2.1 什么是缓存 32

2.2.2 缓存分类 32

2.2.3 缓存机制的实现 35

2.3 HTTP特性之重定向 36

2.3.1 什么是重定向 37

2.3.2 HTTP重定向过程 37

2.3.3 Nginx中重定向的配置 38

2.4 HTTP特性之cookie 39

2.4.1 cookie的作用 39

2.4.2 服务器如何创建cookie 40

2.5 HTTP优化的常用手段 40

2.6 小结 42

第二部分 QUIC协议

第3章 QUIC协议概述 44

3.1 HTTPS有什么缺点 44

3.2 QUIC协议如何解决HTTPS的缺点 48

3.3 QUIC协议与HTTP/3的关系 50

3.4 小结 51

第4章 QUIC协议的流 52

4.1 流类型与流ID 52

4.2 流状态 54

4.2.1 流发送状态机 54

4.2.2 流接收状态机 56

4.3 流优先级 57

4.3.1 流优先级的设置 57

4.3.2 HTTP/2的流依赖 58

4.3.3 HTTP/2的流权重 58

4.3.4 流的多路复用 59

4.4 流量控制 59

4.4.1 TCP的流量控制算法 60

4.4.2 QUIC协议的流量控制算法 61

4.4.3 流量控制优化策略 64

4.5 小结 66

第5章 QUIC连接建立 67

5.1 连接ID 67

5.1.1 连接ID的作用 67

5.1.2 连接ID的生成和使用 68

5.1.3 数据包如何与连接匹配 69

5.2 1-RTT连接建立 69

5.2.1 什么是1-RTT连接建立 70

5.2.2 Client Hello报文介绍 72

5.2.3 Server Hello报文介绍 76

5.2.4 New Session Ticket报文介绍 77

5.3 0-RTT连接建立 78

5.3.1 什么是0-RTT连接建立 78

5.3.2 Client Hello报文介绍 79

5.3.3 0-RTT包介绍 81

5.3.4 0-RTT传输参数 82

5.3.5 Server Hello报文介绍 83

5.4 建立连接的安全性 83

5.4.1 0-RTT连接建立的公钥泄漏造成的安全性问题 84

5.4.2 0-RTT连接建立造成重放攻击问题 84

5.4.3 建立连接存在放大攻击风险 85

5.5 连接关闭 89

5.5.1 如何关闭QUIC连接 89

5.5.2 连接错误 90

5.5.3 流错误 91

5.6 实践建立QUIC连接遇到的性能问题 91

5.6.1 重试机制导致建立连接需要多个RTT 91

5.6.2 地址验证机制导致建立连接需要多个RTT 92

5.6.3 乱序带来的建立连接失败问题 93

5.6.4 如何提升0-RTT成功率 94

5.7 小结 94

第6章 QUIC连接迁移 95

6.1 什么是连接迁移 95

6.2 连接迁移过程 96

6.2.1 探测新路径 97

6.2.2 客户端发起连接迁移 97

6.2.3 服务端响应连接迁移 97

6.3 连接迁移期间的地址验证 99

6.4 实现连接迁移的难题 100

6.5 连接迁移的优化 102

6.5.1 四层负载均衡器的资源

消耗优化 102

6.5.2 连接迁移偶然失败问题优化 103

6.5.3 连接迁移成功率优化 104

6.6 小结 104

第7章 QUIC协议的传输机制 105

7.1 QUIC协议的传输机制与TCP的传输机制 105

7.2 RTT的计算方式 110

7.3 PTO的计算与探测包的实现 113

7.3.1 PTO的计算 113

7.3.2 探测包的实现 114

7.4 拥塞控制算法 115

7.4.1 QUIC协议的拥塞控制算法 116

7.4.2 Cubic算法 118

7.4.3 BBR算法 120

7.5 小结 123

第8章 QUIC协议的帧类型与格式 124

8.1 QUIC协议的帧概述 124

8.2 PADDING帧 125

8.3 PING帧 126

8.4 ACK帧 127

8.5 STOP_SENDING帧 129

8.6 CRYPTO帧 129

8.7 NEW_TOKEN帧 130

8.8 流相关的帧 130

8.8.1 STREAM帧 130

8.8.2 MAX_STREAMS帧 131

8.8.3 STREAMS_

BLOCKED帧 131

8.8.4 REST_STREAM帧 132

8.9 数据相关的帧 132

8.9.1 MAX_DATA帧 132

8.9.2 MAX_STREAM_DATA帧 133

8.9.3 DATA_BLOCKED帧和STREAM_DATA_BLOCKED帧 133

8.10 连接ID相关的帧 134

8.10.1 NEW_CONNECTION_ID帧 134

8.10.2 RETIRE_CONNECTION_ID帧 135

8.11 PATH_CHALLENGE帧和PATH_RESPONSE帧 135

8.12 CONNECTION_CLOSE帧 136

8.13 HANDSHAKE_DONE帧 137

8.14 使用Wireshark查看QUIC帧 137

8.15 小结 138

第9章 QUIC协议与HTTP/3的错误处理 139

9.1 QUIC协议的错误码 139

9.2 HTTP/3的错误码 143

9.3 小结 144

第三部分 HTTP/3

第 10章 HTTP/3的特性 146

10.1 连接管理 146

10.1.1 服务发现 146

10.1.2 连接复用 147

10.2 消息 150

10.2.1 请求与响应 150

10.2.2 消息分帧 150

10.2.3 首部字段 151

10.2.4 请求的取消与拒绝 154

10.3 帧类型 155

10.3.1 DATA帧 155

10.3.2 HEADERS帧 156

10.3.3 CANCEL_PUSH帧、PUSH_PROMISE帧、MAX_PUSH_ID帧 156

10.3.4 SETTINGS帧 157

10.3.5 GOAWAY帧 157

10.4 QPACK压缩 157

10.4.1 HTTP/2的HPACK算法 158

10.4.2 HTTP/3的QPACK 160

10.5 服务器推送 160

10.6 状态码 161

10.7 小结 164

第 11章 HTTP/3的应用 165

11.1 协议竞速 165

11.2 如何开启浏览器的HTTP/3 167

11.3 如何使用Nginx的HTTP/3 168

11.4 HTTP/3支持源地址透传 169

11.4.1 Proxy Protocol介绍 170

11.4.2 QUIC协议支持Proxy Protocol 171

11.5 小结 172

第 12章 HTTP/3的实践和发展 173

12.1 HTTP/3的实践效果 173

12.1.1 实验环境测试 173

12.1.2 业务提升效果 174

12.2 HTTP/3的发展 174

12.2.1 HTTP/3适合的应用场景 175

12.2.2 HTTP/3的未来 175

12.3 小结 176

第 13章 HTTP/3优化 177

13.1 升级至HTTP/3对业务的影响 177

13.2 HTTP/3的应用存在哪些问题 178

13.3 如何优化HTTP/3的性能 179

13.3.1 提升0-RTT连接建立的成功率 179

13.3.2 提升QUIC连接复用率 180

13.3.3 避免版本协商 181

13.3.4 支持MPQUIC协议 181

13.4 小结 184

第四部分 QUIC协议的实现

第 14章 QUIC客户端的代码实现 186

14.1 QUIC客户端连接建立的代码实现 186

14.1.1 重试机制 187

14.1.2 握手过程 190

14.2 QUIC客户端连接迁移的代码实现 196

14.3 QUIC客户端流量控制算法的代码实现 202

14.4 QUIC客户端PING帧的代码实现 208

14.5 小结 210

第 15章 QUIC服务端的代码实现 211

15.1 QUIC服务端连接建立的代码实现 211

15.1.1 解析收到的QUIC包(Initial包) 214

15.1.2 验证令牌 224

15.1.3 建立QUIC连接 224

15.2 QUIC服务端连接迁移的代码实现 231

15.2.1 eBPF介绍 232

15.2.2 使用BPF实现多核处理器下的连接迁移 233

15.2.3 连接迁移处理过程 238

15.3 QUIC服务端拥塞控制算法的代码实现 244

15.4 小结 254

详情

HTTP/3的核心是QUIC协议,本书围绕QUIC协议和HTTP/3的原理、应用与代码实现展开,旨在帮助读者理解HTTP/3的价值与落地方法。 本书共4部分。第一部分是网络协议基础知识,共2章,主要介绍TCP/IP和HTTP的基础知识。第二部分是QUIC协议,共7章,主要包括QUIC协议概述,QUIC协议的流,QUIC连接建立、连接迁移、传输机制、帧类型与格式和错误处理。第三部分是HTTP/3,共4章,主要介绍HTTP/3的特性、应用、实践和发展以及优化。第四部分是QUIC协议的实现,共2章,分别介绍QUIC客户端和服务端的代码实现。 本书既适合QUIC协议与HTTP/3的开发者与维护者、互联网业务软件开发/测试工程师、运维工程师阅读,也适合计算机相关专业的学生阅读。

图书摘要

相关图书

Agent设计模式 图解可复用智能体架构
Agent设计模式 图解可复用智能体架构
AI Agent 开发实战:MCP+A2A+LangGraph 驱动的智能体全流程开发
AI Agent 开发实战:MCP+A2A+LangGraph 驱动的智能体全流程开发
Coze入门:7天玩转扣子智能体
Coze入门:7天玩转扣子智能体
计算流体力学大串讲轻松解锁CFD     从公式到代码的奇妙之旅
计算流体力学大串讲轻松解锁CFD 从公式到代码的奇妙之旅
内网攻防实战图谱:从红队视角构建安全对抗体系
内网攻防实战图谱:从红队视角构建安全对抗体系
计算机组成原理(基于x86-64架构)
计算机组成原理(基于x86-64架构)

相关文章

相关课程