[201209][HTTP 權威指南][陳涓][趙振平][譯]

==[201209][HTTP 權威指南][陳涓][趙振平][譯]==

第一部分 HTTP : Web 的基礎

第 1 章 HTTP 概述

1.1 HTTP - 因特網的多媒體信使

1.2 Web 客戶端和服務器

1.3 資源

1.3.1 媒體類型

1.3.2 URI

1.3.3 URL

1.3.4 URN

1.4 事務

1.4.1 方法

1.4.2 狀態碼

1.4.3 Web 頁面中可以包含多個對象

1.5 報文

1.6 連接

1.6.1 TCP/IP

1.6.2 連接、IP地址及端口號

1.6.3 使用 Telnet 實例

1.7 協議版本

1.8 Web 的結構組件

1.8.1 代理

1.8.2 緩存

1.8.3 網關

1.8.4 隧道

1.8.5 Agent 代理

1.9 起始部分的結束語

1.10 更多信息

1.10.1 HTTP 協議信息

1.10.2 歷史透視

1.10.3 其他萬維網信息

第 2 章 URL 與資源

2.1 瀏覽因特網資源

2.2 URL 的語法

2.2.1 方案-使用什麼協議

2.2.2 主機與端口

2.2.3 用戶名和密碼

2.2.4 路徑

2.2.5 參數

2.2.6 查詢字符串

2.2.7 片段

2.3 URL 快捷方式

2.3.1 相對 URL

2.3.2 自動擴展 URL

2.4 各種令人頭疼的字符

2.4.1 URL 字符集

2.4.2 編碼機制

2.4.3 字符限制

2.4.4 另外一點說明

2.5 方案的世界

2.6 未來展望

第 3 章 HTTP 報文

3.1 報文流

3.1.1 報文流入源端服務器

3.1.2 報文向下遊流動

3.2 報文的組成部分

3.2.1 報文的語法

3.2.2 起始行

3.2.3 首部

3.2.4 實體的主體部分

3.2.5 版本 0.9 的報文

3.3 方法

3.3.1 安全方法

3.3.2 GET

3.3.3 HEAD

3.3.4 PUT

3.3.5 POST

3.3.6 TRACE

3.3.7 OPTIONS

3.3.8 DELETE

3.3.9 擴展方法

3.4 狀態碼

3.4.1 100~199 - 信息性狀態碼

3.4.2 200~299 - 成功狀態碼

3.4.3 300~399 - 重定向狀態碼

3.4.4 400~499 - 客戶端錯誤狀態碼

3.4.5 500~599 - 服務器錯誤狀態碼

3.5 首部

3.5.1 通用首部

3.5.2 請求首部

3.5.3 響應首部

3.5.4 實體首部

3.6 更多信息

第 4 章 連接管理

4.1 TCP 連接

4.1.1 TCP 的可靠數據管道

4.1.2 TCP 流是分段的、由 IP 分組傳送

4.1.3 保持 TCP 連接的正確運行

4.1.4 用 TCP 套接字編程

4.2 對 TCP 性能的考慮

4.2.1 HTTP 事務的時延

4.2.2 性能聚焦區域

4.2.3 TCP 連接的握手時延

4.2.4 延遲確認

4.2.5 TCP 慢啓動

4.2.6 Nagle 算法與 TCP_NODELAY

4.2.7 TIME_WAIT 累積與端口耗盡

4.3 HTTP 連接的處理

4.3.1 常備誤解的 Connection 首部

4.3.2 串行事務處理時延

4.4 並行連接

4.4.1 並行連接可能會提高頁面的加載速度

4.4.2 並行連接不一定更快

4.4.3 並行連接可能讓人“感覺”更快一些

4.5 持久連接

4.5.1 持久以及並行連接

4.5.2 HTTP/1.0+ keep-alive 連接

4.5.3 Keep-Alive 操作

4.5.4 Keep-Alive 選項

