- 圖中第一種請求方式,就是單次發送request請求,收到response后再進行下一次請求,顯示是很低效的。
- 於是http1.1提出了管線化(pipelining)技術,就是如圖中第二中請求方式,一次性發送多個request請求。
- 然而pipelining在接收response返回時,也必須依順序接收,如果前一個請求遇到了阻塞,后面的請求即使已經處理完畢了,仍然需要等待阻塞的請求處理完畢。這種情況就如圖中第三種,第一個請求阻塞后,后面的請求都需要等待,這也就是隊頭阻塞(Head of line blocking)。
- 為了解決上述阻塞問題,http2中提出了多路復用(Multiplexing)技術,Multiplexing是通信和計算機網絡領域的專業名詞。http2中將多個請求復用同一個tcp鏈接中,將一個TCP連接分為若干個流(Stream),每個流中可以傳輸若干消息(Message),每個消息由若干最小的二進制幀(Frame)組成。也就是將每個request-response拆分為了細小的二進制幀Frame,這樣即使一個請求被阻塞了,也不會影響其他請求,如圖中第四種情況所示。