長連接、短連接

HTTP協議的長連接和短連接,實質上是TCP協議的長連接和短連接。
HTTP屬於應用層協議,在傳輸層使用TCP協議,在網絡層使用IP協議。IP協議主要解決網絡路由和尋址問題,TCP協議主要解決如何在IP層之上可靠的傳遞數據包。

  • HTTP協議是無狀態的

HTTP是一個無狀態的面向連接的協議,無狀態不代表HTTP不能保持TCP連接,也不能代表HTTP使用的是UDP協議(無連接)。無狀態,指的是協議對於事務處理沒有記憶能力,服務器不知道客戶端是什麼狀態。打開一個服務器上的網頁和你之前打開這個服務器上的網頁之間沒有任何聯繫。

  • 長連接、短連接

在HTTP/1.0中,默認使用的是短連接。瀏覽器和服務器每進行一次HTTP操作,就建立一次連接,任務結束就中斷連接。如果客戶端瀏覽器訪問的某個HTML或其他類型的 Web頁中包含有其他的Web資源,如圖像文件、CSS文件等,當瀏覽器每遇到這樣一個Web資源,就會建立一個HTTP會話。
從 HTTP/1.1起,默認使用長連接,用以保持連接特性。
使用長連接的HTTP協議,在響應頭有加入這行代碼:Connection:keep-alive

在使用長連接的情況下,當一個網頁打開完成後,客戶端和服務器之間用於傳輸HTTP數據的 TCP連接不會關閉,如果客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經建立的連接。Keep-Alive不會永久保持連接,它有一個保持時間,可以在不同的服務器軟件(如Apache)中設定這個時間。實現長連接要客戶端和服務端都支持長連接。

  • 長連接短連接操作過程
  1. 短連接的操作步驟是:

建立連接——數據傳輸——關閉連接…建立連接——數據傳輸——關閉連接

  • 長連接的操作步驟是:

建立連接——數據傳輸…(保持連接)…數據傳輸——關閉連接

  • 長連接和短連接的優點和缺點


    1)長連接可以省去較多建立連接和關閉連接的操作,比較節省資源和時間,但長連接如果一直存在的話,需要很多探測包的發送來維持這個連接;對服務器將是很大的負荷相對而言,
    2)短連接則不需要服務器承擔太大負荷,只要存在的連接就都是有用連接,但如果客戶端請求頻繁,就會在TCP的建立連接和關閉連接上浪費較大的資源和時間

  • 什麼時候用長連接,短連接?

長連接:長連接多用於操作頻繁,點對點的通訊,而且連接數不能太多情況。每個TCP連接都需要三步握手,這需要時間,如果每個操作都是先連接,再操作的話那麼處理速度會降低很多,所以每個操作完後都不斷開,處理時直接發送數據包就好,不用建立 TCP 連接。(例如:數據庫的連接用長連接, 如果用短連接頻繁的通信會造成 socket 錯誤,而且頻繁的 socket 創建也是對資源的浪費。)

短連接:網站的 http 服務一般都用短鏈接,因爲長連接對於服務端來說會耗費一定的資源,像 WEB 網站這麼頻繁的成千上萬甚至上億客戶端的連接用短連接會更省一些資源,如果用長連接,而且同時有成千上萬的用戶,如果每個用戶都佔用一個連接的話,服務器負荷很大,併發量大,但每個用戶無需頻繁操作情況下需用短連接好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章