淺談HTTP協議
HTTP
前言
HTTP協議,全稱Hyper Text Transfer Protocol(超文字傳輸協議)。HTTP協議是基於TCP/IP協議的應用層協議,規定了客戶端與伺服器之間的通訊格式,預設使用80埠。HTTP採用了經典的客戶端-伺服器模型,客戶端與伺服器連線併發出請求,然後等待伺服器響應。除此之外,HTTP是一個無狀態協議,伺服器並不會保留連線所傳輸的資訊。
HTTP發展歷程
HTTP從最初的HTTP/0.9到現在最常用的HTTP/1.1,歷經了幾個版本,功能也越來越強大。
HTTP/0.9
這個版本的HTTP只支援GET請求,且規定伺服器只能回應HTML格式的字串,所以我們通過此協議只能訪問靜態頁面。
HTTP/1.0
HTTP/1.0廢除了0.9中伺服器只允許回應HTML格式字串的規定,可以傳送任何格式的內容,這代表著除了文字還可以傳輸圖片,視訊等,且該版本協議還支援POST,HEAD請求。除此之外,HTTP請求和回應的格式也變了,除了資料部分,還必須包括頭部資訊。
HTTP/1.1
HTTP/1.1是現在最常用的HTTP協議,相較於HTTP/1.0,其引入了許多新的特性。
持續連線
在HTTP/1.1中,TCP連線預設不關閉,可以被多個請求使用。這個連線會持續下去,直到客戶端或伺服器端中的一個認為會話已經結束,就可以關閉連線。
HTTP pipelining(流水線)
此特性實現了讓客戶端一次性傳送多個請求的操作,無需再一個個等待伺服器的響應。在HTTP/1.1以前,客戶端要請求兩個資源,就需要先傳送第一個請求,然後等待伺服器響應,伺服器響應後再傳送第二個請求。而在HTTP/1.1中,客戶端能夠直接傳送這兩個請求,不過伺服器端還是按照順序一個一個處理請求的。
分塊傳輸
Content-length
在說分塊傳輸之前,先得說說Content-length欄位。我們知道,Content-length欄位是用來標識伺服器響應的長度的,所以在伺服器響應之前,伺服器必須計算出回應的資料長度。當我們去請求一個很大的資源時,這無疑是很耗費時間得,所以就有了分塊傳輸的出現。
Transfer-Encoding
HTTP/1.1中規定了一個新欄位Transfer-Encoding,請求包或響應包中有該欄位時,就表明包中的資料有數量未知的資料塊組成。在非空的資料塊前,有一個十六進位制的數,表明該資料塊的長度,最後會有一個長度為0的塊,表名資料傳送完畢。
URL
URL,翻譯成中文就是統一資源定位符,我們大多數人一般叫網址。URL其實就是資源在WEB上的地址,我們可以通過這個地址獲取到對應的資源。我們先來看看URL的一般格式:
協議://伺服器ip地址:埠/檔案路徑
以百度的網址為
https://www.baidu.com/
從URL中我們可以看出來,使用的是https協議,不是說要用伺服器ip及埠嗎,為什麼這裡是一串字母呢。其實這個字串叫做域名,域名經過DNS的處理,就會解析到對應ip。至於DNS就需要自己去了解了,我這裡就不多說了。那為什麼埠也沒有呢,這又是一個知識點了,如果web伺服器使用HTTP協議的標準埠(HTTP是80,HTTPS是443)來授予其資源的訪問許可權,那麼埠就可以被忽略,也就是說寫https://www.baidu.com:443也是可以的。埠一定要寫對,比如使用的是HTTPS協議,你寫80埠就會導致無法連線。
HTTP請求報文
http請求包由三部分構成,請求行,請求頭,請求資料,格式如下圖
圖片來自 here
這就是一個標準的HTTP請求報文,第一行是請求行,表示出了請求方法,路徑,協議版本。下面是請求頭,想深入瞭解HTTP頭可以看這篇文章 HTTP Headers。
HTTP響應報文
響應報文跟請求報文的格式基本一樣,也由三部分構成,狀態行,訊息報頭,響應正文。
相關文章
- 淺談WebSocket協議、WS協議和WSS協議原理及關係Web協議
- http協議HTTP協議
- HTTP 協議HTTP協議
- 淺談TCP和UDP協議的區別TCPUDP協議
- 02 前端HTTP協議(圖解HTTP) 之 簡單的HTTP協議前端HTTP協議圖解
- 淺談TCP、UDP、ICMP三種常見協議TCPUDP協議
- 理解http協議HTTP協議
- http協議分析HTTP協議
- HTTP協議(2)HTTP協議
- HTTP 協議類HTTP協議
- 小解http協議HTTP協議
- HTTP協議概述HTTP協議
- 談談surging引擎的tcp、http、ws協議和如何容器化部署TCPHTTP協議
- 淺談HTTP快取HTTP快取
- 淺談HTTP之URLHTTP
- HTTP協議之:HTTP/1.1和HTTP/2HTTP協議
- HTTP協議簡述HTTP協議
- HTTP 協議簡介HTTP協議
- HTTP協議那些事HTTP協議
- http協議內容HTTP協議
- Http與Https協議HTTP協議
- Http協議入門HTTP協議
- 瞭解HTTP協議HTTP協議
- HTTP通訊協議HTTP協議
- HTTP和HTTPS協議HTTP協議
- HTTP 協議圖解HTTP協議圖解
- HTTP2 協議HTTP協議
- 簡述HTTP協議HTTP協議
- Http協議簡介HTTP協議
- HTTP 協議完全解析HTTP協議
- RPC和 HTTP協議RPCHTTP協議
- HTTP協議詳解HTTP協議
- HTTP協議基礎HTTP協議
- HTTP協議-HTTP響應報文HTTP協議
- 淺顯易懂的前端知識點(二)——HTTP協議基礎前端HTTP協議
- 網路通訊協議-HTTP協議詳解!協議HTTP
- HTTP協議和MQTT協議對比誰更好HTTP協議MQQT
- HTTP協議和HTTPS協議的異同點?HTTP協議