簡單講解一下http2的多路復用


在 HTTP/1 中,每次請求都會建立一次HTTP連接,也就是我們常說的3次握手4次揮手,這個過程在一次請求過程中占用了相當長的時間,即使開啟了 Keep-Alive ,解決了多次連接的問題,但是依然有兩個效率上的問題:

  • 第一個:串行的文件傳輸。當請求a文件時,b文件只能等待,等待a連接到服務器、服務器處理文件、服務器返回文件,這三個步驟。我們假設這三步用時都是1秒,那么a文件用時為3秒,b文件傳輸完成用時為6秒,依此類推。(注:此項計算有一個前提條件,就是瀏覽器和服務器是單通道傳輸)
  • 第二個:連接數過多。我們假設Apache設置了最大並發數為300,因為瀏覽器限制,瀏覽器發起的最大請求數為6,也就是服務器能承載的最高並發為50,當第51個人訪問時,就需要等待前面某個請求處理完成。

HTTP/2的多路復用就是為了解決上述的兩個性能問題。
在 HTTP/2 中,有兩個非常重要的概念,分別是幀(frame)和流(stream)。
幀代表着最小的數據單位,每個幀會標識出該幀屬於哪個流,流也就是多個幀組成的數據流。
多路復用,就是在一個 TCP 連接中可以存在多條流。換句話說,也就是可以發送多個請求,對端可以通過幀中的標識知道屬於哪個請求。通過這個技術,可以避免 HTTP 舊版本中的隊頭阻塞問題,極大的提高傳輸性能。

http的知識我非常匱乏,先記錄在此


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM