QUIC與HTTP/3實戰:現代網絡協議解析與性能優化

李龍彥

  • 出版商: 人民郵電
  • 出版日期: 2026-03-01
  • 售價: $540
  • 語言: 簡體中文
  • 頁數: 254
  • ISBN: 7115687382
  • ISBN-13: 9787115687388
  • 相關分類: TCP/IP
  • 下單後立即進貨 (約4週~6週)

相關主題

商品描述

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的開發者與維護者、互聯網業務軟件開發/測試工程師、運維工程師閱讀,也適合計算機相關專業的學生閱讀。

作者簡介

李龍彥,網絡架構師,有近 15 年的網絡開發工作經驗。曾就職於華為、OPPO等企業,在 OPPO 擔任網絡優化項目負責人兼架構師期間,帶領團隊實現了HTTP/3的落地,顯著提升了業務場景中的數據傳輸效率。

目錄大綱

第 一部分 網絡協議基礎知識
第 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