2017-07-01 62 views
0

它表示,HTTP 2優於HTTP 1的優點之一是HTTP2具有數據流。一個TCP/IP連接中最多可以有256個不同的數據流。但是,在HTTP 1中最多可以有6個並行連接。 HTTP 2支持從256個資源中讀取數據是一種改進,但我仍然認爲6個連接(在HTTP 1中)的TCP/IP連接(在HTTP 2中)具有更好的吞吐量。儘管如此,HTTP2被認爲比HTTP 1更快。所以...我不能正確理解什麼?HTTP 2.0 - 一個TCP/IP連接vs 6個並行

+0

爲什麼你認爲6個連接的吞吐量比一個好? – tkausl

+0

,因爲如果我假設所有連接的步距相等,那麼6個連接在同一時間傳遞比一個連接更多的信息。 – CrazySynthax

+0

儘管它們可能並行,但每個連接都有其開銷,而不是http/2 –

回答

1

6個物理連接的吞吐量會比一個物理連接的吞吐量要多,其他條件相同。

但同樣的情況不適用於同一臺計算機之間的6個不同的TCP/IP連接,因爲這些連接是虛擬連接(假設您沒有兩個網卡)。限制因素通常是互聯網連接的延遲和帶寬,而不是TCP/IP協議本身。實際上,由於創建和處理TCP連接的方式,其實際上更有效率地擁有一個TCP/IP連接。這是因爲初始連接的成本(三次TCP握手,HTTPS握手和TCP連接使用名爲「慢速啓動」的進程以緩慢地將其容量增加到網絡可以處理的最大速度的事實),而且還在正在進行的連接維護中(因爲慢啓動過程會週期性地再次發生,除非連接始終處於完全使用狀態 - 這對於一切用於一個連接的情況很可能發生,而不是在您的請求時發生分成6個連接)。

此外,HTTP/1.1一次只允許一個請求在運行,所以連接無法使用,直到返回響應(忽略在HTTP/1.1中完全不受支持的流水線)。這不僅限制了6個連接的有效性,而且意味着連接將會被使用不足,因爲上面提到的TCP中使用不足的連接的問題意味着它們可能會比較慢,再次經歷慢啓動過程以建立最大容量。然而,HTTP/2允許這256個數據流允許請求同時處於運行狀態。這比6個連接都好,並允許true multiplexing

如果你想知道更多,那麼Ilya Grigorik已經寫了一本關於High Performance Browser Networking which is even available online for free這個主題的優秀書。