HTTP/HTTPS 學習筆記

超文本傳輸協議(HyperText Transfer Protocol) 伴隨着計算機網絡和瀏覽器的誕生,HTTP1.0也隨之而來,處於計算機網絡中的應用層,HTTP是創建在TCP協議之上的。ios

HTTP的基本優化

影響一個HTTP網絡請求的因素主要有兩個:帶寬和延遲。算法

  • 帶寬:單位時間能經過鏈路的數據量。一般以bps來表示,即每秒可傳輸之位數。
  • 延遲:
  1. 瀏覽器阻塞:瀏覽器對於同一個域名同時只能有 4 個鏈接,超過瀏覽器最大鏈接數限制,後續請求就會被阻塞。
  2. DNS 查詢:將域名解析爲 IP 的過程,能夠利用DNS緩存結果來減小時間。
  3. 創建鏈接:HTTP 是基於 TCP 協議的,瀏覽器最快也要在第三次握手時才能捎帶 HTTP 請求報文,達到真正的創建鏈接,可是這些鏈接沒法複用會致使每次請求都經歷三次握手和慢啓動。

HTTP 存在的問題

  1. HTTP在傳輸數據時,每次都須要從新創建鏈接,增長了大量的延遲時間,特別是在移動端更爲突出。
  2. 傳輸數據時全部內容都是明文,客戶端和服務器端都沒法驗證對方的身份,必定程度上沒法保證數據的安全性。
  3. header裏攜帶的內容過大,增長了傳輸的成本,而且每次請求header基本不怎麼變化,尤爲在移動端增長用戶流量。
  4. 雖然HTTP支持keep-alive 來彌補屢次建立鏈接產生的延遲,可是keep-alive使用多了一樣會給服務端帶來大量的性能壓力,而且對於單個文件被不斷請求的服務(例如圖片存放網站),keep-alive可能會極大的影響性能,由於它在文件被請求以後還保持了沒必要要的鏈接很長時間。

HTTPS

網景在1994年建立了HTTPS,並應用在網景導航者瀏覽器中。HTTPS是與SSL一塊兒使用的;在SSL逐漸演變到TLS時(其實兩個是一個東西,只是名字不一樣而已)
簡單來講,HTTPS就是安全版的HTTP,chrome和firefox都大力支持網站使用HTTPS,蘋果也在ios 10系統中強制app使用HTTPS來傳輸數據。chrome

* SSL(Secure Sockets Layers): 安全套接層
* TLS(Transport Layer Security): 傳輸層安全
爲網絡通訊提供安全及數據完整性的一種安全協議。二者在傳輸層對網絡鏈接進行加密瀏覽器

 

HTTPS 和 HTTP 的區別

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

img

SPDY

Google開發的基於TCP的應用層協議,用以最小化網絡延遲,提高網絡速度,優化用戶的網絡使用體驗。SPDY並非一種用於替代HTTP的協議,而是對HTTP協議的加強。新協議的功能包括數據流的多路複用、請求優先級以及HTTP報頭壓縮。谷歌表示,引入SPDY協議後,在實驗室測試中頁面加載速度比原先快64%。緩存

SPDY能夠說是綜合了HTTPS和HTTP二者有點於一體的傳輸協議,解決的問題以下:安全

  1. 經過多路複用下降延遲,單個TCP鏈接支持併發的HTTP請求。
  2. 請求優先級。SPDY容許給每一個request設置優先級,這樣重要的請求就會優先獲得響應,防止在網絡通道被非關鍵資源堵塞時,高優先級的請求被掛起。
  3. 壓縮 header 報頭和去掉沒必要要的頭部來減小當前HTTP使用的帶寬。
  4. 基於HTTPS的加密協議傳輸,強制使用SSL,讓SSL協議在現存的網絡設施下有更好的安全性和兼容性。
  5. 服務端推送。容許服務器在須要時發起對客戶端的鏈接並推送數據。

spdy 

          SPDY構成圖服務器

 

HTTP1.1 特性

  1. 默認持久鏈接節省通訊量,只要客戶端服務端任意一端沒有明確提出斷開TCP鏈接,就一直保持鏈接,能夠發送屢次HTTP請求
  2. 管線化,客戶端能夠同時發出多個HTTP請求,而不用一個個等待響應
  3. 斷點續傳原理

HTTP2.0

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

  1. HTTP2.0 支持明文 HTTP 傳輸,而 SPDY 強制使用 HTTPS
  2. HTTP2.0 消息頭的壓縮算法採用 HPACK,而非 SPDY 採用的 DEFLATE

 

參考:HTTP,HTTP2.0,SPDY,HTTPS你應該知道的一些事併發

  

相關文章
相關標籤/搜索