網路知識之七 QUIC http3

2022-07-30 16:42:10 字數 772 閱讀 3887

quic(quick udp internet connection)是谷歌制定的一種基於udp的低時延的網際網路傳輸層協議。

1、避免前序包阻塞

http2的最大特性就是多路復用,而http2最大的問題就是隊頭阻塞。

首先了解下為什麼會出現隊頭阻塞。比如http2在乙個tcp連線上同時傳送3個stream,其中第2個stream丟了乙個packet,tcp為了保證資料可靠性,需要傳送端重傳丟失的資料報,雖然這時候第3個資料報已經到達接收端,但被阻塞了,這就是所謂的隊頭阻塞。

而quic多路復用可以避免這個問題,因為quic的丟包、流控都是基於stream的,所有stream是相互獨立的,一條stream上的丟包,不會影響其他stream的資料傳輸。

2、零rtt建連:

如果是客戶端首次連線到伺服器,由於quic將傳輸與加密結合在一起的特性所在,一般來說正常情況下初次握手只需要1個rtt就可以完成握手;但是對於觸發版本協商、證書無法解密等問題當然也會導致多個rtt的產生。

而重複連線的情況下握手,如果在證書有效的情況下,客戶端傳送hello包並不用等待回覆就可以直接發資料加密包,也就是實現了傳說中的0rtt。

3、fec前向糾錯

quic協議的每個資料報除了本身的資料以外,會帶有其他資料報的部分資料,在少量丟包的情況下,可以使用其他資料報的冗餘資料完成資料組裝而無需重傳,從而提高資料的傳輸速度。具體實現類似於raid5,將n個包的校驗和(異或)建立乙個單獨的資料報傳送,這樣如果在這n個包中丟了乙個包可以直接恢復出來,除此之外還可以用來校驗包的正確性。

參考:quic**

網路基礎知識之 OSI七層模型

第一層 物理層 物理層主要定義了機器之間的通訊方式 傳送位元流 定義物理裝置的標準 如網線的介面型別 光纖的介面型別 各種裝置的介面型別,主要傳輸各種0101資料,但是在傳輸過程中會產生誤傳 錯傳等,於是有了資料鏈路層。第二層 資料鏈路層 資料鏈路層定義了如何格式化資料 如何控制對物理介質的訪問 提...

網路知識 網路的七層架構

指的是給使用者 開發者 提供網路服務的一些應用程式。例如 檔案傳輸 接收 電子郵件收發 檔案處理等 這些應用程式提供了服務,也制定了一些規則,也就是一些協議。如 ftp http dns smtp 等 這些應用程式都是為使用者提供給服務的,也可以是給開發者開發的服務。應用層的程式開發是基於表示層開發...

Flutter 七 之網路請求

在flutter中常見的網路請求方式有三種 httpclient http庫 dio庫 httpclient是dart自帶的請求類,在io包中,實現了基本的網路請求相關的操作。網路呼叫通常遵循如下步驟 建立 client.構造 uri.發起請求,等待請求,同時您也可以配置請求headers body...