1. tcp隊頭阻塞
tcp資料報是有序傳輸,中間乙個資料報丟失,會等待該資料報重傳,造成後面的資料報的阻塞。
2. http隊頭阻塞
http隊頭阻塞和tcp隊頭阻塞完全不是一回事。
http1.x採用長連線(connection:keep-alive),可以在乙個tcp請求上,傳送多個http請求。
有非管道化和管道化,兩種方式。
非管道化,完全序列執行,請求->響應->請求->響應...,後乙個請求必須在前乙個響應之後傳送。
管道化,請求可以並行發出,但是響應必須序列返回。後乙個響應必須在前乙個響應之後。原因是,沒有序號標明順序,只能序列接收。
管道化請求的致命弱點:
1. 會造成隊頭阻塞,前乙個響應未及時返回,後面的響應被阻塞
2. 請求必須是冪等請求,不能修改資源。因為,意外中斷時候,客戶端需要把未收到響應的請求重發,非冪等請求,會造成資源破壞。
由於這個原因,目前大部分瀏覽器和web伺服器,都關閉了管道化,採用非管道化模式。
無論是非管道化還是管道化,都會造成隊頭阻塞(請求阻塞)。
解決http隊頭阻塞的方法:
1. 併發tcp連線(瀏覽器乙個網域名稱採用6-8個tcp連線,併發http請求)
2. 網域名稱分片(多個網域名稱,可以建立更多的tcp連線,從而提高http請求的併發)
2. http2方式
http2使用乙個網域名稱單一tcp連線傳送請求,請求包被二進位制分幀,不同請求可以互相穿插,避免了http層面的請求隊頭阻塞。
但是不能避免tcp層面的隊頭阻塞。
長連線短連線 隊頭阻塞
隊頭阻塞 tcp隊頭阻塞 短連線 是在http協議的1.0版本使用的,短連線的操作步驟是 建立連線 資料傳輸 關閉連線.建立連線 資料傳輸 關閉連線 結論 http協議是無狀態的。長連線 在http協議的1.1版本 長連線的操作步驟是 建立連線 資料傳輸 保持連線 資料傳輸 關閉連線 長連線優點 長...
當我們在談論HTTP隊頭阻塞時,我們在談論什麼?
通過tcp多路復用降低延遲 單個tcp連線上允許亂序request response,解決隊頭堵塞問題 實現層面上,大部分瀏覽器要求http 2必須開啟tls,一定程度上解決資料安全問題。其中,隊頭阻塞問題真的被解決了嗎?http 1.1為什麼會隊頭阻塞?http 1.1通過pipelining管道...
http相應頭和請求頭
請求的細節 l 用於http 請求中的常用頭 l accept text html,image 支援資料型別 l accept charset iso 8859 1 字符集 l accept encoding gzip 支援壓縮 l accept language zh cn 語言環境 l host...