長連接與短鏈接問題的探討

通常我們會提及HTTP的長連接和短連接,因爲HTTP本身是一個請求-響應的無狀態協議。所以就它自身來說是無法實現長連接的。

HTTP長連接的本質是TCP傳輸層的長連接。

如圖
這裏寫圖片描述
圖片來自http://www.nowamagic.net/academy/detail/23350305

它表明了一個大致的過程,左邊是短連接,TCP建立連接,客戶端發起請求,並且收到服務器響應後,就會主動進行四次揮手結束TCP連接。

右邊則是長連接,在一次HTTP請求-響應結束後,保持TCP連接的不斷開,從而在下次請求時,直接複用上次建立的TCP連接。

HTTP協議中的Header的參數connection:keep-alive;
在HTTP1.0中默認的是短連接,而在HTTP1.1中默認採用長連接。

很多的博客中對比了長連接和短連接的優劣。

但是這裏我要有個概念,短連接每個請求都會建立tcp請求,之後釋放。
單單請求一個百度首頁html,css,js,img就多達19個請求。短連接需要發起19次的TCP連接,而長連接只要一次。這還不算我們使用的電商網站,門戶網站。

因爲隨着web端的發展,web可以做的事情越來越多,而早期簡單的web只能提供簡單的信息瀏覽,所以採用短連接是當時的考慮,後面由於交互的增加,各種頁面的資源文件增多,HTTP1.1協議採用了長連接,也是正確的選擇。

雖然,短連接節約服務器的資源(請求-響應後就釋放),但是在每次建立TCP連接所產生的延遲,以及對帶寬的壓力也不能不考慮。

簡單的說下短連接的優點:管理起來比較簡單,存在的連接都是有用的連接,不需要額外的控制手段。

以上爲長連接和短連接的區別,當別人問起你的時候可別再不清楚了

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