天天看點

圖解HTTP學習筆記——簡單的HTTP協定簡單的HTTP協定

圖解HTTP學習筆記——簡單的HTTP協定簡單的HTTP協定

那麼在我們敲下Enter鍵的那一刻,究竟發生了什麼呢。通過今天的學習,能大緻了解其中原理,并簡單學習http協定。

<a href="http://www.cnblogs.com/johntsai/p/4859801.html#clientandserver">1.用戶端與伺服器端</a> <a href="http://www.cnblogs.com/johntsai/p/4859801.html#stateless">2.http是不儲存狀态的協定</a> <a href="http://www.cnblogs.com/johntsai/p/4859801.html#requesturi">3.請求uri定位資源</a> <a href="http://www.cnblogs.com/johntsai/p/4859801.html#servermethod">4.告知伺服器意圖的http方法</a> <a href="http://www.cnblogs.com/johntsai/p/4859801.html#method">5.使用方法下達指令</a> <a href="http://www.cnblogs.com/johntsai/p/4859801.html#httpkeepalive">6.持久連接配接節省通信量</a> <a href="http://www.cnblogs.com/johntsai/p/4859801.html#cookiestatus">7.使用cookie的狀态管理</a>

1.用戶端與伺服器端

用戶端:請求通路資源(文本或圖像)的一端

伺服器端:提供資源響應的一端

http協定規定:請求從用戶端發出,最後伺服器端響應該請求并傳回。(肯定是從用戶端開始建立通信的,伺服器端在沒有接收到請求之前不會發送響應)

通俗地說,用戶端就好比男生,伺服器端就好比女生,男生追求女生,女生才會有所反應。當然,如果是高富帥,則反之。也就是說,追求者隻有主動去追求被追求者,才有可能收獲美滿愛情。(個人了解==,歡迎讨論)

下面通過一個通路百度的具體事例來學習:

使用chrome的控制台工具,能很好的了解http請求的過程,同時也是很好的web開發工具。(osx:command+option+j windows:f12)

在請求封包中:

請求uri(request-uri):請求通路的資源對象

http的版本号:如http/1.1,用來提示用戶端使用的http協定功能

請求封包由: 請求uri、協定版本、可選的請求首部字段 和 内容實體構成的。 響應封包由: 協定版本、狀态碼(表示請求成功或失敗的數字代碼 如200)、用以解釋狀态碼的原因短語(如ok)、可選的響應首部字段以及實體主體構成。

2.http是不儲存狀态的協定

http是一種不儲存狀态,即無狀态(stateless)協定。即在http這個級别,協定對于發送過的請求或響應都不做持久化處理)

為了更快地處理大量事務,確定協定的可伸縮性===》(将http協定設計成如此簡單)=====》表現:每當有新的請求發送時,就會有對應的新響應産生。(協定本身并不保留之前一切的請求或響應封包的資訊) 無狀态====》導緻網站無法儲存使用者的狀态====》引入cookie技術

3.請求uri定位資源

http協定使用uri定位網際網路上的資源

4.告知伺服器意圖的http方法

get:擷取資源 post:傳輸實體主體 put:傳輸檔案(http/1.1的該方法自身不帶驗證機制,存在安全問題,一般的web網站不使用該方法)=====》(解決方法:1.配合web應用程式的驗證機制2.架構設計采用rest标準) head:擷取封包首部(用于确認uri的有效性及資源更新的日期時間) delete:删除檔案(存在和put一樣的問題) options:詢問支援的方法 trace:追蹤路徑 connect:要求用隧道協定連接配接代理(ssl:secure sockets layer安全套接層,tls:transport layer security傳輸層安全)

5.使用方法下達指令

向請求uri指定的資源發送請求封包時,采用稱為方法的指令。

6.持久連接配接節省通信量

http協定的初始版本:每進行一次http通信就要斷開一次tcp連接配接====》每次的請求都會造成無謂的tcp連接配接建立和斷開,增加通信量的開銷====》解決:在http/1.1和部分http/1.0中:使用了持久連接配接(http persistent connections,也稱為http keep-alive或http connection reuse)的方法(特點:隻要任意一端沒有明确提出斷開連接配接,則保持tcp連接配接狀态)

好處:減少了tcp連接配接的重複建立和斷開所造成的額外開銷,減輕伺服器端的負載。

持久連接配接====》管線化(pipelining)技術====》不用等待響應就能直接發送下一個請求===》同時并行發送多個請求

7.使用cookie的狀态管理

http是無狀态協定(它不對之前發生過的請求和響應的狀态進行管理,即無法根據之前的狀态進行本次的請求處理)=====》對于要求登陸認證的web頁面無法進行狀态的管理(不記錄已登入的狀态)=====》要求在每次請求封包中添加參數來管理登入狀态

無狀态協定優點:1)不儲存狀态===》減少伺服器的cpu及記憶體資源的消耗

2)http協定的簡單性=====》被應用到各種場景裡

cookie技術:通過在請求和響應封包中寫入cookie資訊來控制用戶端的狀态

實作原理:伺服器端發送的響應封包内有一個叫做set-cookie的首部字段資訊===》通知用戶端儲存cookie====》下次用戶端再往該伺服器發送請求時=====》用戶端會自動在請求封包中加入cookie值後發送出去====》伺服器端發現用戶端發送過來的cookie===》伺服器端會檢查是從哪一個用戶端發來連接配接請求=====》伺服器端對比伺服器上的記錄=====》最後得到之前的狀态資訊。 原文位址:http://www.cnblogs.com/johntsai/p/4859801.html

繼續閱讀