http2多路復用的簡單介紹

2021-10-04 10:50:44 字數 582 閱讀 5922

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

http/2的多路復用就是為了解決上述的兩個效能問題。

在 http/2 中,有兩個非常重要的概念,分別是幀(frame)和流(stream)。

幀代表著最小的資料單位,每個幀會標識出該幀屬於哪個流,流也就是多個幀組成的資料流。

多路復用,就是在乙個 tcp 連線中可以存在多條流。換句話說,也就是可以傳送多個請求,對端可以通過幀中的標識知道屬於哪個請求。通過這個技術,可以避免 http 舊版本中的隊頭阻塞問題,極大的提高傳輸效能。

順便記錄一下那什麼又是tcp的3次握手呢???

客戶端c

發起請求連線服務端s:

第一次握手:服務端

s確認自己可以接受

c傳送的報文段

第二次握手:c確認

s收到了自己傳送的報文段,並且確認

自己可以接受

s傳送的報文段

第三次握手:s確認

c收到了自己傳送的報文段

http2協議之多路復用

http2多路復用解決的問題,由於瀏覽器的限制訪問 資源的時候瀏覽器在同乙個網域名稱下最多開啟6個執行緒,這樣如果前幾個執行緒執行比較慢的任務或者需要等待伺服器端響應,後面的資源就被阻塞住了 以往的做法是把靜態資源如 css等檔案放在不同的網域名稱下以提高頁面載入速度.另外一點就是明顯減少了tcp連...

多路復用I O Epoll的簡單使用

不負責任地放上中文版epoll維基,科學上網。原理什麼的不多講,我也不是很熟,這裡就簡單寫一些實際應用要怎麼寫,當然也是很簡單的demo。typedef union epoll data epoll data t struct epoll event int epoll create int siz...

IO的多路復用

使用select函式實現io多路復用 include include include include 1 select int select int nfds,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout...