《圖解HTTP》學習筆記(二)-簡單的HTTP協議

《圖解HTTP》學習筆記(二)-簡單的HTTP協議

1、HTTP概述

HTTP協議用於客戶端和伺服器端之間的通訊,並通過請求和響應的交換而達成通訊。請求由客戶端發出,而伺服器回覆響應。

1. 請求報文:由請求方法、請求URI、協議版本、可選的請求首部欄位和內容實體構成的。
這裡寫圖片描述

2.響應報文:由協議版本、狀態碼(表示請求成功或失敗的數字程式碼)、用以解釋狀態碼的原因短語、可選的響應首部欄位以及實體主體構成。
這裡寫圖片描述

2、HTTP是不儲存狀態的協議

1)HTTP是不儲存狀態的協議,即無狀態協議,自身不對請求和響應之間的通訊狀態進行儲存。協議對於傳送過的請求或響應都不做持久化處理。

2)這樣的設計對快速處理大量事務,確保協議的可伸縮性有一定的幫助。但是無狀態也會導致業務處理變得有時棘手:比如,使用者登入到一家購物網站,即使他跳轉到該站的其他頁面後,也需要能繼續保持登入狀態。針對這個例項,網站為了能夠掌握是誰送出的請求,需要儲存使用者的狀態。

3)因此,引入了Cookie技術用以實現保持狀態功能。!!!

3、HTTP/1.1中可使用的方法

1)GET:獲取資源
GET方法用來請求訪問已被URI識別的資源。指定的資源經伺服器端解析後返回響應內容。如果請求的是文字,則保持原樣返回;如果是類似CGI(通用閘道器介面)那樣的程式,則返回經過執行後的輸出結果。
這裡寫圖片描述

2)POST:傳輸實體主體
POST方法用來傳輸實體的主體。雖然用GET方法可以傳輸實體的主體,但一般不用GET方法進行傳輸,而是用POST方法。雖說 POST 的功能與 GET 很相似,但是POST的主要目的不是獲取響應的主體內容。

這裡寫圖片描述

3)PUT:傳輸檔案
PUT用來傳輸檔案。它要求在請求報文的主體中包含檔案內容,然後儲存到請求URI指定的位置。PUT方法自身不帶驗證機制,任何人都可以上傳檔案,存在著安全性問題。若配合Web應用程式的驗證機制,或架構設計採用REST(表徵狀態轉移)標準的同類Web網站,就可能會開放使用PUT方法。
這裡寫圖片描述

4)HEAD:獲取報文首部
HEAD方法與GET方法一樣,只是不返回報文主體部分,用於確認URI的有效性及資源更新的日期時間等
這裡寫圖片描述

5)DELETE:刪除檔案
DELETE方法用來刪除檔案,是與PUT相反的方法。按請求URI刪除指定的資源。但是HTTP/1.1的DELETE方法本身和PUT方法一樣不帶驗證機制,所以一般Web也不使用。當配合Web應用程式的驗證機制,或遵守REST標準還是有可能會開放使用的。
這裡寫圖片描述

6)OPTIONS:詢問支援的方法
OPTIONS方法用來查詢針對請求URI指定的資源支援的方法
這裡寫圖片描述

7)TRACE:追蹤路徑
TRACE方法讓Web伺服器端將之前的請求通訊環回給客戶端
傳送請求時,在Max-Forwards首部欄位中填入數值,每經過一個伺服器就將該數字減1,當數值剛好減為0時就停止繼續傳輸,最後接收的請求的伺服器則返回狀態碼200 OK的響應。
客戶端可以通過TRACE方法查詢傳送出去的請求是怎樣被加工修改/篡改的。
這裡寫圖片描述

8)CONNECT:要求用隧道協議連線代理
CONNECT方法要求在與代理伺服器通訊時建立隧道,實現用隧道協議進行TCP通訊。主要使用SSL和TLS協議把通訊內容加密後經網路隧道傳輸。
CONNECT 方法的格式:

CONNECT 代理伺服器名:埠號 HTTP版本

4、持久連線

HTTP協議的初始版本中,每次進行一次通訊都要斷開一次TCP連線。但是由於傳輸資訊量的增大,每次請求都造成的無謂TCP連線建立和斷開,增加了通訊量的開銷。

因此,為解決上述TCP連線的問題,提出了持久連線(或HTTP keep-alive)方法。特點是只要任意一端沒有明確提出斷開連線,則保持TCP連線狀態。

持久連線的好處在於減少了 TCP 連線的重複建立和斷開所造成的額外開銷,減輕了伺服器端的負載。另外,減少開銷的那部分時間,使 HTTP 請求和響應能夠更早地結束,這樣 Web 頁面的顯示速度也就相應提高了。
在 HTTP/1.1 中,所有的連線預設都是持久連線,但在 HTTP/1.0 內並未標準化。雖然有一部分伺服器通過非標準的手段實現了持久連線,但伺服器端不一定能夠支援持久連線。毫無疑問,除了伺服器端,客戶端也需要支援持久連線。

5、管線化

背景:持久連線技術使得管線化方式傳送成為可能

特點:管線化技術出現後使得不用等待響應即可直接傳送下一個請求(從前傳送請求後需要等待並接收響應),這樣就可以做到同時並行傳送多個請求,而不需要一個接一個等待響應。
這裡寫圖片描述

6、使用Cookie的狀態管理

1、引入原因:

1)無狀態優點:減少伺服器cpu及記憶體資源的消耗

2)缺點:HTTP是無狀態協議,無法根據之前的狀態進行本次的請求處理。登入認證的web頁面不能管理狀態,每次跳轉需要在請求報文新增引數來管理資訊

3)如果讓伺服器管理全部客戶端狀態則會成為負擔,保留無狀態協議這個特徵的同時又要解決類似的矛盾問題,於是引入了 Cookie 技術。

2、Cookie特點:

Cookie技術通過在請求和響應報文中寫入Cookie資訊來控制客戶端的狀態,Cookie會根據從伺服器端傳送的響應報文內的一個叫Set-Cookie的首部欄位,通知客戶端儲存Cookie,當下次客戶端再次往該伺服器傳送請求時,客戶端會自動在請求報文中加入Cookie值後傳送出去。伺服器會去檢查是從哪個客戶端發來的請求,然後對比伺服器上的記錄,得到之前的狀態資訊

Cookie 互動的情景:
這裡寫圖片描述