《HTTP權威指南》高清中文版pdf
阿新 • • 發佈:2018-02-05
保護密碼 web客戶端 bottom 錯誤 file 切換 企業 數字證書 概念
詳細解釋了HTTP協議,包括它是如何工作的,如何用它來開發基於Web的應用程序。但本書並不只介紹了HTTP,還探討了HTTP有效工作所依賴的所有其他核心因特網技術。盡管HTTP是本書的中心內容,但本書的本質是理解Web的工作原理,以及如何將這些知識應用到Web編程和管理之中去,主要涵蓋HTTP的技術運作方式、產生動機、性能和目標,以及一些相關技術問題。
本書是HTTP協議及相關Web技術方面的著作,主要內容包括:
HTTP方法、首部以及狀態碼
優化代理和緩存的方法
設計Web機器人和爬蟲的策略
Cookies、認證以及安全HTTP
國際化及內容協商
重定向及負載平衡策略
要想高效地進行Web開發,所有Web程序員、管理員和應用程序開發者都應該熟悉HTTP。很多書籍只介紹了Web的使用方式,而本書則深入說明了Web的工作原理。[1]
第一部分 HTTP:Web 的基礎
第1章 HTTP 概述 3
1.1 HTTP——因特網的多媒體信使 4
1.2 Web 客戶端和服務器 4
1.3 資源 5
1.3.1 媒體類型 6
1.3.2 URI 7
1.3.3 URL 7
1.3.4 URN 8
1.4 事務 9
1.4.1 方法 9
1.4.2 狀態碼 10
1.4.3 Web 頁面中可以包含多個對象 10
1.5 報文 11
1.6 連接 13
1.6.1 TCP/IP 13
1.6.2 連接、IP 地址及端口號 14
1.6.3 使用Telnet 實例 16
1.7 協議版本 18
1.8 Web 的結構組件 19
1.8.1 代理 19
1.8.2 緩存 20
1.8.3 網關 20
1.8.4 隧道 21
1.8.5 Agent 代理 21
1.9 起始部分的結束語 22
1.10 更多信息 22
1.10.1 HTTP 協議信息 22
1.10.2 歷史透視 23
1.10.3 其他萬維網信息 23
第2章 URL 與資源 25
2.1 瀏覽因特網資源 26
2.2 URL 的語法 28
2.2.1 方案——使用什麽協議 29
2.2.2 主機與端口 30
2.2.3 用戶名和密碼 30
2.2.4 路徑 31
2.2.5 參數 31
2.2.6 查詢字符串 32
2.2.7 片段 33
2.3 URL 快捷方式 34
2.3.1 相對URL 34
2.3.2 自動擴展URL 37
2.4 各種令人頭疼的字符 38
2.4.1 URL 字符集 38
2.4.2 編碼機制 38
2.4.3 字符限制 39
2.4.4 另外一點說明 40
2.5 方案的世界 40
2.6 未來展望 42
2.7 更多信息 44
第3章 HTTP 報文 45
3.1 報文流 46
3.1.1 報文流入源端服務器 46
3.1.2 報文向下遊流動 47
3.2 報文的組成部分 47
3.2.1 報文的語法 48
3.2.2 起始行 50
3.2.3 首部 53
3.2.4 實體的主體部分 55
3.2.5 版本0.9 的報文 55
3.3 方法 56
3.3.1 安全方法 56
3.3.2 GET 56
3.3.3 HEAD 57
3.3.4 PUT 57
3.3.5 POST 58
3.3.6 TRACE 58
3.3.7 OPTIONS 60
3.3.8 DELETE 60
3.3.9 擴展方法 61
3.4 狀態碼 62
3.4.1 100 ~ 199——信息性狀態碼 62
3.4.2 200 ~ 299——成功狀態碼 63
3.4.3 300 ~ 399——重定向狀態碼 64
3.4.4 400 ~ 499——客戶端錯誤狀態碼 68
3.4.5 500 ~ 599——服務器錯誤狀態碼 69
3.5 首部 70
3.5.1 通用首部 71
3.5.2 請求首部 72
3.5.3 響應首部 74
3.5.4 實體首部 75
3.6 更多信息 77
第4章 連接管理 79
4.1 TCP 連接 80
4.1.1 TCP 的可靠數據管道 80
4.1.2 TCP 流是分段的、由IP 分組傳送 81
4.1.3 保持TCP 連接的正確運行 82
4.1.4 用TCP 套接字編程 84
4.2 對TCP 性能的考慮 85
4.2.1 HTTP 事務的時延 86
4.2.2 性能聚焦區域 87
4.2.3 TCP 連接的握手時延 87
4.2.4 延遲確認 88
4.2.5 TCP 慢啟動 89
4.2.6 Nagle 算法與TCP_NODELAY 89
4.2.7 TIME_WAIT 累積與端口耗盡 90
4.3 HTTP 連接的處理 91
4.3.1 常被誤解的Connection 首部 91
4.3.2 串行事務處理時延 92
4.4 並行連接 94
4.4.1 並行連接可能會提高頁面的加載速度 94
4.4.2 並行連接不一定更快 95
4.4.3 並行連接可能讓人“感覺”更快一些 95
4.5 持久連接 96
4.5.1 持久以及並行連接 96
4.5.2 HTTP/1.0+ keep-alive 連接 97
4.5.3 Keep-Alive 操作 98
4.5.4 Keep-Alive 選項 98
4.5.5 Keep-Alive 連接的限制和規則 99
4.5.6 Keep-Alive 和啞代理 100
4.5.7 插入Proxy-Connection 102
4.5.8 HTTP/1.1 持久連接 104
4.5.9 持久連接的限制和規則 104
4.6 管道化連接 105
4.7 關閉連接的奧秘 106
4.7.1 “ 任意”解除連接 106
4.7.2 Content-Length 及截尾操作 107
4.7.3 連接關閉容限、重試以及冪等性 107
4.7.4 正常關閉連接 108
4.8 更多信息 110
4.8.1 HTTP 連接 110
4.8.2 HTTP 性能問題 110
4.8.3 TCP/IP 111
第二部分 HTTP 結構
第5章 Web 服務器 115
5.1 各種形狀和尺寸的Web 服務器 116
5.1.1 Web 服務器的實現 116
5.1.2 通用軟件Web 服務器 117
5.1.3 Web 服務器設備 117
5.1.4 嵌入式Web 服務器 118
5.2 最小的Perl Web 服務器 118
5.3 實際的Web 服務器會做些什麽 120
5.4 第一步——接受客戶端連接 121
5.4.1 處理新連接 121
5.4.2 客戶端主機名識別 122
5.4.3 通過ident 確定客戶端用戶 122
5.5 第二步——接收請求報文 123
5.5.1 報文的內部表示法 124
5.5.2 連接的輸入/ 輸出處理結構 125
5.6 第三步——處理請求 126
5.7 第四步——對資源的映射及訪問 126
5.7.1 docroot 127
5.7.2 目錄列表 129
5.7.3 動態內容資源的映射 130
5.7.4 服務器端包含項 131
5.7.5 訪問控制 131
5.8 第五步——構建響應 131
5.8.1 響應實體 131
5.8.2 MIME 類型 132
5.8.3 重定向 133
5.9 第六步——發送響應 134
5.10 第七步——記錄日誌 134
5.11 更多信息 134
第6章 代理 135
6.1 Web 的中間實體 136
6.1.1 私有和共享代理 136
6.1.2 代理與網關的對比 137
6.2 為什麽使用代理 138
6.3 代理會去往何處 143
6.3.1 代理服務器的部署 144
6.3.2 代理的層次結構 144
6.3.3 代理是如何獲取流量的 147
6.4 客戶端的代理設置 148
6.4.1 客戶端的代理配置:手工配置 149
6.4.2 客戶端代理配置:PAC 文件 149
6.4.3 客戶端代理配置:WPAD 150
6.5 與代理請求有關的一些棘手問題 151
6.5.1 代理URI 與服務器URI 的不同 151
6.5.2 與虛擬主機一樣的問題 152
6.5.3 攔截代理會收到部分URI 153
6.5.4 代理既可以處理代理請求,也可以處理服務器請求 154
6.5.5 轉發過程中對URI 的修改 154
6.5.6 URI 的客戶端自動擴展和主機名解析 155
6.5.7 沒有代理時URI 的解析 155
6.5.8 有顯式代理時URI 的解析 156
6.5.9 有攔截代理時URI 的解析 157
6.6 追蹤報文 158
6.6.1 Via 首部 158
6.6.2 TRACE 方法 162
6.7 代理認證 164
6 | 目錄
6.8 代理的互操作性 165
6.8.1 處理代理不支持的首部和方法 166
6.8.2 OPTIONS:發現對可選特性的支持 166
6.8.3 Allow 首部 167
6.9 更多信息 167
第7章 緩存 169
7.1 冗余的數據傳輸 170
7.2 帶寬瓶頸 170
7.3 瞬間擁塞 171
7.4 距離時延 172
7.5 命中和未命中的 173
7.5.1 再驗證 173
7.5.2 命中率 175
7.5.3 字節命中率 176
7.5.4 區分命中和未命中的情況 176
7.6 緩存的拓撲結構 177
7.6.1 私有緩存 177
7.6.2 公有代理緩存 177
7.6.3 代理緩存的層次結構 179
7.6.4 網狀緩存、內容路由以及對等緩存 180
7.7 緩存的處理步驟 181
7.7.1 第一步——接收 181
7.7.2 第二步——解析 182
7.7.3 第三步——查找 182
7.7.4 第四步——新鮮度檢測 182
7.7.5 第五步——創建響應 182
7.7.6 第六步——發送 183
7.7.7 第七步——日誌 183
7.7.8 緩存處理流程圖 183
7.8 保持副本的新鮮 183
7.8.1 文檔過期 184
7.8.2 過期日期和使用期 185
7.8.3 服務器再驗證 185
7.8.4 用條件方法進行再驗證 186
7.8.5 If-Modified-Since:Date 再驗證 187
7.8.6 If-None-Match:實體標簽再驗證 189
7.8.7 強弱驗證器 190
7.8.8 什麽時候應該使用實體標簽和最近修改日期 190
7.9 控制緩存的能力 191
7.9.1 no-Store 與no-Cache 響應首部 191
7.9.2 max-age 響應首部 192
7.9.3 Expires 響應首部 192
7.9.4 must-revalidate 響應首部 192
7.9.5 試探性過期 193
7.9.6 客戶端的新鮮度限制 194
7.9.7 註意事項 194
7.10 設置緩存控制 195
7.10.1 控制Apache 的HTTP 首部 195
7.10.2 通過HTTP-EQUIV 控制HTML 緩存 196
7.11 詳細算法 197
7.11.1 使用期和新鮮生存期 198
7.11.2 使用期的計算 198
7.11.3 完整的使用期計算算法 201
7.11.4 新鮮生存期計算 202
7.11.5 完整的服務器——新鮮度算法 202
7.12 緩存和廣告 204
7.12.1 發布廣告者的兩難處境 204
7.12.2 發布者的響應 204
7.12.3 日誌遷移 205
7.12.4 命中計數和使用限制 205
7.13 更多信息 205
第8章 集成點:網關、隧道及中繼 207
8.1 網關 208
8.2 協議網關 210
8.2.1 HTTP/*:服務器端Web 網關 211
8.2.2 HTTP/HTTPS:服務器端安全網關 212
8.2.3 HTTPS/HTTP 客戶端安全加速器網關 212
8.3 資源網關 213
8.3.1 CGI 215
8.3.2 服務器擴展API 215
8.4 應用程序接口和Web 服務 216
8.5 隧道 217
8.5.1 用CONNECT 建立HTTP 隧道 217
8.5.2 數據隧道、定時及連接管理 219
8.5.3 SSL 隧道 219
8.5.4 SSL 隧道與HTTP/HTTPS 網關的對比 220
8.5.5 隧道認證 221
8.5.6 隧道的安全性考慮 221
8.6 中繼 222
8.7 更多信息 224
第9章 Web 機器人 225
9.1 爬蟲及爬行方式 226
9.1.1 從哪兒開始:根集 226
9.1.2 鏈接的提取以及相對鏈接的標準化 227
9.1.3 避免環路的出現 228
9.1.4 循環與復制 228
9.1.5 面包屑留下的痕跡 229
9.1.6 別名與機器人環路 230
9.1.7 規範化URL 230
9.1.8 文件系統連接環路 231
9.1.9 動態虛擬Web 空間 232
9.1.10 避免循環和重復 233
9.2 機器人的HTTP 236
9.2.1 識別請求首部 236
9.2.2 虛擬主機 236
9.2.3 條件請求 237
9.2.4 對響應的處理 238
9.2.5 User-Agent 導向 239
9.3 行為不當的機器人 239
9.4 拒絕機器人訪問 240
9.4.1 拒絕機器人訪問標準 241
9.4.2 Web 站點和robots.txt 文件 242
9.4.3 robots.txt 文件的格式 243
9.4.4 其他有關robots.txt 的知識 246
9.4.5 緩存和robots.txt 的過期 246
9.4.6 拒絕機器人訪問的Perl 代碼 246
9.4.7 HTML 的robot-control 元標簽 249
9.5 機器人的規範 251
9.6 搜索引擎 254
9.6.1 大格局 255
9.6.2 現代搜索引擎結構 255
9.6.3 全文索引 255
9.6.4 發布查詢請求 257
9.6.5 對結果進行排序,並提供查詢結果 258
9.6.6 欺詐 258
9.7 更多信息 258
第10章 HTTP-NG 261
10.1 HTTP 發展中存在的問題 262
10.2 HTTP-NG 的活動 263
10.3 模塊化及功能增強 263
10.4 分布式對象 264
10.5 第一層——報文傳輸 264
10.6 第二層——遠程調用 265
10.7 第三層——Web 應用 265
10.8 WebMUX 265
10.9 二進制連接協議 266
10.10 當前的狀態 267
10.11 更多信息 267
第三部分 識別、認證與安全
第11章 客戶端識別與cookie 機制 271
11.1 個性化接觸 272
11.2 HTTP 首部 273
11.3 客戶端IP 地址 274
11.4 用戶登錄 275
11.5 胖URL 277
11.6 cookie 278
11.6.1 cookie 的類型 278
11.6.2 cookie 是如何工作的 279
11.6.3 cookie 罐:客戶端的狀態 280
11.6.4 不同站點使用不同的cookie 282
11.6.5 cookie 成分 283
11.6.6 cookies 版本0(Netscape) 284
11.6.7 cookies 版本1(RFC 2965) 285
11.6.8 cookie 與會話跟蹤 288
11.6.9 cookie 與緩存 290
11.6.10 cookie、安全性和隱私 291
11.7 更多信息 292
第12章 基本認證機制 293
12.1 認證 294
12.1.1 HTTP 的質詢/ 響應認證框架 294
12.1.2 認證協議與首部 295
12.1.3 安全域 296
12.2 基本認證 297
12.2.1 基本認證實例 298
12.2.2 Base-64 用戶名/ 密碼編碼 298
12.2.3 代理認證 299
12.3 基本認證的安全缺陷 300
12.4 更多信息 301
第13章 摘要認證 303
13.1 摘要認證的改進 304
13.1.1 用摘要保護密碼 304
13.1.2 單向摘要 306
13.1.3 用隨機數防止重放攻擊 307
13.1.4 摘要認證的握手機制 307
13.2 摘要的計算 308
13.2.1 摘要算法的輸入數據 308
13.2.2 算法H(d) 和KD(s,d) 310
13.2.3 與安全性相關的數據(A1) 310
13.2.4 與報文有關的數據(A2) 310
13.2.5 摘要算法總述 311
13.2.6 摘要認證會話 312
13.2.7 預授權 312
13.2.8 隨機數的選擇 315
13.2.9 對稱認證 315
13.3 增強保護質量 316
13.3.1 報文完整性保護 316
13.3.2 摘要認證首部 317
13.4 應該考慮的實際問題 317
13.4.1 多重質詢 318
13.4.2 差錯處理 318
13.4.3 保護空間 318
13.4.4 重寫URI 319
13.4.5 緩存 319
13.5 安全性考慮 320
13.5.1 首部篡改 320
13.5.2 重放攻擊 320
13.5.3 多重認證機制 320
13.5.4 詞典攻擊 321
13.5.5 惡意代理攻擊和中間人攻擊 321
13.5.6 選擇明文攻擊 321
13.5.7 存儲密碼 322
13.6 更多信息 322
第14章 安全HTTP 323
14.1 保護HTTP 的安全 324
14.2 數字加密 326
14.2.1 密碼編制的機制與技巧 326
14.2.2 密碼 327
14.2.3 密碼機 328
14.2.4 使用了密鑰的密碼 328
14.2.5 數字密碼 328
14.3 對稱密鑰加密技術 330
14.3.1 密鑰長度與枚舉攻擊 330
14.3.2 建立共享密鑰 332
14.4 公開密鑰加密技術 332
14.4.1 RSA 333
14.4.2 混合加密系統和會話密鑰 334
14.5 數字簽名 334
14.6 數字證書 336
14.6.1 證書的主要內容 336
14.6.2 X.509 v3 證書 337
14.6.3 用證書對服務器進行認證 338
14.7 HTTPS——細節介紹 339
14.7.1 HTTPS 概述 339
14.7.2 HTTPS 方案 340
14.7.3 建立安全傳輸 341
14.7.4 SSL 握手 341
14.7.5 服務器證書 343
14.7.6 站點證書的有效性 344
14.7.7 虛擬主機與證書 345
14.8 HTTPS 客戶端實例 345
14.8.1 OpenSSL 346
14.8.2 簡單的HTTPS 客戶端 347
14.8.3 執行OpenSSL 客戶端 350
14.9 通過代理以隧道形式傳輸安全流量 351
14.10 更多信息 353
14.10.1 HTTP 安全性 353
14.10.2 SSL 與TLS 353
14.10.3 公開密鑰基礎設施 354
14.10.4 數字密碼 354
第四部分 實體、編碼和國際化
第15章 實體和編碼 357
15.1 報文是箱子,實體是貨物 359
15.2 Content-Length: 實體的大小 361
15.2.1 檢測截尾 361
15.2.2 錯誤的Content-Length 362
15.2.3 Content-Length 與持久連接 362
15.2.4 內容編碼 362
15.2.5 確定實體主體長度的規則 362
15.3 實體摘要 364
15.4 媒體類型和字符集 364
15.4.1 文本的字符編碼 365
15.4.2 多部分媒體類型 365
15.4.3 多部分表格提交 366
15.4.4 多部分範圍響應 367
15.5 內容編碼 368
15.5.1 內容編碼過程 368
15.5.2 內容編碼類型 369
15.5.3 Accept-Encoding 首部 369
15.6 傳輸編碼和分塊編碼 371
15.6.1 可靠傳輸 371
15.6.2 Transfer-Encoding 首部 372
15.6.3 分塊編碼 373
15.6.4 內容編碼與傳輸編碼的結合 375
15.6.5 傳輸編碼的規則 375
15.7 隨時間變化的實例 375
15.8 驗證碼和新鮮度 376
15.8.1 新鮮度 377
15.8.2 有條件的請求與驗證碼 378
15.9 範圍請求 380
15.10 差異編碼 382
15.11 更多信息 385
第16章 國際化 387
16.1 HTTP 對國際性內容的支持 388
16.2 字符集與HTTP 389
16.2.1 字符集是把字符轉換為二進制碼的編碼 389
16.2.2 字符集和編碼如何工作 390
16.2.3 字符集不對,字符就不對 391
16.2.4 標準化的MIME charset 值 391
16.2.5 Content-Type 首部和Charset 首部以及META 標誌 393
16.2.6 Accept-Charset 首部 393
16.3 多語言字符編碼入門 394
16.3.1 字符集術語 394
16.3.2 字符集的命名很糟糕 395
16.3.3 字符 396
16.3.4 字形、連筆以及表示形式 396
16.3.5 編碼後的字符集 397
16.3.6 字符編碼方案 399
16.4 語言標記與HTTP 402
16.4.1 Content-Language 首部 402
16.4.2 Accept-Language 首部 403
16.4.3 語言標記的類型 404
16.4.4 子標記 404
16.4.5 大小寫 405
16.4.6 IANA 語言標記註冊 405
16.4.7 第一個子標記——名字空間 405
16.4.8 第二個子標記——名字空間 406
16.4.9 其余子標記——名字空間 407
16.4.10 配置和語言有關的首選項 407
16.4.11 語言標記參考表 407
16.5 國際化的URI 408
16.5.1 全球性的可轉抄能力與有意義的字符的較量 408
16.5.2 URI 字符集合 408
16.5.3 轉義和反轉義 409
16.5.4 轉義國際化字符 409
16.5.5 URI 中的模態切換 410
16.6 其他需要考慮的地方 410
16.6.1 首部和不合規範的數據 410
16.6.2 日期 411
16.6.3 域名 411
16.7 更多信息 411
16.7.1 附錄 411
16.7.2 互聯網的國際化 411
16.7.3 國際標準 412
第17章 內容協商與轉碼 413
17.1 內容協商技術 414
17.2 客戶端驅動的協商 415
17.3 服務器驅動的協商 415
17.3.1 內容協商首部集 416
17.3.2 內容協商首部中的質量值 417
17.3.3 隨其他首部集而變化 417
17.3.4 Apache 中的內容協商 417
17.3.5 服務器端擴展 418
17.4 透明協商 419
17.4.1 進行緩存與備用候選 419
17.4.2 Vary 首部 420
17.5 轉碼 422
17.5.1 格式轉換 422
17.5.2 信息綜合 423
17.5.3 內容註入 423
17.5.4 轉碼與靜態預生成的對比 423
17.6 下一步計劃 424
17.7 更多信息 424
第五部分 內容發布與分發
第18章 Web 主機托管 429
18.1 主機托管服務 430
18.2 虛擬主機托管 431
18.2.1 虛擬服務器請求缺乏主機信息 432
18.2.2 設法讓虛擬主機托管正常工作 433
18.2.3 HTTP/1.1 的Host 首部 437
18.3 使網站更可靠 438
18.3.1 鏡像的服務器集群 438
18.3.2 內容分發網絡 440
18.3.3 CDN 中的反向代理緩存 440
18.3.4 CDN 中的代理緩存 440
18.4 讓網站更快 441
18.5 更多信息 441
第19章 發布系統 443
19.1 FrontPage 為支持發布而做的服務器擴展 444
19.1.1 FrontPage 服務器擴展 444
19.1.2 FrontPage 術語表 445
19.1.3 FrontPage 的RPC 協議 445
19.1.4 FrontPage 的安全模型 448
19.2 WebDAV 與協作寫作 449
19.2.1 WebDAV 的方法 449
19.2.2 WebDAV 與XML 450
19.2.3 WebDAV 首部集 451
19.2.4 WebDAV 的鎖定與防止覆寫 452
19.2.5 LOCK 方法 453
19.2.6 UNLOCK 方法 456
19.2.7 屬性和元數據 456
19.2.8 PROPFIND 方法 457
19.2.9 PROPPATCH 方法 459
19.2.10 集合與名字空間管理 460
19.2.11 MKCOL 方法 460
19.2.12 DELETE 方法 461
19.2.13 COPY 與MOVE 方法 462
19.2.14 增強的HTTP/1.1 方法 465
19.2.15 WebDAV 中的版本管理 466
19.2.16 WebDAV 的未來發展 466
19.3 更多信息 467
第20章 重定向與負載均衡 469
20.1 為什麽要重定向 470
20.2 重定向到何地 471
20.3 重定向協議概覽 471
20.4 通用的重定向方法 474
20.4.1 HTTP 重定向 474
20.4.2 DNS 重定向 475
20.4.3 任播尋址 480
20.4.4 IP MAC 轉發 481
20.4.5 IP 地址轉發 482
20.4.6 網元控制協議 484
20.5 代理的重定向方法 485
20.5.1 顯式瀏覽器配置 485
20.5.2 代理自動配置 485
20.5.3 Web 代理自動發現協議 487
20.6 緩存重定向方法 492
20.7 因特網緩存協議 496
20.8 緩存陣列路由協議 497
20.9 超文本緩存協議 500
20.9.1 HTCP 認證 502
20.9.2 設置緩存策略 503
20.10 更多信息 504
第21章 日誌記錄與使用情況跟蹤 505
21.1 記錄內容 506
21.2 日誌格式 507
21.2.1 常見日誌格式 507
21.2.2 組合日誌格式 508
21.2.3 網景擴展日誌格式 509
21.2.4 網景擴展2 日誌格式 510
21.2.5 Squid 代理日誌格式 512
21.3 命中率測量 515
21.3.1 概述 515
21.3.2 Meter 首部 516
21.4 關於隱私的考慮 517
21.5 更多信息 518
第六部分 附 錄
附錄A URI 方案 521
附錄B HTTP 狀態碼 529
附錄C HTTP 首部參考 533
附錄D MIME 類型 557
附錄E Base-64 編碼 603
附錄F 摘要認證 607
附錄G 語言標記 615
附錄H MIME 字符集註冊表 641
下載地址:網盤下載
圖書簡介
編輯《HTTP權威指南》由古爾利所著,《HTTP權威指南》詳細解釋了如何用HTTP來開發基於Web的應用程序,核心的因特網協議如何與架構構建塊交互,如何正確實現因特網客戶和服務器等。《HTTP權威指南》的中心內容是HTTP,本質是理解Web的工作原理,以及如何將這些知識應用到Web編程和管理之中,主要涵蓋HTTP的技術運作方式、產生動機、性能和目標以及一些相關技術問題。 《HTTP權威指南》適合所有想了解HTTP和Web底層結構的人閱讀。編輯推薦
編輯HTTP(HyperText Transfer Protocol,超文本傳輸協議)是Web客戶端與服務器交互文檔和信息時所使用的協議,是每個成功Web事務的幕後推手。眾所周知,我們每天訪問公司內部網絡、搜索絕版書籍、研究統計信息時所使用的瀏覽器的核心就是HTTP。但HTTP的應用遠不僅僅是瀏覽Web內容。由於HTTP既簡單又普及,很多其他網絡應用程序也選擇了它,尤其是采用SOAP和XML-RPC這樣的Web服務。詳細解釋了HTTP協議,包括它是如何工作的,如何用它來開發基於Web的應用程序。但本書並不只介紹了HTTP,還探討了HTTP有效工作所依賴的所有其他核心因特網技術。盡管HTTP是本書的中心內容,但本書的本質是理解Web的工作原理,以及如何將這些知識應用到Web編程和管理之中去,主要涵蓋HTTP的技術運作方式、產生動機、性能和目標,以及一些相關技術問題。
本書是HTTP協議及相關Web技術方面的著作,主要內容包括:
HTTP方法、首部以及狀態碼
優化代理和緩存的方法
設計Web機器人和爬蟲的策略
Cookies、認證以及安全HTTP
國際化及內容協商
重定向及負載平衡策略
要想高效地進行Web開發,所有Web程序員、管理員和應用程序開發者都應該熟悉HTTP。很多書籍只介紹了Web的使用方式,而本書則深入說明了Web的工作原理。[1]
前言
編輯超文本傳輸協議(Hypertext Transfer Protocol,HTTP)是在萬維網上進行通信時所使用的協議方案。HTTP有很多應用,但最著名的是用於web瀏覽器和web服務器之間的雙工通信。HTTP起初是一個簡單的協議,因此你可能會認為關於這個協議沒有太多好說的。但現在,你手上拿著的是卻一本兩磅重 的書。如果你對我們怎麽會寫出一本650頁 的關於HTTP的書感到奇怪的話,可以去看一下目錄。本書不僅僅是一本HTTP首部的參考手冊;它是一本名副其實的web結構聖經。本書中,我們嘗試著將HTTP中一些互相關聯且常被誤解的規則梳理清楚,並編寫了一系列基於各種主題的章節,對HTTP各方面的特性進行了介紹。縱觀全書,我們對HTTP“為什麽”這樣做進行了詳細的解釋,而不僅僅停留在它是“怎麽做”的。而且,為了節省大家尋找參考文獻的時間,我們還對很多HTTP應用程序正常工作所必須的、重要的非HTTP技術進行了介紹。在組織得便於使用的附錄中,可以找到按照字母排序的首部參考(這些首部構成了最常見的HTTP文本的基礎)。我們希望這種概念性的設計有助於讀者對HTTP的使用。本書是為所有希望理解HTTP以及Web底層結構的人編寫的。軟硬件工程師也可以將本書作為HTTP及相關web技術的條理清楚的參考書使用。系統架構師和網絡管理員可以通過本書更好地了解如何設計、實現並管理復雜的網絡架構。性能工程師和分析人員可以從高速緩存和性能優化的相關章節中獲益。市場營銷和咨詢專家可以通過概念的介紹更好地理解web技術的前景。本書對一些常見的誤解進行了說明,推薦了“各種使用訣竅”,提供了便捷的參考資料,並且對枯燥且令人費解的標準規範進行了可讀性很強的介紹。在這本書裏,我們對Web正常工作所必須且互相關聯的技術進行了詳細的介紹。本書是很多對因特網技術充滿熱情的人經過大量工作寫成的。希望對你有所幫助。運行實例:Joe的硬件商店本書的很多章節都涉及到了一個假想的在線硬件及家裝商店實例,通過這個名為“Joe硬件”的商店對一些技術概念進行了說明。我們為這個商店構建了一個真實的web站點,以便大家對書中的部分實例進行測試。只要本書仍在銷售,我們就會一直維護好這個web站點。[1]作者簡介
編輯David Gourley是Endeca的首席技術官(Chief Technology Officer),負責Endeca產品的研究及開發。Endeca開發的因特網及內部網絡信息訪問解決方案為企業級數據的導航及研究提供了一些新的方式。在到Endeca工作之前,David是Inktomi基礎工程組的一員,他在那兒幫助開發了Inktomi的因特網搜索數據庫,是Inktomi的Web緩存產品的主要開發者。David在加州大學伯克利分校獲得了計算機科學的學士學位,還擁有Web技術方面的幾項專利。Brian Totty最近出任了Inktomi公司(這是1996年他參與建立的一家公司)研發部副總裁,在公司中他負責Web緩存、流媒體及因特網搜索技術的研發工作。他曾是Silicon Graphics公司的一名科學家,他在那兒為高性能網絡和超級計算機系統設計軟件並對其進行優化。在那之前,他是蘋果計算機公司高級技術組的一名工程師。Brian在伊利諾伊大學Urbana-Champaign分校獲得了計算機科學的博士學位,在MIT獲得了計算機科學及電子工程的學士學位,在那裏他獲得了計算機系統研究的Organick獎。他還為加州大學擴展系統開發並講授了一些屢獲殊榮的因特網技術方面的課程。Marjorie Sayer在Inktomi公司負責編寫Web緩存方面的軟件。在加州大學伯克利分校獲得了數學碩士和博士學位之後,一直致力於數學課程的改革。從1990年開始致力於能量資源管理、並行系統軟件、電話和網絡方面的寫作。Sailu Reddy目前在Inktomi公司負責嵌入式的性能增強型HTTP 代理的開發。Sailu從事復雜軟件系統的開發已經有12年了,從1995年開始深入Web架構的研發工作。他是Netscape第一臺Web服務器、Web 代理產品,以及後面幾代產品的核心工程師。他具備HTTP應用程序、數據壓縮技術、數據庫引擎以及合作管理等方面的技術經驗。Sailu在亞裏桑那大學獲得了信息系統的碩士學位並握有Web技術方面的多項專利。Anshu Aggarwal是Inktomi公司的工程總監。他領導著Inktomi公司Web緩存產品的協議處理工程組,從1997年就開始參與Inktomi的Web技術設計工作。Anshu在科羅拉多大學Boulder分校獲得了計算機科學的碩士和博士學位,從事分布式多處理器的內存一致性技術研究。他還擁有電子工程的碩士和學士學位。Anshu撰寫了多篇技術論文,還擁有兩項專利。[2]圖書目錄
編輯目錄第一部分 HTTP:Web 的基礎
第1章 HTTP 概述 3
1.1 HTTP——因特網的多媒體信使 4
1.2 Web 客戶端和服務器 4
1.3 資源 5
1.3.1 媒體類型 6
1.3.2 URI 7
1.3.3 URL 7
1.3.4 URN 8
1.4 事務 9
1.4.1 方法 9
1.4.2 狀態碼 10
1.4.3 Web 頁面中可以包含多個對象 10
1.5 報文 11
1.6 連接 13
1.6.1 TCP/IP 13
1.6.2 連接、IP 地址及端口號 14
1.6.3 使用Telnet 實例 16
1.7 協議版本 18
1.8 Web 的結構組件 19
1.8.1 代理 19
1.8.2 緩存 20
1.8.3 網關 20
1.8.4 隧道 21
1.8.5 Agent 代理 21
1.9 起始部分的結束語 22
1.10 更多信息 22
1.10.1 HTTP 協議信息 22
1.10.2 歷史透視 23
1.10.3 其他萬維網信息 23
第2章 URL 與資源 25
2.1 瀏覽因特網資源 26
2.2 URL 的語法 28
2.2.1 方案——使用什麽協議 29
2.2.2 主機與端口 30
2.2.3 用戶名和密碼 30
2.2.4 路徑 31
2.2.5 參數 31
2.2.6 查詢字符串 32
2.2.7 片段 33
2.3 URL 快捷方式 34
2.3.1 相對URL 34
2.3.2 自動擴展URL 37
2.4 各種令人頭疼的字符 38
2.4.1 URL 字符集 38
2.4.2 編碼機制 38
2.4.3 字符限制 39
2.4.4 另外一點說明 40
2.5 方案的世界 40
2.6 未來展望 42
2.7 更多信息 44
第3章 HTTP 報文 45
3.1 報文流 46
3.1.1 報文流入源端服務器 46
3.1.2 報文向下遊流動 47
3.2 報文的組成部分 47
3.2.1 報文的語法 48
3.2.2 起始行 50
3.2.3 首部 53
3.2.4 實體的主體部分 55
3.2.5 版本0.9 的報文 55
3.3 方法 56
3.3.1 安全方法 56
3.3.2 GET 56
3.3.3 HEAD 57
3.3.4 PUT 57
3.3.5 POST 58
3.3.6 TRACE 58
3.3.7 OPTIONS 60
3.3.8 DELETE 60
3.3.9 擴展方法 61
3.4 狀態碼 62
3.4.1 100 ~ 199——信息性狀態碼 62
3.4.2 200 ~ 299——成功狀態碼 63
3.4.3 300 ~ 399——重定向狀態碼 64
3.4.4 400 ~ 499——客戶端錯誤狀態碼 68
3.4.5 500 ~ 599——服務器錯誤狀態碼 69
3.5 首部 70
3.5.1 通用首部 71
3.5.2 請求首部 72
3.5.3 響應首部 74
3.5.4 實體首部 75
3.6 更多信息 77
第4章 連接管理 79
4.1 TCP 連接 80
4.1.1 TCP 的可靠數據管道 80
4.1.2 TCP 流是分段的、由IP 分組傳送 81
4.1.3 保持TCP 連接的正確運行 82
4.1.4 用TCP 套接字編程 84
4.2 對TCP 性能的考慮 85
4.2.1 HTTP 事務的時延 86
4.2.2 性能聚焦區域 87
4.2.3 TCP 連接的握手時延 87
4.2.4 延遲確認 88
4.2.5 TCP 慢啟動 89
4.2.6 Nagle 算法與TCP_NODELAY 89
4.2.7 TIME_WAIT 累積與端口耗盡 90
4.3 HTTP 連接的處理 91
4.3.1 常被誤解的Connection 首部 91
4.3.2 串行事務處理時延 92
4.4 並行連接 94
4.4.1 並行連接可能會提高頁面的加載速度 94
4.4.2 並行連接不一定更快 95
4.4.3 並行連接可能讓人“感覺”更快一些 95
4.5 持久連接 96
4.5.1 持久以及並行連接 96
4.5.2 HTTP/1.0+ keep-alive 連接 97
4.5.3 Keep-Alive 操作 98
4.5.4 Keep-Alive 選項 98
4.5.5 Keep-Alive 連接的限制和規則 99
4.5.6 Keep-Alive 和啞代理 100
4.5.7 插入Proxy-Connection 102
4.5.8 HTTP/1.1 持久連接 104
4.5.9 持久連接的限制和規則 104
4.6 管道化連接 105
4.7 關閉連接的奧秘 106
4.7.1 “ 任意”解除連接 106
4.7.2 Content-Length 及截尾操作 107
4.7.3 連接關閉容限、重試以及冪等性 107
4.7.4 正常關閉連接 108
4.8 更多信息 110
4.8.1 HTTP 連接 110
4.8.2 HTTP 性能問題 110
4.8.3 TCP/IP 111
第二部分 HTTP 結構
第5章 Web 服務器 115
5.1 各種形狀和尺寸的Web 服務器 116
5.1.1 Web 服務器的實現 116
5.1.2 通用軟件Web 服務器 117
5.1.3 Web 服務器設備 117
5.1.4 嵌入式Web 服務器 118
5.2 最小的Perl Web 服務器 118
5.3 實際的Web 服務器會做些什麽 120
5.4 第一步——接受客戶端連接 121
5.4.1 處理新連接 121
5.4.2 客戶端主機名識別 122
5.4.3 通過ident 確定客戶端用戶 122
5.5 第二步——接收請求報文 123
5.5.1 報文的內部表示法 124
5.5.2 連接的輸入/ 輸出處理結構 125
5.6 第三步——處理請求 126
5.7 第四步——對資源的映射及訪問 126
5.7.1 docroot 127
5.7.2 目錄列表 129
5.7.3 動態內容資源的映射 130
5.7.4 服務器端包含項 131
5.7.5 訪問控制 131
5.8 第五步——構建響應 131
5.8.1 響應實體 131
5.8.2 MIME 類型 132
5.8.3 重定向 133
5.9 第六步——發送響應 134
5.10 第七步——記錄日誌 134
5.11 更多信息 134
第6章 代理 135
6.1 Web 的中間實體 136
6.1.1 私有和共享代理 136
6.1.2 代理與網關的對比 137
6.2 為什麽使用代理 138
6.3 代理會去往何處 143
6.3.1 代理服務器的部署 144
6.3.2 代理的層次結構 144
6.3.3 代理是如何獲取流量的 147
6.4 客戶端的代理設置 148
6.4.1 客戶端的代理配置:手工配置 149
6.4.2 客戶端代理配置:PAC 文件 149
6.4.3 客戶端代理配置:WPAD 150
6.5 與代理請求有關的一些棘手問題 151
6.5.1 代理URI 與服務器URI 的不同 151
6.5.2 與虛擬主機一樣的問題 152
6.5.3 攔截代理會收到部分URI 153
6.5.4 代理既可以處理代理請求,也可以處理服務器請求 154
6.5.5 轉發過程中對URI 的修改 154
6.5.6 URI 的客戶端自動擴展和主機名解析 155
6.5.7 沒有代理時URI 的解析 155
6.5.8 有顯式代理時URI 的解析 156
6.5.9 有攔截代理時URI 的解析 157
6.6 追蹤報文 158
6.6.1 Via 首部 158
6.6.2 TRACE 方法 162
6.7 代理認證 164
6 | 目錄
6.8 代理的互操作性 165
6.8.1 處理代理不支持的首部和方法 166
6.8.2 OPTIONS:發現對可選特性的支持 166
6.8.3 Allow 首部 167
6.9 更多信息 167
第7章 緩存 169
7.1 冗余的數據傳輸 170
7.2 帶寬瓶頸 170
7.3 瞬間擁塞 171
7.4 距離時延 172
7.5 命中和未命中的 173
7.5.1 再驗證 173
7.5.2 命中率 175
7.5.3 字節命中率 176
7.5.4 區分命中和未命中的情況 176
7.6 緩存的拓撲結構 177
7.6.1 私有緩存 177
7.6.2 公有代理緩存 177
7.6.3 代理緩存的層次結構 179
7.6.4 網狀緩存、內容路由以及對等緩存 180
7.7 緩存的處理步驟 181
7.7.1 第一步——接收 181
7.7.2 第二步——解析 182
7.7.3 第三步——查找 182
7.7.4 第四步——新鮮度檢測 182
7.7.5 第五步——創建響應 182
7.7.6 第六步——發送 183
7.7.7 第七步——日誌 183
7.7.8 緩存處理流程圖 183
7.8 保持副本的新鮮 183
7.8.1 文檔過期 184
7.8.2 過期日期和使用期 185
7.8.3 服務器再驗證 185
7.8.4 用條件方法進行再驗證 186
7.8.5 If-Modified-Since:Date 再驗證 187
7.8.6 If-None-Match:實體標簽再驗證 189
7.8.7 強弱驗證器 190
7.8.8 什麽時候應該使用實體標簽和最近修改日期 190
7.9 控制緩存的能力 191
7.9.1 no-Store 與no-Cache 響應首部 191
7.9.2 max-age 響應首部 192
7.9.3 Expires 響應首部 192
7.9.4 must-revalidate 響應首部 192
7.9.5 試探性過期 193
7.9.6 客戶端的新鮮度限制 194
7.9.7 註意事項 194
7.10 設置緩存控制 195
7.10.1 控制Apache 的HTTP 首部 195
7.10.2 通過HTTP-EQUIV 控制HTML 緩存 196
7.11 詳細算法 197
7.11.1 使用期和新鮮生存期 198
7.11.2 使用期的計算 198
7.11.3 完整的使用期計算算法 201
7.11.4 新鮮生存期計算 202
7.11.5 完整的服務器——新鮮度算法 202
7.12 緩存和廣告 204
7.12.1 發布廣告者的兩難處境 204
7.12.2 發布者的響應 204
7.12.3 日誌遷移 205
7.12.4 命中計數和使用限制 205
7.13 更多信息 205
第8章 集成點:網關、隧道及中繼 207
8.1 網關 208
8.2 協議網關 210
8.2.1 HTTP/*:服務器端Web 網關 211
8.2.2 HTTP/HTTPS:服務器端安全網關 212
8.2.3 HTTPS/HTTP 客戶端安全加速器網關 212
8.3 資源網關 213
8.3.1 CGI 215
8.3.2 服務器擴展API 215
8.4 應用程序接口和Web 服務 216
8.5 隧道 217
8.5.1 用CONNECT 建立HTTP 隧道 217
8.5.2 數據隧道、定時及連接管理 219
8.5.3 SSL 隧道 219
8.5.4 SSL 隧道與HTTP/HTTPS 網關的對比 220
8.5.5 隧道認證 221
8.5.6 隧道的安全性考慮 221
8.6 中繼 222
8.7 更多信息 224
第9章 Web 機器人 225
9.1 爬蟲及爬行方式 226
9.1.1 從哪兒開始:根集 226
9.1.2 鏈接的提取以及相對鏈接的標準化 227
9.1.3 避免環路的出現 228
9.1.4 循環與復制 228
9.1.5 面包屑留下的痕跡 229
9.1.6 別名與機器人環路 230
9.1.7 規範化URL 230
9.1.8 文件系統連接環路 231
9.1.9 動態虛擬Web 空間 232
9.1.10 避免循環和重復 233
9.2 機器人的HTTP 236
9.2.1 識別請求首部 236
9.2.2 虛擬主機 236
9.2.3 條件請求 237
9.2.4 對響應的處理 238
9.2.5 User-Agent 導向 239
9.3 行為不當的機器人 239
9.4 拒絕機器人訪問 240
9.4.1 拒絕機器人訪問標準 241
9.4.2 Web 站點和robots.txt 文件 242
9.4.3 robots.txt 文件的格式 243
9.4.4 其他有關robots.txt 的知識 246
9.4.5 緩存和robots.txt 的過期 246
9.4.6 拒絕機器人訪問的Perl 代碼 246
9.4.7 HTML 的robot-control 元標簽 249
9.5 機器人的規範 251
9.6 搜索引擎 254
9.6.1 大格局 255
9.6.2 現代搜索引擎結構 255
9.6.3 全文索引 255
9.6.4 發布查詢請求 257
9.6.5 對結果進行排序,並提供查詢結果 258
9.6.6 欺詐 258
9.7 更多信息 258
第10章 HTTP-NG 261
10.1 HTTP 發展中存在的問題 262
10.2 HTTP-NG 的活動 263
10.3 模塊化及功能增強 263
10.4 分布式對象 264
10.5 第一層——報文傳輸 264
10.6 第二層——遠程調用 265
10.7 第三層——Web 應用 265
10.8 WebMUX 265
10.9 二進制連接協議 266
10.10 當前的狀態 267
10.11 更多信息 267
第三部分 識別、認證與安全
第11章 客戶端識別與cookie 機制 271
11.1 個性化接觸 272
11.2 HTTP 首部 273
11.3 客戶端IP 地址 274
11.4 用戶登錄 275
11.5 胖URL 277
11.6 cookie 278
11.6.1 cookie 的類型 278
11.6.2 cookie 是如何工作的 279
11.6.3 cookie 罐:客戶端的狀態 280
11.6.4 不同站點使用不同的cookie 282
11.6.5 cookie 成分 283
11.6.6 cookies 版本0(Netscape) 284
11.6.7 cookies 版本1(RFC 2965) 285
11.6.8 cookie 與會話跟蹤 288
11.6.9 cookie 與緩存 290
11.6.10 cookie、安全性和隱私 291
11.7 更多信息 292
第12章 基本認證機制 293
12.1 認證 294
12.1.1 HTTP 的質詢/ 響應認證框架 294
12.1.2 認證協議與首部 295
12.1.3 安全域 296
12.2 基本認證 297
12.2.1 基本認證實例 298
12.2.2 Base-64 用戶名/ 密碼編碼 298
12.2.3 代理認證 299
12.3 基本認證的安全缺陷 300
12.4 更多信息 301
第13章 摘要認證 303
13.1 摘要認證的改進 304
13.1.1 用摘要保護密碼 304
13.1.2 單向摘要 306
13.1.3 用隨機數防止重放攻擊 307
13.1.4 摘要認證的握手機制 307
13.2 摘要的計算 308
13.2.1 摘要算法的輸入數據 308
13.2.2 算法H(d) 和KD(s,d) 310
13.2.3 與安全性相關的數據(A1) 310
13.2.4 與報文有關的數據(A2) 310
13.2.5 摘要算法總述 311
13.2.6 摘要認證會話 312
13.2.7 預授權 312
13.2.8 隨機數的選擇 315
13.2.9 對稱認證 315
13.3 增強保護質量 316
13.3.1 報文完整性保護 316
13.3.2 摘要認證首部 317
13.4 應該考慮的實際問題 317
13.4.1 多重質詢 318
13.4.2 差錯處理 318
13.4.3 保護空間 318
13.4.4 重寫URI 319
13.4.5 緩存 319
13.5 安全性考慮 320
13.5.1 首部篡改 320
13.5.2 重放攻擊 320
13.5.3 多重認證機制 320
13.5.4 詞典攻擊 321
13.5.5 惡意代理攻擊和中間人攻擊 321
13.5.6 選擇明文攻擊 321
13.5.7 存儲密碼 322
13.6 更多信息 322
第14章 安全HTTP 323
14.1 保護HTTP 的安全 324
14.2 數字加密 326
14.2.1 密碼編制的機制與技巧 326
14.2.2 密碼 327
14.2.3 密碼機 328
14.2.4 使用了密鑰的密碼 328
14.2.5 數字密碼 328
14.3 對稱密鑰加密技術 330
14.3.1 密鑰長度與枚舉攻擊 330
14.3.2 建立共享密鑰 332
14.4 公開密鑰加密技術 332
14.4.1 RSA 333
14.4.2 混合加密系統和會話密鑰 334
14.5 數字簽名 334
14.6 數字證書 336
14.6.1 證書的主要內容 336
14.6.2 X.509 v3 證書 337
14.6.3 用證書對服務器進行認證 338
14.7 HTTPS——細節介紹 339
14.7.1 HTTPS 概述 339
14.7.2 HTTPS 方案 340
14.7.3 建立安全傳輸 341
14.7.4 SSL 握手 341
14.7.5 服務器證書 343
14.7.6 站點證書的有效性 344
14.7.7 虛擬主機與證書 345
14.8 HTTPS 客戶端實例 345
14.8.1 OpenSSL 346
14.8.2 簡單的HTTPS 客戶端 347
14.8.3 執行OpenSSL 客戶端 350
14.9 通過代理以隧道形式傳輸安全流量 351
14.10 更多信息 353
14.10.1 HTTP 安全性 353
14.10.2 SSL 與TLS 353
14.10.3 公開密鑰基礎設施 354
14.10.4 數字密碼 354
第四部分 實體、編碼和國際化
第15章 實體和編碼 357
15.1 報文是箱子,實體是貨物 359
15.2 Content-Length: 實體的大小 361
15.2.1 檢測截尾 361
15.2.2 錯誤的Content-Length 362
15.2.3 Content-Length 與持久連接 362
15.2.4 內容編碼 362
15.2.5 確定實體主體長度的規則 362
15.3 實體摘要 364
15.4 媒體類型和字符集 364
15.4.1 文本的字符編碼 365
15.4.2 多部分媒體類型 365
15.4.3 多部分表格提交 366
15.4.4 多部分範圍響應 367
15.5 內容編碼 368
15.5.1 內容編碼過程 368
15.5.2 內容編碼類型 369
15.5.3 Accept-Encoding 首部 369
15.6 傳輸編碼和分塊編碼 371
15.6.1 可靠傳輸 371
15.6.2 Transfer-Encoding 首部 372
15.6.3 分塊編碼 373
15.6.4 內容編碼與傳輸編碼的結合 375
15.6.5 傳輸編碼的規則 375
15.7 隨時間變化的實例 375
15.8 驗證碼和新鮮度 376
15.8.1 新鮮度 377
15.8.2 有條件的請求與驗證碼 378
15.9 範圍請求 380
15.10 差異編碼 382
15.11 更多信息 385
第16章 國際化 387
16.1 HTTP 對國際性內容的支持 388
16.2 字符集與HTTP 389
16.2.1 字符集是把字符轉換為二進制碼的編碼 389
16.2.2 字符集和編碼如何工作 390
16.2.3 字符集不對,字符就不對 391
16.2.4 標準化的MIME charset 值 391
16.2.5 Content-Type 首部和Charset 首部以及META 標誌 393
16.2.6 Accept-Charset 首部 393
16.3 多語言字符編碼入門 394
16.3.1 字符集術語 394
16.3.2 字符集的命名很糟糕 395
16.3.3 字符 396
16.3.4 字形、連筆以及表示形式 396
16.3.5 編碼後的字符集 397
16.3.6 字符編碼方案 399
16.4 語言標記與HTTP 402
16.4.1 Content-Language 首部 402
16.4.2 Accept-Language 首部 403
16.4.3 語言標記的類型 404
16.4.4 子標記 404
16.4.5 大小寫 405
16.4.6 IANA 語言標記註冊 405
16.4.7 第一個子標記——名字空間 405
16.4.8 第二個子標記——名字空間 406
16.4.9 其余子標記——名字空間 407
16.4.10 配置和語言有關的首選項 407
16.4.11 語言標記參考表 407
16.5 國際化的URI 408
16.5.1 全球性的可轉抄能力與有意義的字符的較量 408
16.5.2 URI 字符集合 408
16.5.3 轉義和反轉義 409
16.5.4 轉義國際化字符 409
16.5.5 URI 中的模態切換 410
16.6 其他需要考慮的地方 410
16.6.1 首部和不合規範的數據 410
16.6.2 日期 411
16.6.3 域名 411
16.7 更多信息 411
16.7.1 附錄 411
16.7.2 互聯網的國際化 411
16.7.3 國際標準 412
第17章 內容協商與轉碼 413
17.1 內容協商技術 414
17.2 客戶端驅動的協商 415
17.3 服務器驅動的協商 415
17.3.1 內容協商首部集 416
17.3.2 內容協商首部中的質量值 417
17.3.3 隨其他首部集而變化 417
17.3.4 Apache 中的內容協商 417
17.3.5 服務器端擴展 418
17.4 透明協商 419
17.4.1 進行緩存與備用候選 419
17.4.2 Vary 首部 420
17.5 轉碼 422
17.5.1 格式轉換 422
17.5.2 信息綜合 423
17.5.3 內容註入 423
17.5.4 轉碼與靜態預生成的對比 423
17.6 下一步計劃 424
17.7 更多信息 424
第五部分 內容發布與分發
第18章 Web 主機托管 429
18.1 主機托管服務 430
18.2 虛擬主機托管 431
18.2.1 虛擬服務器請求缺乏主機信息 432
18.2.2 設法讓虛擬主機托管正常工作 433
18.2.3 HTTP/1.1 的Host 首部 437
18.3 使網站更可靠 438
18.3.1 鏡像的服務器集群 438
18.3.2 內容分發網絡 440
18.3.3 CDN 中的反向代理緩存 440
18.3.4 CDN 中的代理緩存 440
18.4 讓網站更快 441
18.5 更多信息 441
第19章 發布系統 443
19.1 FrontPage 為支持發布而做的服務器擴展 444
19.1.1 FrontPage 服務器擴展 444
19.1.2 FrontPage 術語表 445
19.1.3 FrontPage 的RPC 協議 445
19.1.4 FrontPage 的安全模型 448
19.2 WebDAV 與協作寫作 449
19.2.1 WebDAV 的方法 449
19.2.2 WebDAV 與XML 450
19.2.3 WebDAV 首部集 451
19.2.4 WebDAV 的鎖定與防止覆寫 452
19.2.5 LOCK 方法 453
19.2.6 UNLOCK 方法 456
19.2.7 屬性和元數據 456
19.2.8 PROPFIND 方法 457
19.2.9 PROPPATCH 方法 459
19.2.10 集合與名字空間管理 460
19.2.11 MKCOL 方法 460
19.2.12 DELETE 方法 461
19.2.13 COPY 與MOVE 方法 462
19.2.14 增強的HTTP/1.1 方法 465
19.2.15 WebDAV 中的版本管理 466
19.2.16 WebDAV 的未來發展 466
19.3 更多信息 467
第20章 重定向與負載均衡 469
20.1 為什麽要重定向 470
20.2 重定向到何地 471
20.3 重定向協議概覽 471
20.4 通用的重定向方法 474
20.4.1 HTTP 重定向 474
20.4.2 DNS 重定向 475
20.4.3 任播尋址 480
20.4.4 IP MAC 轉發 481
20.4.5 IP 地址轉發 482
20.4.6 網元控制協議 484
20.5 代理的重定向方法 485
20.5.1 顯式瀏覽器配置 485
20.5.2 代理自動配置 485
20.5.3 Web 代理自動發現協議 487
20.6 緩存重定向方法 492
20.7 因特網緩存協議 496
20.8 緩存陣列路由協議 497
20.9 超文本緩存協議 500
20.9.1 HTCP 認證 502
20.9.2 設置緩存策略 503
20.10 更多信息 504
第21章 日誌記錄與使用情況跟蹤 505
21.1 記錄內容 506
21.2 日誌格式 507
21.2.1 常見日誌格式 507
21.2.2 組合日誌格式 508
21.2.3 網景擴展日誌格式 509
21.2.4 網景擴展2 日誌格式 510
21.2.5 Squid 代理日誌格式 512
21.3 命中率測量 515
21.3.1 概述 515
21.3.2 Meter 首部 516
21.4 關於隱私的考慮 517
21.5 更多信息 518
第六部分 附 錄
附錄A URI 方案 521
附錄B HTTP 狀態碼 529
附錄C HTTP 首部參考 533
附錄D MIME 類型 557
附錄E Base-64 編碼 603
附錄F 摘要認證 607
附錄G 語言標記 615
附錄H MIME 字符集註冊表 641
下載地址:網盤下載
《HTTP權威指南》高清中文版pdf