取經之路 - 長連接和短鏈接

取經之路 - 長連接和短鏈接

本質上是TCP的長連接和短鏈接

HTTP是一個應用層協議

TCP是一個傳輸層協議

IP是一個網絡層協議

TCP解決如何在IP層上可靠的傳輸數據

HTTP是一個無狀態的協議,對事務的處理沒有記憶能力

HTTP/1.0默認使用短鏈接

HTTP/1.1起默認使用長連接 通過請求頭設置: connection: keep-alive

長連接

  • keep-alive保持一段時間的連接
  • 詳解 keep-alive
主要爲服務器應用提供,服務器應用希望知道客戶主機是否崩潰,明確客戶是否可以使用資源。
    如果客戶已經消失
    	使得服務器上保留一個半開放的連接,而服務器又在等待來自客戶端的數據,則服		務器將應遠等待客戶端的數據,保活功能就是試圖在服務 器端檢測到這種半開放		的連接。

	如果一個給定的連接在兩小時內沒有任何的動作
    	則服務器就向客戶發一個探測報文段,客戶主機必須處於以下4個狀態之一:

            客戶主機依然正常運行,並從服務器可達。
    			客戶的TCP響應正常,而服務器也知道對方是正常的,服務器在兩小時				後將保活定時器復位。

            客戶主機已經崩潰,並且關閉或者正在重新啓動。
    			在任何一種情況下,客戶的TCP都沒有響應。服務端將不能收到對探測				的響應,並在75秒後超時。服務器總共發送10個這樣的探測 ,每個間				 隔75秒。如果服務器沒有收到一個響應,它就認爲客戶主機已經關閉並				 終止連接。

            客戶主機崩潰並已經重新啓動。
    			服務器將收到一個對其保活探測的響應,這個響應是一個復位,使得服					務器終止這個連接。

            客戶機正常運行,但是服務器不可達。
    			這種情況與2類似,TCP能發現的就是沒有收到探查的響應。

短鏈接

  • 任務結束,連接斷開
  • 短連接一般只會在 client/server間傳遞一次讀寫操作
  • 優點:管理起來比較簡單,存在的連接都是有用的連接,不需要額外的控制手段

TCP三次握手建立連接

TCP四次揮手斷開連接

https://blog.csdn.net/printf123scanf/article/details/105095919

優缺點

  • 可以省去較多的TCP建立和關閉的操作,減少浪費,節約時間

  • 存活功能的探測週期太長

  • Client與server之間的連接如果一直不關閉的話,會存在一個問題,隨着客戶端連接越來越多,server早晚有扛不住的時候

  • 管理較爲簡單

  • 如果客戶請求頻繁,將在TCP的建立和關閉操作上浪費時間和帶寬

合適選擇使用

  • 長連接多用於操作頻繁,點對點的通訊,而且連接數不能太多情況
  • 像WEB網站的http服務一般都用短鏈接
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章