我是一名初級前端開發者,目前精力著眼于 Plain JavaScript 上,我的博客 if-true.com,原文鏈接:《圖解 HTTP》讀書筆記。歡迎交流 :)
第二章 簡單的 HTTP 協議
請求報文是由請求方法、請求 URI、協議版本、可選的請求首部字段和內容實體構成的。
響應報文基本上由協議版本、狀態碼(表示請求成功或失敗的數字 代碼)、用以解釋狀態碼的原因短語、可選的響應首部字段以及實體主體構成。
HTTP 是不保存狀態的協議,引入 Cookie 實現持久化。
持久連接的好處在于減少了 TCP 連接的重復建立和斷開所造成的 額外開銷,減輕了服務器端的負載。另外,減少開銷的那部分時間,使 HTTP 請求和響應能夠更早地結束,這樣 Web 頁面的顯示速度也就相應 提高了。
-
管線化
持久連接使得多數請求以管線化(pipelining)方式發送成為可能。 從前發送請求后需等待并收到響應,才能發送下一個請求。管線化技術 出現后,不用等待響應亦可直接發送下一個請求。
第3章 HTTP 報文內的 HTTP 信息
HTTP 報文大致可分為報文首部和報文主體兩塊。兩者由最初出現的空行(CR+LF)來劃分。
-
首部字段
一般有 4 種首部,分別是:通用首部、請求首部、響應首部和實體首部。
常用的內容編碼有以下幾種
* gzip(GNU zip)
* compress(UNIX 系統的標準壓縮)
* deflate(zlib)
* identity(不進行編碼)
MIME(Multipurpose Internet Mail Extensions,多用途因特網 郵件擴展)機制
內容協商技術
第4章 返回結果的 HTTP 狀態碼
第5章 與 HTTP 協作的 Web 服務器
-
信數據轉發程序:代理、網關、隧道
代理:轉發時,需要附加 Via 首部字段以標記出經過的主機信息。
網管:利用網關可以由 HTTP 請求轉化為其他協議通信。
隧道:隧道的目的是確保客戶端能與服務器進行安全的通信。
第6章 HTTP 首部
- 請求首部字段
- 響應首部字段
- 通用首部字段
- 實體首部字段
- 為 Cookie 服務的首部字段
第7章 確保 Web 安全的 HTTPS
-
HTTP 主要有這些不足,例舉如下
- 通信使用明文(不加密),內容可能會被竊聽
- 不驗證通信方的身份,因此有可能遭遇偽裝
- 無法證明報文的完整性,所以有可能已遭篡改
HTTP+ 加密 + 認證 + 完整性保護 =HTTPS
HTTPS 是身披 SSL 外殼的 HTTP
對稱密鑰加密:加密和解密同用一個密鑰的方式稱為共享密鑰加密(Common key crypto system)
使用兩把密鑰的公開密鑰加密:公開密鑰加密使用一對非對稱的密鑰。一把叫做私有密鑰(private key),另一把叫做公開密鑰(public key)。
HTTPS 采用混合加密機制:HTTPS 采用共享密鑰加密和公開密鑰加密兩者并用的混合加密機制。
-
SSL 速度慢
SSL 的慢分兩種。一種是指通信慢。另一種是指由于大量消耗 CPU 及內存等資源,導致處理速度變慢。
第8章 確認訪問用戶身份的認證
- HTTP/1.1 使用的認證方式如下所示。
* BASIC 認證(基本認證)
* DIGEST 認證(摘要認證)
* SSL 客戶端認證
* FormBase 認證(基于表單認證)
第9章 基于 HTTP 的功能追加協議
AJAX
Comet
-
SPDY
SPDY 沒有完全改寫 HTTP 協議,而是在 TCP/IP 的應用層與運輸 層之間通過新加會話層的形式運作。使用 SPDY 后,HTTP 協議額外獲得以下功能。
- 多路復用流
- 賦予請求優先級
- 壓縮 HTTP 首部
- 推送功能
- 服務器提示功能
-
使用瀏覽器進行全雙工通信的 WebSocket,特點有
- 推送功能
- 減少通信量
期盼已久的 HTTP/2.0
第10章 構建 Web 內容的技術
第11章 Web 的攻擊技術
-
針對 Web 應用的攻擊模式
- 主動攻擊
- 被動攻擊
-
以服務器為目標的主動攻擊
具有代表性的攻擊是 SQL 注入攻擊和 OS 命令注入攻擊。
-
以服務器為目標的被動攻擊
具有代表性的攻擊是跨站腳本攻擊和跨站點請求偽造。