4.5.5 Keep-Alive 連接的限制和規則

4.5.6 Keep-Alive 和啞代理

4.5.7 插入 Proxy-Connection

4.5.8 HTTP/1.1 持久連接

4.5.9 持久連接的限制和規則

4.6 管道化連接

4.7 關閉連接的奧祕

4.7.1 “任意”解除連接

4.7.2 Content-Length 及截尾操作

4.7.3 連接關閉容限、重試以及冪等性

4.7.4 正常關閉連接

4.8 更多信息

4.8.1 HTTP 連接

4.8.2 HTTP 性能問題

4.8.3 TCP/IP

第二部分 HTTP 結構

第 5 章 Web 服務器

5.1 各種形狀和尺寸的 Web 服務器

5.1.1 Web 服務器的實現

5.1.2 通用軟件 Web 服務器

5.1.3 Web 服務器設備

5.1.4 嵌入式 Web 服務器

5.2 最小的 Perl Web 服務器

5.3 實際的 Web 服務器會做什麼

5.4 第一步-接受客戶端連接

5.4.1 處理新連接

5.4.2 客戶端主機名識別

5.4.3 通過 ident 確定客戶端用戶

5.5 第二步-接收請求報文

5.5.1 報文的內部表示法

5.5.2 連接的輸入/輸出處理結構

5.6 第三步-處理請求

5.7 第四步-對資源的映射及訪問

5.7.1 docroot

5.7.2 目錄列表

5.7.3 動態內容資源的映射

5.7.4 服務器端包含項

5.7.5 訪問控制

5.8 第五步-構建響應

5.8.1 響應實體

5.8.2 MIME 類型

5.8.3 重定向

5.9 第六步-發送響應

5.10 第十步-記錄日誌

5.11 更多信息

第 6 章 代理

6.1 Web 的中間實體

6.1.1 私有和共享代理

6.1.2 代理與網關的對比

6.2 爲什麼使用代理

6.3 代理會去往何處

6.3.1 代理服務器的部署

6.3.2 代理的層次結構

6.3.3 代理是如何獲取流量的

6.4 客戶端的代理設置

6.4.1 客戶端的代理配置:手工配置

6.4.2 客戶端代理配置:PAC 文件

6.4.3 客戶端代理配置:WPAD

6.5 與代理請求有關的一些棘手問題

6.5.1 代理 URI 與服務器 URI 的不同

6.5.2 與虛擬主機一樣的問題

6.5.3 攔截代理會收到部分 URI

6.5.4 代理既可以處理代理請求,也可以處理服務器請求

6.5.5 轉發過程中對 URI 的修改

6.5.6 URI 的客戶端自動擴展和主機名解析

6.5.7 沒有代理時 URI 的解析

6.5.8 有顯示代理時 URI 的解析

6.5.9 有攔截代理時 URI 的解析

6.6 追蹤報文

6.6.1 Via 首部

6.6.2 TRACE 方法

6.7 代理認證

6.8 代理的互操作性

6.8.1 處理代理不支持的首部和方法

6.8.2 OPTIONS:發現對可選特性的支持

6.8.3 Allow 首部

6.9 更多信息

第 7 章 緩存

7.1 冗餘的數據傳輸

7.2 帶寬瓶頸

7.3 瞬間擁塞

7.4 距離時延

7.5 命中和未命中的

7.5.1 再驗證

7.5.2 命中率

7.5.3 字節命中率

7.5.4 區分命中和未命中的情況

7.6 緩存的拓撲結構

7.6.1 私有緩存

7.6.2 公有代理緩存

7.6.3 代理緩存的層次結構

7.6.4 網狀緩存、內容路由以及對等緩存

7.7 緩存的處理步驟

7.7.1 第一步-接收

7.7.2 第二步-解析

7.7.3 第三步-查找

7.7.4 第四步-新鮮度檢測

7.7.5 第五步-創建響應

7.7.6 第六步-發送

