什么是QUIC協議
QUIC全稱:Quick UDP Internet Connections,是一種傳輸層網絡協議,其安全性可以與TLS/SSL相媲美,并且具備更低的延遲。QUIC目前主要應用于http協議,基于QUIC的HTTP/3協議(RFC9114),除了擁有HTTP/2的各項優點,同時由于QUIC的特性,在弱網環境下擁有更強大的性能優勢。QUIC由Google自研,2012年部署上線,2013年提交IETF,2021年5月,IETF推出標準版RFC9000。
QUIC的主要優勢如下:
優勢1:握手建連更快
QUIC建連時間大約0~1 RTT,在兩方面做了優化:
- 傳輸層使用了UDP,減少了1個RTT三次握手的延遲。
- 加密協議采用了TLS 協議的最新版本TLS 1.3,相對之前的TLS 1.1-1.2,TLS1.3允許客戶端無需等待TLS握手完成就開始發送應用程序數據的操作,可以支持1RTT和0RTT。
對于QUIC協議,客戶端第一次建連的握手協商需1-RTT,而已建連的客戶端重新建連可以使用之前協商好的緩存信息來恢復TLS連接,僅需0-RTT時間。因此QUIC建連時間大部分0-RTT、極少部分1-RTT,相比HTTPS的3-RTT的建連,具有極大的優勢。
優勢2:避免隊首阻塞的多路復用
QUIC同樣支持多路復用,相比HTTP/2,QUIC的流與流之間完全隔離的,互相沒有時序依賴。如果某個流出現丟包,不會阻塞其他流數據的傳輸和應用層處理,所以這個方案并不會造成隊首阻塞。
優勢3:支持連接遷移
什么是連接遷移?舉個例子,當你用手機使用蜂窩網絡參加遠程會議,當你把網絡切換到WLAN時,會議客戶端會立馬重連,視頻同時出現一瞬間的卡頓。這是因為,TCP采用四元組(包括源IP、源端口、目標地址、目標端口)標識一個連接,在網絡切換時,客戶端的IP發生變化,TCP連接被瞬間切斷然后重連。連接遷移就是當四元組中任一值發生變化時,連接依舊能保持,不中斷業務。QUIC支持連接遷移,它用一個(一般是64位隨機數)ConnectionID標識連接,這樣即使源的IP或端口發生變化,只要ConnectionID一致,連接都可以保持,不會發生切斷重連。
優勢4:可插拔的擁塞控制
QUIC是應用層協議,用戶可以插拔式選擇像Cubic、BBR、Reno等擁塞控制算法,也可以根據具體的場景定制私有算法。
優勢5:前向糾錯(FEC)
QUIC支持前向糾錯,弱網丟包環境下,動態的增加一些FEC數據包,可以減少重傳次數,提升傳輸效率。