【HTTP協議】簡單的HTTP協議(2)

一:URI和URL

  • URI(統一資源標識符)
  1. URI格式

表示指定的uri,要使用絕對的URI,絕對的URL以及相對的URL。相對的URL,是指從瀏覽器基本URI處指定的URL。

絕對的URI格式:

 查詢字符串:可以針對指定的路徑傳入參數。

片段標識符:使用片段標識符可以標記處已獲取資源的子資源。

  • URL(統一資源定位符)

關係:URI用字符串標識某一個互聯網資源,而URL表示資源的地點(互聯網所處的位置)。可見URL是URI的子集。

二:HTTP協議用於客戶端和服務器端

在網絡中,請求文本或者圖像資源的一端稱爲客戶端,而提供資源響應的一端稱爲服務器端。

在兩臺電腦進行通信時,必定有一端是客戶端,另一端是服務器端。就單條線路來說HTTP協議能夠區分哪裏是客戶端服務器端。

三:通過請求和響應的交換達成通信

HTTP協議規定:由客戶端發出請求響應,服務器端在沒有接收到請求之前不會發送響應。

例子:

 先來看發送報文:

 GET表示請求訪問服務器的類型稱爲方法,,隨後的/index.html表示請求訪問的資源對象(URI),最後的就是HTTP的版本。

HTTP協議中host的作用:

Host 是 HTTP 1.1 協議中新增的一個請求頭,主要用來實現虛擬主機技術。

虛擬主機(virtual hosting)即共享主機(shared web hosting),可以利用虛擬技術把一臺完整的服務器分成若干個主機,因此可以在單一主機上運行多個網站或服務。

舉個栗子,有一臺 ip 地址爲 61.135.169.125 的服務器,在這臺服務器上部署着谷歌、百度、淘寶的網站。爲什麼我們訪問 https://www.google.com 時,看到的是 Google 的首頁而不是百度或者淘寶的首頁?原因就是 Host 請求頭決定着訪問哪個虛擬主機。
請求報文由請求方法,請求URI,協議版本,可選的請求首部字段和內容實體構成。

再來看請求報文的構成

在起始是版本的HTTP/1.1表示版本。

緊接着200 OK表示請求處理結果的狀態碼和原因短語。

響應報文基本上由協議版本,狀態碼,用以解釋狀態碼的原因短語,可選的響應首部字段以及實體主體構成。

四:HTTP是不保存狀態的協議

 HTTP是一種不保存的狀態,即無狀態協議。HTTP協議自身不對請求或響應之間的通信狀態進行保存。

HTTP/1.1雖然是無狀態協議,但是爲了實現期望的保存狀態功能,於是引入了Cookie技術。有了Cookie再用HTTP進行通信,就可以管理狀態了。 

五:請求URI定位資源

HTTP協議使用URI定位互聯網上的資源。正是因爲URI的特定功能,使得在互聯網上的任意位置的資源都能訪問到。

請求的例子:

除此之外,如果不是訪問特定資源而是對服務器本身發起請求,可以用一個*代替請求URI。

 

六:使用方法下達命令

 

例子說明:

GET:獲取資源

 

POST:傳輸實體主體

PUT:傳輸文件

 

 HEAD:獲取報文首部

DELETE:刪除文件

 

OPTIONS:詢問支持的方法

TRACE:追蹤路徑

Trace方法是讓Web服務器將之前的請求通信環回給客戶端的方法。

發送請求時,在Max-Forwards首部填入數值,沒經過一個服務器就將該數字減1.當數字減爲0時,就停止繼續傳輸。

客戶端通過TRACE方法可以查詢發送出去的請求是怎樣被加工修改的。

 

CONNECT:要求用隧道協議連接處理

CONNECT主要進行代理服務器通信時建立隧道,實現 用隧道協議進行TCP通信。主要使用SSL(Secure Sockets Layer,安全套接字)和TLS(Transport Layer Security,傳輸層安全)協議把通信內容加密後經網絡隧道進行傳輸。

七:持久連接節省通信量

HTTP協議的初始版本中,每進行一次HTTP通信就要斷開一次TCP連接。

 在現在這個網絡中,HTML文檔中不僅包含文本,還包含多張圖片。

 這樣就需要多次進行TCP連接和斷開連接,需要消耗大量CPU。

所以需要進行持久化連接,持久連接的特點是:只要任意一端沒有明確提出斷開連接,則保持TCP連接。

 

 八:管線化

持久連接使得多次請求以管線化方式成爲可能。管線化使得各次請求之間不需要等待。

 九:使用Cookie的狀態管理

Cookie會根據從服務器端發送的響應報文內的一個叫Set-Cookie的首部字段信息,通知客戶端保存Cookie。當下次客戶端再往服務器端發送請求時,客戶端會自動在請求報文中加入Cookie值後發送回去。

 

 報文中的信息:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章