做爲一個前端,在 2018 年你確定聽過或者已經使用了 HTTPS 和 HTTP 2.0,若是你還沒了解過的話,那我讓我帶你一探究竟吧~前端
超文本傳輸協議 -- HTTP,是被普遍使用的用於 Web 瀏覽器和服務器之間通訊的一個協議,它是無狀態協議,不會在請求與請求之間保存狀態和數據,一般基於 TCP/IP 層。算法
HTTP 從一開始的 0.9 版本,發展到 1.0/1.1 版本,其中經歷了緩存處理的改進、method 的增長和長鏈接的支持等等。HTTP 1.x 版本已經被使用超過了 20 年,直至今天還仍然被普遍採用。可是,隨着互聯網的飛速發展,這個版本存在着一些問題:瀏覽器
安全問題首當其衝,在 1994 年的時候,爲傳輸安全保駕護航的 HTTPS 誕生了。緩存
HTTPS (HTTP over SSL/TLS),嚴格地講,並非一個單獨的協議,而是對工做在一加密鏈接(TLS 或 SSL)上的常規 HTTP 協議的稱呼。HTTP 先與 SSL 通信,再有 SSL 和 TCP 通信。安全
HTTPS = HTTP + 加密 + 認證 + 完整性保護服務器
前面說到 HTTPS 是 over SSL 的,那麼也就是說通過了 SSL 這一加密處理方式進行了通訊過程的加密。併發
HTTPS 的加密包括了對稱與非對稱加密。因爲對稱加密,祕鑰容易被泄露,而非對稱加密解密的過程耗時又長,因此索性把這二者結合,利用非對稱加密來加密對稱加密的祕鑰,即利用了非對稱加密安全性高的特色,又利用了對稱加密速度快,效率高的好處。也就是所謂的混合加密。tcp
非對稱加密加密
對稱加密spa
如此一來,HTTPS 便解決了安全問題:
PS: 爲何 12306 改版之前,證書那塊會顯示一個紅叉?
解決完安全問題,咱們來看看速度與延遲問題是如何被解決的。
2012 年,Google 提出 SPDY,爲 HTTP 2.0 的誕生奠基了一個十分紮實的基礎,(HTTP 2.0 的主要設計思想源自於 SPDY)它提出:
HTTP 1.x 在一條 TCP 鏈接上,多個請求只能串行執行。而 SPDY 使多個請求 stream 共享一個 tcp 鏈接的方式,作到了同時響應多個請求,解決了隊頭阻塞的問題。
控制多路複用的請求優先級(例如設置 CSS 的優先級比圖片高)
顧名思義,對 header 進行壓縮。HTTP1.x 的 header 不少時候都是重複多餘的。選擇合適的壓縮算法能夠減少包的大小和數量。SPDY 對 header 的壓縮率能夠達到 80% 以上,低帶寬環境下效果很大,對解決慢啓動問題也有幫助。
服務端可以更快的把資源推送給客戶端。
在 SPDY 的基礎之上,HTTP 2.0 誕生了,爲了給 HTTP 2.0 鋪路,Google 甚至在後期中止對 SPDY 的支持。HTTP 2.0 能夠說是 SPDY 的升級版,看看如下特性你就知道了:
HTTP 2.0 讓每一個 request 對應一個 stream 並分配一個 id,經過一個鏈接多 stream 的方式,每一個 stream 的 frame 能夠隨機的混雜在一塊兒,併發響應。
HTTP 2.0 與 SPDY 不一樣的地方
講了這麼多,但願能加強你對 HTTPS 和 HTTP 2.0 的瞭解。若有錯誤,懇請斧正!