Http/1.0、Http/1.1、Http2

一、HTTP

1.建立連接和斷開連接(三次握手和四次揮手)

HTTP 是 HyperText Transfer Protocol 的縮寫,譯爲超文本傳輸協議。是一種應用於 OSI 七層模型中應用層的協議,是我們平常互聯網網絡通信傳輸的基礎。它的作用就是規定了服務器和客戶端之間的建立連接,請求數據,響應數據,關閉連接(我們常說的三次握手,四次揮手)。

  • 進行請求階段:進行三次握手:1. 客戶端向服務端發送連接請求,2. 服務端迴應客戶端:ok,已經確認,3,客戶端迴應服務端,收到你的確認信息。瀏覽器對於服務器的請求,瀏覽器會將我們對於服務器的請求封裝成請求頭和請求體。請求頭包括瀏覽器的類型,請求的域名,ip 地址,請求的方法類型等,請求體可以是參數形式,如**?page=3&offset=3**,也可以是 post 請求的哈希數據或者 json。每個請求頭用 \r\n 隔開,請求頭請求體用 \r\n\r\n 隔開,這是 HTTP 規定好的格式。
  • 服務器響應:服務器接收到客戶端傳來的請求頭請求體後,分解進行迴應,首先以狀態碼開頭,經常見到的 404 以及 302 這樣的信息,接着瀏覽器接收到 html 信息就渲染成了我們所見到的頁面。在這裏插入圖片描述
  • 關閉階段:四次揮手:1.客戶端發送關閉連接請求,2.服務端回覆:收到請求,準備關閉,3.服務端發送關閉申請:我要斷開了,4.客戶端:收到,確認

2.http/1.0

HTTP/1.0 規定瀏覽器與服務器之保持短暫的連接,瀏覽器的每次請求都需要與服務器建立一個 TCP 連接,服務器完成請求處理後立即斷開 TCP 連接,服務器不追蹤每個瀏覽器也不記錄每個瀏覽器的請求。因爲 TCP 請求是無狀態的,所以每次都需要完成三次握手四次揮手,數據量一多,就非常浪費時間,效率比較低。


3.http/1.1

對於 HTTP/1.0 版本,1.1 版本對這一點做了改進:

引入了管道機制:TCP 連接建立後,不馬上斷開連接,而是過一會,如果沒有收到客戶端請求後,再斷開連接。

這樣做的好處有兩點:1. 不需要多次的三次握手四次揮手,提高了效率,2. 因爲一個服務器是被多個客戶端同時訪問的,一些信息如果客戶端強制結束可能會發到其他的客戶端,造成錯誤,如果可以延時關閉,可以給服務器充分的時間確認連接狀態以及發送關閉信號。


4.http2.0

HTTP2 是 HTTP/1.1 的升級,客戶端 TCP 連接只能一次一次的發送,爲了提升效率,**HTTP2 引入了多路複用,就是可以客戶端一次發送多個請求,服務端一起回覆,提升了效率。**但由於在信息的封裝上還不夠成熟,技術成本比較高,已受到攻擊,目前普及度不高。


發佈了165 篇原創文章 · 獲贊 852 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章