圖解HTTP之簡單的HTTP協議(二)
HTTP 協議和 TCP/IP 協議族內的其他眾多的協議相同,用於客戶端和伺服器之間的通訊。請求訪問文字或影象等資源的一端稱為客戶端,而提供資源響應的一端稱為伺服器端。
在兩臺計算機之間使用 HTTP 協議通訊時,在一條通訊線路上必定有一端是客戶端,另一端則是伺服器端。
HTTP 協議規定,請求從客戶端發出,最後伺服器端響應該請求並返回。換句話說,肯定是先從客戶端開始建立通訊的,伺服器端在沒有接收到請求之前不會發送響應。
HTTP 是一種不儲存狀態,即無狀態(stateless)協議。HTTP 協議自身不對請求和響應之間的通訊狀態進行儲存。也就是說在 HTTP 這個級別,協議對於傳送過的請求或響應都不做持久化處理。
使用 HTTP 協議,每當有新的請求傳送時,就會有對應的新響應產生。協議本身並不保留之前一切的請求或響應報文的資訊。這是為了更快地處理大量事務,確保協議的可伸縮性,而特意把 HTTP 協議設計成如此簡單的。
HTTP/1.1 雖然是無狀態協議,但為了實現期望的保持狀態功能,於是引入了 Cookie 技術。有了 Cookie 再用 HTTP 協議通訊,就可以管理狀態了。
HTTP 協議使用 URI 定位網際網路上的資源。正是因為 URI 的特定功能,在網際網路上任意位置的資源都能訪問到。
HTTP/1.1 中可使用的方法(請求伺服器的方法):
-
GET:獲取資源 我想訪問你的某個資源
-
POST:傳輸實體主體 我要把這條資訊告訴你
-
PUT:傳輸檔案 我要把這份檔案傳給你
-
HEAD:獲得報文首部 把那個的相關資訊告訴我
-
DELETE:刪除檔案 快把那份檔案刪掉吧 與PUT相反的方法,不帶驗證
-
OPTIONS:詢問支援的方法 你支援哪些方法? 支援GET、POST方法
-
TRACE:追蹤路徑 讓Web伺服器端將之前的請求通訊環回給客戶端
-
CONNECT:要求用隧道協議連線代理
為了解決每進行一次HTTP通訊就要斷開一次TCP連線,提出了持久連線(HTTP Persistent Connections,也稱為 HTTP keep-alive 或HTTP connection reuse)。持久連線的特點是,只要任意一端沒有明確提出斷開連線,則保持 TCP 連線狀態。
持久連線使得多數請求以管線化(pipelining)方式傳送成為可能。解決了請求傳送後必須等待並收到響應後才能傳送下一個請求的問題。能夠做到同時並行傳送多個請求。
使用Cookie解決HTTP無狀態