7.7.7 第七步-日誌

7.7.8 緩存處理流程圖

7.8 保持副本的新鮮

7.8.1 文檔過期

7.8.2 過期日期和使用期

7.8.3 服務器再驗證

7.8.4 用條件方法進行再驗證

7.8.5 If-Modified-Since:Date 再驗證

7.8.6 If-None-Match:實體標籤再驗證

7.8.7 強弱驗證器

7.8.8 什麼時候應該使用實體標籤和最近修改日期

7.9 控制緩存的能力

7.9.1 no-Store 與 no-Cache 響應首部

7.9.2 max-age 響應首部

7.9.3 Expires 響應首部

7.9.4 must-revalidate 響應首部

7.9.5 試探性過期

7.9.6 客戶端的新鮮度限制

7.9.7 注意事項

7.10 設置緩存控制

7.10.1 控制 Apache 的 HTTP 首部

7.10.2 通過 HTTP-EQUIV 控制 HTML 緩存

7.11 詳細算法

7.11.1 使用期和新鮮生存期

7.11.2 使用期的計算

7.11.3 完整的使用期計算算法

7.11.4 新鮮生存期計算

7.11.5 完整的服務器-新鮮度算法

7.12 緩存和廣告

7.12.1 發佈廣告者的兩難處境

7.12.2 發佈者的響應

7.12.3 日誌遷移

7.12.4 命中計數和使用限制

7.13 更多信息

第 8 章 集成點:網關、隧道及中繼

8.1 網關

8.2 協議網關

