本系列第一節,我們回顧了與http協議有關的基本術語和概念,本文將分析http協議的基本原理與機制
http協議的用途
http協議用於客戶端與伺服器之間的通訊,在通訊線路兩端,必定一端是客戶端,另一端是伺服器。
注意:客戶端與伺服器的角色不是固定的,一端充當客戶端,也可能在某次請求中充當伺服器。這取決與請求的發起端。http協議屬於應用層,建立在傳輸層協議tcp之上。客戶端通過與伺服器建立tcp連線,之後傳送http請求與接收http響應都是通過訪問socket介面來呼叫tcp協議實現。
請求與響應
http協議規定,由客戶端發起請求,伺服器響應請求並返回資訊。
如圖,反映了一次http請求並接收乙個html檔案的過程與時間消耗(rtt)。客戶端通過tcp連線傳送請求報文,伺服器收到請求後向其傳輸檔案並返回響應報文。
http是無狀態協議
http是一種無狀態(stateless)協議,http協議本身不會對傳送過的請求和相應的通訊狀態進行持久化處理。這樣做的目的是為了保持http協議的簡單性,從而能夠快速處理大量的事務,提高效率。
然而,在許多應用場景中,我們需要保持使用者登入的狀態或記錄使用者購物車中的商品。由於http是無狀態協議,所以必須引入一些技術來記錄管理狀態,例如cookie。
http方法
在第一節,我們曾辨析過get與post方法。實際上常用的http方法遠不止這些,下圖展示了基本的http方法。
非持久連線 和 持久連線
在實際的應用中,客戶端往往會發出一系列請求,接著伺服器端對每個請求進行響應。對於這些請求|響應,如果每次都經過乙個單獨的tcp連線傳送,稱為非持久連線。反之,如果每次都經過相同的tcp連線進行傳送,稱為持久連線。
非持久連線在每次請求|響應之後都要斷開連線,下次再建立新的tcp連線,這樣就造成了大量的通訊開銷。例如前面提到的往返時間(rtt)就是在建立tcp連線的過程中的代價。
非持久連線給伺服器帶來了沉重的負擔,每台伺服器可能同時面對數以百計甚至更多的請求。持久連線就是為了解決這些問題,其特點是一直保持tcp連線狀態,直到遇到明確的中斷要求之後再中斷連線。持久連線減少了通訊開銷,節省了通訊量。
圖 持久化連線節省通訊開銷
總結
本文分析了基本的http執行機制與原理,通過一些例項分析了http請求與響應的過程,以及常見的http方法。對於http連線的特性與機制也進行了**。當然這些只是簡單的建立起基礎的概念。後續的系列我還會對cookie與session的原理,請求發起的過程以及socket(套接字)的理,http解析的過程進行深入思考和剖析。
作者: i'm coding
鏈結:acflood
如果您覺得本文對您有所幫助,就給俺點個贊吧!
HTTP協議 二 基本認證
閱讀目錄 什麼是http基本認證 http基本認證的過程 http基本認證的優點 每次都要進行認證 http基本認證和https一起使用就很安全 http oauth認證 其他認證 客戶端的使用 桌面應用程式也通過http協議跟web伺服器互動,桌面應用程式一般不會使用cookie,而是把 使用者名...
HTTP協議 二 基本認證
閱讀目錄 什麼是http基本認證 http基本認證的過程 http基本認證的優點 每次都要進行認證 http基本認證和https一起使用就很安全 http oauth認證 其他認證 客戶端的使用 桌面應用程式也通過http協議跟web伺服器互動,桌面應用程式一般不會使用cookie,而是把 使用者名...
HTTP協議 二 基本認證
閱讀目錄 什麼是http基本認證 http基本認證的過程 http基本認證的優點 每次都要進行認證 http基本認證和https一起使用就很安全 http oauth認證 其他認證 客戶端的使用 桌面應用程式也通過http協議跟web伺服器互動,桌面應用程式一般不會使用cookie,而是把 使用者名...