HTTP非持續連線和持續連線

機械佬也想學程式設計發表於2020-12-22

非持續連線和持續連線

非持續連線(non-persistent connection):每個請求/相應是經過單獨的TCP連線傳送,每個TCP連線在伺服器傳送一個物件後關閉,該連線並不為其他的物件而持續下來。換句話說,即每個TCP只傳輸一個請求和一個響應。

使用者在非持續連線下, 每點選一個超連結,都會執行如下步驟:

1.瀏覽器和Web伺服器發起一個TCP連線,其中涉及到三次握手過程,即客戶向伺服器傳送一個小TCP報文段,伺服器用一個小TCP報文段做出確認和響應,最後客戶向伺服器返回確認。在三次握手過程中,前兩次佔用一個RTT。

2.在第三次握手時,客戶可向該TCP連線傳送一個HTTP請求報文,當伺服器收到請求報文後,在該TCP連線上傳送HTML檔案。這個過程佔用一個RTT。

綜合上述兩個步驟,總的響應時間是兩個RTT加上伺服器傳輸HTML檔案的時間。

往返時間(Round-Trip Time, RTT):一個短分組從客戶到伺服器然後再返回客戶所花費的時間。包括分組傳播時延、分組在中間路由器和交換機上的排隊時延、分組處理時延

非持續連線的缺點

  • 必須為每一個請求物件建立和維護一個全新的連線。每個TCP連線都要在客戶和伺服器分配TCP緩衝區和保持TCP變數,加大對Web伺服器的負擔
  • 每一個物件經受兩倍RTT的交付時延,一個RTT用於建立TCP連線,另一個RTT用於請求和接收一個物件

持續連線(persistent connection):所有的請求/響應經過相同的TCP連線傳送。伺服器在傳送響應後保持該TCP連線開啟,後續的請求和響應能夠通過相同的TCP連線進行傳送。

如果一條連線經過一定時間間隔仍未被使用,HTTP伺服器就關閉該連線。

相關文章