1. 程式人生 > >HTTP協議中長連線與短連線的區別

HTTP協議中長連線與短連線的區別

在HTTP/1.0中, 預設使用的是短連線.也就是說, 瀏覽器和伺服器每進行一次HTTP操作, 就建立一次連線, 但任務結束就中斷連線.如果客戶端瀏覽器訪問的某個HTML或其他型別的 Web 頁中包含有其他的Web資源,如js檔案、影象檔案、CSS檔案等;當瀏覽器每遇到這樣一個Web資源,就會建立一個HTTP會話。

但從 HTTP/1.1起,預設使用長連線,用以保持連線特性。使用長連線的HTTP協議,會在響應頭有加入這行程式碼:

Connection:keep-alive

  

在真正的讀寫操作之前,server與client之間必須建立一個連線,當讀寫操作完成後,雙方不再需要這個連線時它們可以釋放這個連線,連線的建立通過三次握手,釋放則需要四次握手,所以說每個連線的建立都是需要資源消耗和時間消耗的。

模擬TCP短連線的過程:

  1. client 向 server 發起連線請求
  2. server 接到請求,雙方建立連線
  3. client 向 server 傳送訊息
  4. server 迴應 client
  5. 一次讀寫完成,此時雙方任何一個都可以發起 close 操作

在步驟5中,一般都是 client 先發起 close 操作。當然也不排除有特殊的情況。

從上面的描述看,短連線一般只會在 client/server 間傳遞一次讀寫操作!

 

模擬TCP長連線的過程:

  1. client 向 server 發起連線
  2. server 接到請求,雙方建立連線
  3. client 向 server 傳送訊息
  4. server 迴應 client
  5. 一次讀寫完成,連線不關閉
  6. 後續讀寫操作...
  7. 長時間操作之後client發起關閉請求

長連線: 連線建立成功後,可以傳送多次請求和響應,等雙方不進行通訊的時候,服務端做好斷開連線的操作

短連線: 連線建立成功後,一次請求和響應完成以後連線就會斷開,每次傳送請求需要先建立好連線

長連線減少了使用者的等待時間,提升了訪問速度,但是增加了服務端的資源開銷

短連線不會佔用服務端過多的資源,但是增加了使用者的等待時間,減慢了訪問速速