下一代通訊協議:QUIC

在 HTTP 協議已經佔據互聯網大半江山的今天,儘管網速愈來愈快,可是人類仍是致力於將網絡傳輸速率提高到極致。前端

從 HTTP/1.x 到 HTTP/2,TCP 已經不能知足人類貪婪的慾望了,他們開始向常年被忽視的 UDP 進軍。算法

QUIC 是什麼?

QUIC(Quick UDP Internet Connections),直譯過來就是「快速的 UDP 互聯網鏈接」,是 Google 基於 UDP 提出的一種改進的通訊協議,做爲傳統 HTTP over TCP 的替代品,開源於 Chromium 項目中。chrome

爲了加快 TCP 的傳輸效率,Google 提出了 BBR 擁塞控制算法,將 TCP 的性能發揮到了極致。因爲 TCP 和 UDP 協議是系統內核實現的,要提出新的協議不是不行,只是普及起來會很是困難,就連 BBR 算法,都須要更新系統內核才能支持。那麼,TCP 的性能已經到了極致,還能更快嗎?瀏覽器

UDP 相比於 TCP,沒有那麼多的要求,只要將數據發出去就好了,不須要考慮數據是否送達了、不須要考慮數據的到達順序、不須要考慮數據的正確性和完整性,因此效率比 TCP 要高出幾個檔次。微信

UDP 協議曾經被廣泛用於視頻直播、網絡遊戲之類實時性要求較高的應用,即便少數幾個包沒有送達對應用總體的影響也不大。但是,對於 HTTP 之類的協議,是須要保證數據的正確性、完整性的,因此 UDP 自己並不適合做爲 TCP 的替代品。網絡

UDP 不適合替代 TCP 是由於它自己不對數據進行校驗,那麼若是將數據校驗放到其餘地方去實現,是否是就可使用 UDP 了呢?性能

因而,QUIC 就誕生了,它聚集了 TCP 和 UDP 的優勢,使用 UDP 來傳輸數據以加快網絡速度,下降延遲,由 QUIC 來保證數據的順序、完整性和正確性,即便發生了丟包,也由 QUIC 來負責數據的 糾錯優化

如今,Google 旗下的部分服務(好比 GMail)以及許多接口已經開始使用 QUIC 協議了。若是你使用的是 Chrome 瀏覽器,能夠在瀏覽器的這個地址:chrome://net-internals/#quic 看到 QUIC 的鏈接狀況。網站

QUIC 的優勢

因爲 TCP、UDP 協議是系統內核實現的,更新修改起來並不很方便,而 QUIC 是軟件層面實現的,更新迭代起來很是方便。ui

UDP 自己是無序傳輸的,這在單個鏈接上並行傳輸多個數據有天生的優點:多個數據直接發送便可,由 QUIC 對收到的數據進行從新組合排序,而後送往上層應用。這中間不用等待各類數據確認包,效率很是高。

在創建 TCP 鏈接時,須要進行至少三次握手,若是要開啓 TLS 加密,則還須要進行 TLS 握手。而 QUIC 採用了相似於 TCP Fast Open 的技術,若是以前鏈接過,那麼以後能夠不用重複握手而直接開始傳送數據,以實現 0-RTT 往返時延。即使以前沒有鏈接過,也能夠在 1-RTT 內完成鏈接並開始傳送數據。而且自身就擁有與 TLS 等效的加密措施。

在發生丟包時,TCP 會重傳丟失的包。而 QUIC,則使用了一種很是神奇的前向糾錯算法,經過連續的幾個數據包的校驗和,能夠直接恢復出丟失的包內容,而不須要重傳。

在移動端表現更好:用戶的網絡環境並不穩定,Wi-Fi、4G、3G、2G 之間來回變化,IP 一旦發生變化,TCP 的鏈接是不可能保持的。而 QUIC 就不存在這樣的問題,經過 ID 來標識用戶(而不是 IP + 端口),在鏈接切換後直接恢復以前的鏈接會話。

配合 HTTP/2 API 食用更佳:因爲 HTTP/2 採用二進制幀傳輸機制,QUIC 直接使用這樣的機制進行數據傳輸,效率更高!

QUIC 的缺點

如今不少網絡運營商會下降 UDP 包的優先級,使得 UDP 丟包率特別高。(QUIC 不可用時,瀏覽器通常會 Fallback 到 TCP)

目前只有 Chrome、Opera 瀏覽器支持。

何時更適合使用 QUIC?

  • 移動端 因爲 QUIC 並不使用 IP + 端口來標識客戶身份,而是使用 ID,這使得在網絡環境切換後還能夠保持鏈接,很是適合用在移動網站上面,在手機信號不穩定的狀況下,TCP + TLS 的開銷是很是大的!QUIC 的 0-RTT 能夠極大限度地提高訪問速度。

總結

QUIC 實現的目標,就是利用 UDP 實現一個 TCP,支持 TCP 的全部特性,而且比 TCP 更快更好用。

QUIC 是從 2012 年開始的項目,到目前也還只是草案階段,而且一樣處於草案階段的 TLS1.3 也一樣擁有了 QUIC 中的不少優勢(好比 0-RTT)。對於訪問速度的優化方式愈來愈多,適當的選擇能夠爲網站增色許多。


關注微信公衆號:創宇前端(KnownsecFED),碼上獲取更多優質乾貨!

相關文章
相關標籤/搜索