8.2.1 HTTP/* : 服務器端 Web 網關

8.2.2 HTTP/HTTPS : 服務器端安全網關

8.2.3 HTTPS/HTTP 客戶端安全加速器網關

8.3 資源網關

8.3.1 CGI

8.3.2 服務器擴展 API

8.4 應用程序接口和 Web 服務

8.5 隧道

8.5.1 用 CONNECT 建立 HTTP 隧道

8.5.2 數據隧道、定時及連接管理

8.5.3 SSL 隧道

8.5.4 SSL 隧道與 HTTP/HTTPS 網關的對比

8.5.5 隧道認證

8.5.6 隧道的安全性考慮

8.6 中繼

8.7 更多信息

第 9 章 Web 機器人

9.1 爬蟲及爬行方式

9.1.1 從哪兒開始:根集

9.1.2 鏈接的提取以及相對鏈接的標準化

9.1.3 避免環路的出現

9.1.4 循環與複製

9.1.5 麪包屑留下的痕跡

9.1.6 別名與機器人環路

9.1.7 規範化 URL

9.1.8 文件系統連接環路

9.1.9 動態虛擬 Web 空間

9.1.10 避免循環和重複

9.2 機器人的 HTTP

9.2.1 識別請求首部

9.2.2 虛擬主機

9.2.3 條件請求

9.2.4 對響應的處理

9.2.5 User-Agent 導向

9.3 行爲不當的機器人

9.4 拒絕機器人訪問

9.4.1 拒絕機器人訪問標準

9.4.2 Web 站點和 robots.txt 文件

9.4.3 robots.txt 文件的格式

9.4.4 其他有關 robots.txt 的知識

9.4.5 緩存和 robots.txt 的過期

9.4.6 拒絕機器人訪問的 Perl 代碼

9.4.7 HTML 的 robot-control 元標籤

9.5 機器人的規範

9.6 搜索引擎

9.6.1 大格局

9.6.2 現代搜索引擎結構

9.6.3 全文索引

9.6.4 發佈查詢請求

9.6.5 對結果進行排序,並提供查詢結果

9.6.6 欺詐

9.7 更多信息

第 10 章 HTTP-NG

10.1 HTTP 發展中存在的問題

10.2 HTTP-NG 的活動

10.3 模塊化及功能增強

10.4 分佈式對象

10.5 第一層-報文傳輸

10.6 第二層-遠程調用

10.7 第三層-Web 應用

10.8 WebMUX

10.9 二進制連接協議

10.10 當前的狀態

10.11 更多信息

第三部分 識別、認證與安全

11.1 個性化接觸

11.2 HTTP 首部

11.3 客戶端 IP 地址

11.4 用戶登錄

11.5 胖 URL

11.6.6 cookies 版本0(Netscape)

11.6.7 cookies 版本1(RFC 2965)

11.6.10 cookie、安全性和隱私

11.7 更多信息

第 12 章 基本認證機制

12.1 認證

12.1.1 HTTP 的質詢/響應認證框架

12.1.2 認證協議與首部

12.1.3 安全域

12.2 基本認證

12.2.1 基本認證實例

12.2.2 Base-64 用戶名/密碼編碼

12.2.3 代理認證

12.3 基本認證的安全缺陷

12.4 更多信息

第 13 章 摘要認證

13.1 摘要認證的改進

13.1.1 用摘要保護密碼

13.1.2 單向摘要

13.1.3 用隨機數防止重放攻擊

13.1.4 摘要認證的握手機制

13.2 摘要的計算

13.2.1 摘要算法的輸入數據

13.2.2 算法 H(d) 和 KD(s,d)

13.2.3 與安全性相關的數據(A1)

13.2.4 與報文有關的數據(A2)

13.2.5 摘要算法總述

13.2.6 摘要認證會話

13.2.7 預授權

13.2.8 隨機數的選擇

13.2.9 對稱認證

13.3 增強保護質量

13.3.1 報文完整性保護

13.3.2 摘要認證首部

13.4 應該考慮的實際問題

13.4.1 多重質詢

13.4.2 差錯處理

13.4.3 保護空間

13.4.4 重寫 URI

13.4.5 緩存

13.5 安全性考慮

13.5.1 首部篡改

13.5.2 重放攻擊

13.5.3 多重認證機制

13.5.4 詞典攻擊

13.5.5 惡意代理攻擊和中間人攻擊

13.5.6 選擇明文攻擊

13.5.7 存儲密碼

13.6 更多信息

第 14 章 安全 HTTP

14.1 保護 HTTP 的安全

14.2 數字加密

14.2.1 密碼編制的機制與技巧

14.2.2 密碼

14.2.3 密碼機

14.2.4 使用了密鑰的密碼

14.2.5 數字密碼

14.3 對稱密鑰加密技術

14.3.1 密鑰長度與枚舉攻擊

13.3.2 建立共享密鑰

14.4 公開密鑰加密技術

14.4.1 RSA

14.4.2 混合加密系統和會話密鑰

14.5 數字簽名

14.6 數字證書

14.6.1 證書的主要內容

14.6.2 X.509 v3 證書

14.6.3 用證書對服務器進行認證

14.7 HTTPS - 細節介紹

14.7.1 HTTPS 概述

14.7.2 HTTPS 方案

14.7.3 建立安全傳輸

14.7.4 SSL 握手

14.7.5 服務器證書

14.7.6 站點證書的有效性

14.7.7 虛擬主機與證書

14.8 HTTPS 客戶端實例

14.8.1 OpenSSL

14.8.2 簡單的 HTTPS 客戶端

14.8.3 執行 OpenSSL 客戶端

14.9 通過代理以隧道形式傳輸安全流量

14.10 更多信息

14.10.1 HTTP 安全性

14.10.2 SSL 與 TLS

14.10.3 公開密鑰基礎設施

14.10.4 數字密碼

第四部分 實體、編碼和國際化

第 15 章 實體和編碼

15.1 報文是箱子,實體是貨物

15.2 Content-Length:實體的大小

15.2.1 檢測截尾

15.2.2 錯誤的 Content-Length

15.2.3 Content-Length 與持久連接

15.2.4 內容編碼

15.2.5 確定實體主體長度的規則

15.3 實體摘要

15.4 媒體類型和字符集

15.4.1 文本的字符編碼

15.4.2 多部分媒體類型

15.4.3 多部分表格提交

15.4.4 多部分範圍響應

15.5 內容編碼

15.5.1 內容編碼過程

15.5.2 內容編碼類型

15.5.3 Accept-Encoding 首部

15.6 傳輸編碼和分塊編碼

15.6.1 可靠傳輸

15.6.2 Transfer-Encoding 首部

15.6.3 分塊編碼

15.6.4 內容編碼與傳輸編碼的結合

15.6.5 傳輸編碼的規則

15.7 隨時間變化的實例

15.8 驗證碼和新鮮度

15.8.1 新鮮度

15.8.2 有條件的請求與驗證碼

15.9 範圍請求

15.10 差異編碼

15.11 更多信息

第 16 章 國際化

16.1 HTTP 對國際性內容的支持

16.2 字符集與 HTTP

16.2.1 字符集是把字符轉換爲二進制碼的編碼

16.2.2 字符集和編碼如何工作

16.2.3 字符集不對,字符就不對

16.2.4 標準化的 MIME charset 值

16.2.5 Content-Type 首部和 Charset 首部以及 META 標誌

16.2.6 Accept-Charset 首部

16.3 多語言字符編碼入門

16.3.1 字符集術語

16.3.2 字符集的命名很糟糕

16.3.3 字符

16.3.4 字形、連筆以及表示形式

16.3.5 編碼後的字符集

16.3.6 字符編碼方案

16.4 語言標記與 HTTP

16.4.1 Content-Language 首部

16.4.2 Accept-Language 首部

16.4.3 語言標記的類型

16.4.4 子標記

16.4.5 大小寫

16.4.6 IANA 語言標記註冊

16.4.7 第一個子標記-名字空間

16.4.8 第二個子標記-名字空間

16.4.9 其餘子標記-名字空間

16.4.10 配置和語言有關的首選項

16.4.11 語言標記參考表

16.5 國際化的 URI

16.5.1 全球性的可轉抄能力與有意義的字符的較量

16.5.2 URI 字符集合

16.5.3 轉義和反轉義

16.5.4 轉義國際化字符

16.5.5 URI 的模態切換

16.6 其他需要考慮的地方

16.6.1 首部和不合規範的數據

16.6.2 日期

16.6.3 域名

16.7 更多信息

16.7.1 附錄

16.7.2 互聯網的國際化

16.7.3 國際標準

第 17 章 內容協商與轉碼

17.1 內容協商技術

17.2 客戶端驅動的協商

17.3 服務器驅動的協商

17.3.1 內容協商首部集

17.3.2 內容協商首部中的質量值

17.3.3 隨其他首部集而變化

17.3.4 Apache 中的內容協商

17.3.5 服務器端擴展

17.4 透明協商

17.4.1 進行緩存與備用候選

17.4.2 Vary 首部

17.5 轉碼

17.5.1 格式轉換

17.5.2 信息綜合

17.5.3 內容注入

17.5.4 轉碼與靜態預生成的對比

17.6 下一步計劃

17.7 更多信息

第五部分 內容發佈與分發

第 18 章 Web 主機託管

18.1 主機託管服務

18.2 虛擬主機託管

18.2.1 虛擬服務器請求缺乏主機信息

18.2.2 設法讓虛擬主機託管正常工作

18.2.3 HTTP/1.1 的 Host 首部

18.3 使網站更可靠

18.3.1 鏡像的服務器集羣

18.3.2 內容分發網絡

18.3.3 CDN 中的反向代理緩存

18.3.4 CDN 中的代理緩存

18.4 讓網站更快

18.5 更多信息

第 19 章 發佈系統

19.1 FrontPage 爲支持發佈而做的服務器擴展

19.1.1 FrontPage 服務器擴展

19.1.2 FrontPage 術語表

19.1.3 FrontPage 的 RPC 協議

19.1.4 FrontPage 的安全模型

19.2 WebDAV 與協作寫作

19.2.1 WebDAV 的方法

19.2.2 WebDAV 與 XML

19.2.3 WebDAV 首部集

19.2.4 WebDAV 的鎖定與防止覆寫

19.2.5 LOCK 方法

19.2.6 UNLOCK 方法

19.2.7 屬性和元數據

19.2.8 PROPFIND 方法

19.2.9 PROPPATCH 方法

19.2.10 集合與名字空間管理

19.2.11 MKCOL 方法

19.2.12 DELETE 方法

19.2.13 COPY 與 MOVE 方法

19.2.14 增強的 HTTP/1.1 方法

19.2.15 WebDAV 中的版本管理

19.2.16 WebDAV 的未來發展

19.3 更多信息

第 20 章 重定向與負載均衡

20.1 爲什麼要重定向

20.2 重定向到何地

20.3 重定向協議概覽

20.4 通用的重定向方法

20.4.1 HTTP 重定向

20.4.2 DNS 重定向

20.4.3 任播尋址

20.4.4 IP MAC 轉發

20.4.5 IP 地址轉發

20.4.6 網元控制協議

20.5 代理的重定向方法

20.5.1 顯示瀏覽器配置

20.5.2 代理自動配置

20.5.3 Web 代理自動發現協議

20.6 緩存重定向方法

20.7 因特網緩存協議

20.8 緩存陣列路由協議

20.9 超文本緩存協議

20.9.1 HTCP 認證

20.9.2 設置緩存策略

20.10 更多信息

第 21 章 日誌記錄與使用情況跟蹤

21.1 記錄內容

21.2 日誌格式

21.2.1 常見日誌格式

21.2.2 組合日誌格式

21.2.3 網景擴展日誌格式

21.2.4 網景擴展2日誌格式

21.2.5 Squid 代理日誌格式

21.3 命中率測量

21.3.1 概述

21.3.2 Meter 首部

21.4 關於隱私的考慮

21.5 更多信息

第六部分 附錄

附錄 A URI 方案

附錄 B HTTP 狀態碼

B.1 狀態碼分類

B.2 狀態碼

附錄 C HTTP 首部參考

附錄 D MIME 類型

D.1 背景知識

D.2 MIME 類型結構

D.2.1 離散類型

D.2.2 複合類型

D.2.3 多部分類型

D.2.4 語法

D.3 在 IANA 註冊 MIME 類型

D.3.1 註冊樹

D.3.2 註冊過程

D.3.3 註冊規則

D.3.4 註冊模板

D.3.5 MIME 媒體類型註冊

D.4 MIME 類型表

D.4.1 application/*

D.4.2 audio/*

D.4.3 chemical/*

D.4.4 image/*

D.4.5 message/*

D.4.6 model/*

D.4.7 multipart/*

D.4.8 text/*

D.4.9 video/*

D.4.10 實驗類型

附錄 E Base-64 編碼

E.1 Base-64 編碼保證了二進制數據的安全

E.2 8位到6位

E.3 Base-64 填充

E.4 Perl 實現

E.5 更多信息

附錄 F 摘要認證

F.1 摘要 WWW-Authenticate 指令

F.2 摘要 Authorization 指令

F.3 摘要 Authentication-Info 指令

F.4 參考代碼

F.4.1 文件 digcalc.h

F.4.2 文件 “digcalc.c”

F.4.3 文件 digtest.c

附錄 G 語言標記

G.1 第一個子標記所用規則

G.2 第二個子標記所用規則

G.3 IANA 已註冊的語言標記

G.4 ISO 639 語言代碼

G.5 ISO 3166 國家代碼

G.6 語言管理組織

附錄 H MIME 字符集註冊表

H.1 MIME 字符集註冊表

H.2 首選 MIME 名

H.3 已註冊字符集

索引

關於作者

尾頁

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章