買這商品的人也買了...
-
$800$632
相關主題
商品描述
隨著通訊技術的不斷進步,越來越多的應用開始向HTTP3遷移,這大大提升了網路的資料傳輸效率與安全性。
本書深入淺出地剖析了HTTP3的網路傳輸層協定QUIC,是作者在多年實務中總結的智慧結晶。
本書不僅可以幫助讀者精準判斷QUIC技術的適用場景,還能在問題出現時,迅速幫助讀者分析原因並找到解決方案。
本書適用於對新興網路技術感興趣的網路工程師、開發人員和科研人員。
目錄大綱
前言
第1章 QUIC產生背景1
1.1 網路傳輸協定1
1.1.1 UDP1
1.1.2 TCP2
1.1.3 SCTP6
1.1.4 其他協議10
1.2 TLS版本演化10
1.2.1 SSL系列協議10
1.2.2 TLS 1.015
1.2.3 TLS 1.116
1.2.4 TLS 1.217
1.2.5 TLS 1.319
1.3 HTTP版本演化20
1.3.1 HTTP122
1.3.2 HTTP1.123
1.3.3 HTTP226
1.4 QUIC的誕生29
第2章 QUIC報文35
2.1 分層35
2.2 報文格式36
2.2.1 長報文37
2.2.2 短報文44
2.2.3 無狀態重置封包45
2.3 連線標識46
2.3.1 發布連線標識47
2.3.2 撤銷連線標識48
2.3.3 零長度的連線標識50
2.3.4 連線標識協商與驗證50
2.4 報文編號53
2.4.1 報文編號空間53
2.4.2 報文編號編碼54
2.4.3 報文編號解碼55
2.5 流58
2.5.1 流標識59
2.5.2 流的開啟和關閉60
2.5.3 流狀態61
2.6 幀65
2.6.1 PADDING幀66
2.6.2 PING幀66
2.6.3 ACK幀67
2.6.4 RESET_STREAM幀69
2.6.5 STOP_SENDING幀70
2.6.6 CRYPTO幀70
2.6.7 NEW_TOKEN幀71
2.6.8 STREAM幀71
2.6.9 MAX_DATA幀72
2.6.10 MAX_STREAM_DATA幀72
2.6.11 MAX_STREAMS幀73
2.6.12 DATA_BLOCKED幀73
2.6.13 STREAM_DATA_BLOCKED幀74
2.6.14 STREAMS_BLOCKED幀74
2.6.15 NEW_CONNECTION_ID幀74
2.6.16 RETIRE_CONNECTION_ID幀75
2.6.17 PATH_CHALLENGE幀76
2.6.18 PATH_RESPONSE訊框76
2.6.19 CONNECTION_CLOSE幀76
2.6.20 HANDSHAKE_DONE幀77
2.6.21 擴展其他幀78
2.7 錯誤碼78
2.7.1 連線錯誤碼78
2.7.2 應用錯誤碼80
2.8 傳輸參數81
2.9 變長整型編碼84
第3章 QUIC基礎85
3.1 報文確認85
3.1.1 生成確認85
3.1.2 處理確認與重傳87
3.1.3 RTT計算89
3.1.4 丟包檢測90
3.1.5 探測超時91
3.2 流控92
3.2.1 流級別的流控93
3.2.2 連接等級的流控94
3.3 擁塞控制95
3.3.1 擁塞控制概述95
3.3.2 QUIC擁塞控制的改進97
3.3.3 ECN99
3.3.4 QUIC擁塞控制演算法NewReno101
3.3.5 QUIC擁塞控制演算法BBR103
3.4 PMTU探測105
3.4.1 PMTUD106
3.4.2 DPLPMTUD107
3.5 地址驗證110
3.5.1 連線建立期間隱式位址驗證111
3.5.2 透過重試報文進行地址驗證112
3.5.3 透過NEW_TOKEN幀進行位址驗證113
3.5.4 透過PATH_CHALLENGE訊框進行位址驗證115
3.6 連線遷移116
3.6.1 客戶端有意的連線遷移116
3.6.2 客戶端無意的連線遷移117
3.6.3 客戶端遷移安全考量118
3.6.4 伺服器移到首選位址121
3.7 中間件的RTT測量123
第4章 QUIC加密與保護127
4.1 TLS 1.3介紹127
4.1.1 TLS 1.3的密鑰127
4.1.2 TLS 1.3首次連線130
4.1.3 TLS 1.3恢復連線135
4.1.4 密鑰更新138
4.2 QUIC與TLS 1.3139
4.2.1 TCP與TLS139
4.2.2 QUIC與TLS的關係140
4.2.3 QUIC與TLS的介面142
4.2.4 QUIC對TLS的修改145
4.3 QUIC的報文保護146
4.3.1 QUIC的加密等級147
4.3.2 丟棄密鑰148
4.4 保護150
4.5 負載保護153
4.5.1 初始報文154
4.5.2 重試報文155
4.5.3 密鑰更新156
4.6 連線恢復與0-RTT158
4.6.1 0-RTT的發送與接收158
4.6.2 0-RTT金鑰160
第5章 QUIC連線的建立與關閉162
5.1 首次建立連線162
5.1.1 QUIC報文互動163
5.1.2 驗證客戶端憑證166
5.1.3 建立連線時TLS參數不符合166
5.1.4 建立連線過程中丟包167
5.1.5 版本協商170
5.2 連線恢復172
5.2.1 連線恢復過程 173
5.2.2 0-RTT傳輸參數174
5.2.3 0-RTT安全175
5.2.4 0-RTT範例177
5.3 連線關閉 179
5.3.1 空閒超時180
5.3.2 立即關閉182
5.3.3 無狀態重置184
第6章 QUIC中間件188
6.1 簡單的負載平衡188
6.1.1 伺服器共享位址189
6.1.2 伺服器不共享位址190
6.2 協作的負載平衡191
6.2.1 連線標識的格式192
6.2.2 配置代理193
6.2.3 伺服器產生連線標識193
6.2.4 負載平衡器路由演算法194
6.3 重試卸載195
6.3.1 不共享狀態的重試卸載197
6.3.2 共享狀態的重試卸載198
第7章 QUIC擴展協議201
7.1 多路QUIC201
7.1.1 多路QUIC傳輸參數202
7.1.2 報文編號空間202
7.1.3 增加的新影格202
7.1.4 多路的加解密205
7.1.5 新路徑建立與拆除過程205
7.1.6 資料的調度208
7.2 不可靠資料報209
第8章 HTTP3212
8.1 流的使用212
8.1.1 控制流214
8.1.2 推播流214
8.1.3 編碼器流和解碼器流215
8.2 HTTP3幀215
8.2.1 DATA幀216
8.2.2 HEADER幀217
8.2.3 CANCEL_PUSH幀217
8.2.4 SETTING幀217
8.2.5 PUSH_PROMISE幀218
8.2.6 GOAWAY幀219
8.2.7 MAX_PUSH_ID幀219
8.3 HTTP3交互220
8.3.1 建立連線220
8.3.2 請求與回應220
8.3.3 伺服器推送222
8.3.4 連線關閉224
8.4 QPACK226
8.4.1 前綴整數編碼227
8.4.2 靜態字典228
8.4.3 動態字典228
8.4.4 字段行集合編碼232
8.4.5 QPACK範例235
第9章 基於QUIC的其他協議237
9.1 DNS237
9.1.1 DNS簡介237
9.1.2 DoQ239
9.2 使用QUIC的一般考量240
9.2.1 0-RTT使用的考慮240
9.2.2 保活的考慮240
9.2.3 傳輸協定回退的考慮241
9.2.4 流的使用242
9.2.5 連線關閉242
9.2.6 應用標識242
第10章 QUIC開源程式碼與應用實例243
10.1 介面介紹 243
10.1.1 QUIC的設定244
10.1.2 TLS的配置245
10.1.3 伺服器介面246
10.1.4 客戶端的介面246
10.1.5 連接的介面247
10.1.6 流的介面248
10.2 源碼使用248
10.2.1 使用QUIC248
10.2.2 HTTP3介面使用252
10.3 quic-go源碼分析254
10.3.1 QUIC源碼分析254
10.3.2 HTTP3源碼分析256
10.3.3 qtls源碼分析258
第11章 分析工具263
11.1 qlog263
11.2 qvis265
11.3 wireshark268
第12章 QUIC未來展望271
12.1 QUIC的限制 271
12.2 QUIC未來發展273