Http的持久連線(Keep-Alive模式)
阿新 • • 發佈:2019-01-22
關於持久連線
HTTP/1.1允許HTTP裝置在事務處理結束之後將TCP連線保持在開啟狀態,以便為未來的HTTP請求重用現存的連線。在事務處理結束之後仍然保持在開啟狀態的TCP連線被稱為持久連線。持久連線會在不同事務之間保持開啟狀態,直到客戶端或伺服器決定將其關閉為止。
優點:重用已對目標伺服器開啟的空閒持久連線,可以避開緩慢的連線建立階段,更快速地進行資料的傳輸。
缺點:管理不當可能會積累出大量的空閒連線,耗費本地客戶端以及遠端伺服器上的資源。
非持久連線會在每個事務處理結束之後關閉。普通模式,即非Keep-Alive模式時,每個請求/應答,客戶端和伺服器都要新建一個連線,完成之後立即斷開連線(http為無連線的協議);
當使用Keep-Alive模式(又稱為持久連線、連線重用)時,客戶端到伺服器的連線持續有效,之後又出現對伺服器的請求時,避免了重新建立連線。
HTTP連線實際上就是TCP連線和一些使用連線的規則。
假設要訪問 http://www.joes-hardware.com:80/power-tools.html,在瀏覽器中輸入這個URL時,會執行下圖中所示的步驟:
第(1)~(3)會將伺服器的IP地址和埠號從URL中分離出來;
在第(4)步中建立到Web伺服器的TCP連線,並在第(5)步通過這條連線發出一條請求報文,在第(6)步讀取響應,並在第(7)步關閉連線。
套接字API允許使用者建立TCP的端點資料結構,將這些端點與遠端伺服器的TCP端點進行連線,並對資料流進行讀寫。TCP API 隱藏了所有底層網路協議的握手細節,以及TCP資料流與IP分組之間的分段和重灌細節。