全面理解HTTP

2022-03-17 11:50:06 字數 3384 閱讀 2863

引言:作為一名軟體工程web專業學生,對於http的熟悉掌握是必不可少的,特此做記錄,打造自己的http棧。

我們經常接觸到的就是url了,它就是我們訪問web的乙個字串位址,那麼uri是什麼呢?他們是什麼關係呢? url:uniform resource location 統一資源定位符 uri:uniform resource identifier 統一資源識別符號 這也就是說,uri是一種資源的標識;而url也是一種uri,也是一種資源的標識,但它也指明了如何定位locate到這個資源。 uri是一種抽象的資源標識,既可以是絕對的,也可以是相對的。但是url是一種uri,它指明了定位的資訊,必須是絕對的。

客戶端和伺服器端通過相互傳送報文進行通訊,要深刻理解http協議,就需要理解報文的格式和內容。

無論是請求報文還是響應報文都需要有報文首部,當然報文主體並不是必需的。 一般來說,請求報文的格式如下:

簡單的報文形式:

get / http/1.1    //請求行,包含用於請求的方法,請求的uri,http版本

//以下為各種首部字段

響應報文的格式如下:

http/1.1 200 ok   //狀態行,包含表明響應結果的狀態碼,原因短語和http版本

//以下為各種首部字段

server: bfe/1.0.8.5

date: tue, 06 oct 2015 14:48:28 gmt

content-type: text/html;charset=utf-8

transfer-encoding: chunked

connection: keep-alive

cache-control: private

傳送http的方法有許多種,最常用的便是get和post,下面就這兩種進行詳細地說明。

getget方法用來請求訪問uri所指定的資源,(我想訪問你的某個資源)並不對伺服器上的內容產生任何作用結果;每次get的內容都是相同的。get方式把請求所需要的引數放到url中,直接就可以在url中看見,有大小限制。

postpost方法用來傳輸實體主體,目的並不是獲取響應的主體內容,(我要把這條資訊告訴你),post方式則是把內容放在報文內容中,因此只要報文的內容沒有限制,它的大小就沒有限制。

總結get用於獲取某個內容,post用於提交某種資料請求。 按照使用場景來說,一般使用者註冊的內容屬於私密的,這應該使用post方式;而針對某一內容的查詢,為了快速的響應,可以使用get方式。

http是一種無狀態協議,也就是每一次傳送都是一次新的開始,伺服器並不知道也沒有必要知道當前連線的客戶端是否之前有過交集,那麼當需要進行儲存使用者登入狀態時,則出現了麻煩,這個時候使用cookie來儲存狀態。 cookie會根據伺服器端傳送的響應報文內的乙個叫做set-cookie的首部字段,通知客戶端儲存cookie(儲存在自己的電腦裡),當下次客戶端傳送請求時,cookie值會被新增到請求報文中傳送出去。

顯而易見每次請求會造成無謂的tcp連線建立和斷開,增加通訊量的開銷。

引入持久連線

持久連線的特點是,只要任意一端沒有明確提出斷開連線,則保持tcp連線狀態。目前http/1.1中預設為持久連線。

管線化可以同時並行傳送多個請求,不需要乙個乙個等待響應了。

http+加密+認證+完整性保護 = https 一些登陸介面和購物結算介面使用https通訊,也就是改用https://,https說簡單點就是它的通訊介面部分被ssl和tls協議代替而已。

有一些**或者服務需要使用者的身份資訊,因此需要隨時知道這些訊息,但是肯定不能每次都讓使用者輸入使用者密碼,因此關於認證就有下面幾種方式:

在這裡主要說一下formbase認證,也就是表單認證

使用cookie來管理session

客戶端把使用者ie和密碼等登入資訊放入報文的實體部分,以post方式傳送給伺服器。

伺服器進行身份認證,產生sessionid,加入到set-cookie內,返回給客戶端。

客戶端接收到sessionid後,將其加入cookie,下次請求時,瀏覽器會自動傳送cookie。

在傳輸過程中,一種安全地儲存密碼方式是,先利用給密碼加鹽的方式增加額外資訊,再使用雜湊hash函式計算出雜湊值後儲存。

書籍推薦:《**http》,輕鬆理解更全面的http知識。

全面理解HTTP協議

引言 作為一名軟體工程web專業學生,對於http的熟悉掌握是必不可少的,特此做記錄,打造自己的http棧。我們經常接觸到的就是url了,它就是我們訪問web的乙個字串位址,那麼uri是什麼呢?他們是什麼關係呢?url uniform resource location 統一資源定位符uri uni...

date欄位 http 標頭檔案 全面理解HTTP

引言 作為一名軟體工程web專業學生,對於http的熟悉掌握是必不可少的,特此做記錄,打造自己的http棧。我們經常接觸到的就是url了,它就是我們訪問web的乙個字串位址,那麼uri是什麼呢?他們是什麼關係呢?url uniform resource location 統一資源定位符uri uni...

UIIC的全面理解

uicc universal integrated circuit card 通用積體電路卡是定義了物理特性的智慧卡的總稱。作為3g使用者終端的乙個重要的 可移動的組成部分,uicc主要用於儲存使用者資訊 鑑權金鑰 短消 付費方式等資訊。在3g使用者終端的入網測試中,要求滿足uicc的一致性測試要求...