圖書簡介
《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的工作原理。
前言
超文本傳輸協定(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站點。
作者簡介
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撰寫了多篇技術論文,還擁有兩項專利。
圖書目錄
目錄
第一部分 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.509v3 證書 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
索引 661