簡單比較 http https http2

http

超文本傳輸​​協議(HTTP)是用於傳輸諸如HTML的超媒體文檔的應用層協議。它被設計用於Web瀏覽器和Web服務器之間的通訊,但它也能夠用於其餘目的。 HTTP遵循經典的客戶端-服務端模型,客戶端打開一個鏈接以發出請求,而後等待它收到服務器端響應。 HTTP是無狀態協議,意味着服務器不會在兩個請求之間保留任何數據(狀態)。雖然一般基於TCP / IP層,但能夠在任何可靠的傳輸層上使用;也就是說,一個不會靜默丟失消息的協議,如UDP。javascript


Https

HTTP Strict Transport Security (一般簡稱爲HSTS) 是一個安全功能,它告訴瀏覽器只能經過HTTPS訪問當前資源, 禁止HTTP方式.css

Strict Transport Security解決了這個問題;只要你經過HTTPS請求訪問銀行網站,而且銀行網站配置好Strict Transport Security,你的瀏覽器知道自動使用HTTPS請求,這能夠阻止黑客的中間人攻擊的把戲。html

啓用 Strict Transport Security

開啓HSTS只須要當經過HTTPS方式訪問你的網站時,返回 Strict-Transport-SecurityHTTP 頭信息: Strict-Transport-Security: max-age=expireTime [; includeSubdomains]java


HTTPS與HTTP的一些區別

  1. HTTPS協議須要到CA申請證書,通常免費證書不多,須要交費。
  2. HTTP協議運行在TCP之上,全部傳輸的內容都是明文,HTTPS運行在SSL/TLS之上,SSL/TLS運行在TCP之上,全部傳輸的內容都通過加密的。
  3. HTTP和HTTPS使用的是徹底不一樣的鏈接方式,用的端口也不同,前者是80,後者是443。
  4. HTTPS能夠有效的防止運營商劫持,解決了防劫持的一個大問題。

image

使用SPDY加快你的網站速度

2012年google如一聲驚雷提出了SPDY的方案,你們纔開始從正面看待和解決老版本HTTP協議自己的問題,SPDY能夠說是綜合了HTTPS和HTTP二者有點於一體的傳輸協議,主要解決:算法

  1. 下降延遲,針對HTTP高延遲的問題,SPDY優雅的採起了多路複用(multiplexing)。多路複用經過多個請求stream共享一個tcp鏈接的方式,解決了HOL blocking的問題,下降了延遲同時提升了帶寬的利用率。
  2. 請求優先級(request prioritization)。多路複用帶來一個新的問題是,在鏈接共享的基礎之上有可能會致使關鍵請求被阻塞。SPDY容許給每一個request設置優先級,這樣重要的請求就會優先獲得響應。好比瀏覽器加載首頁,首頁的html內容應該優先展現,以後纔是各類靜態資源文件,腳本文件等加載,這樣能夠保證用戶能第一時間看到網頁內容。
  3. header壓縮。前面提到HTTP1.x的header不少時候都是重複多餘的。選擇合適的壓縮算法能夠減少包的大小和數量。
  4. 基於HTTPS的加密協議傳輸,大大提升了傳輸數據的可靠性。
  5. 服務端推送(server push),採用了SPDY的網頁,例如個人網頁有一個sytle.css的請求,在客戶端收到sytle.css數據的同時,服務端會將sytle.js的文件推送給客戶端,當客戶端再次嘗試獲取sytle.js時就能夠直接從緩存中獲取到,不用再發請求了。SPDY構成圖:

image

SPDY位於HTTP之下,TCP和SSL之上,這樣能夠輕鬆兼容老版本的HTTP協議(將HTTP1.x的內容封裝成一種新的frame格式),同時可使用已有的SSL功能。chrome

HTTP2

HTTP2.0能夠說是SPDY的升級版(其實本來也是基於SPDY設計的),可是,HTTP2.0 跟 SPDY 仍有不一樣的地方,主要是如下兩點瀏覽器

● HTTP2.0 支持明文 HTTP 傳輸,而 SPDY 強制使用 HTTPS緩存

● HTTP2.0 消息頭的壓縮算法採用 HPACK,而非 SPDY 採用的 DEFLATE安全

http2 新特性

新的二進制格式(Binary Format),HTTP1.x的解析是基於文本。基於文本協議的格式解析存在自然缺陷,文本的表現形式有多樣性,要作到健壯性考慮的場景必然不少,二進制則不一樣,只認0和1的組合。基於這種考慮HTTP2.0的協議解析決定採用二進制格式,實現方便且健壯。服務器

多路複用(MultiPlexing),即鏈接共享,即每個request都是是用做鏈接共享機制的。一個request對應一個id,這樣一個鏈接上能夠有多個request,每一個鏈接的request能夠隨機的混雜在一塊兒,接收方能夠根據request的 id將request再歸屬到各自不一樣的服務端請求裏面。多路複用原理圖:

image

header壓縮,如上文中所言,對前面提到過HTTP1.x的header帶有大量信息,並且每次都要重複發送,HTTP2.0使用encoder來減小須要傳輸的header大小,通信雙方各自cache一份header fields表,既避免了重複header的傳輸,又減少了須要傳輸的大小。

服務端推送(server push),同SPDY同樣,HTTP2.0也具備server push功能。目前,有大多數網站已經啓用HTTP2.0,例如YouTuBe,淘寶網等網站,利用chrome控制檯能夠查看是否啓用H2:

chrome=>Network=>Name欄右鍵=>√Protocol
複製代碼

引用

相關文章
相關標籤/搜索