HTTP長連接和短連接的區別和優缺點?

哎喲JAVA不錯哦


今天去面試,問到了HTTP長連接和短連接的區別,剛好來總結下!

首先明白下什麼是HTTP?

HTTP:Hypertext Transfer Protocol(超文本傳輸協議),是一種網絡傳輸協議,HTTP只是定義了一套數據傳輸的標準,處於OSI七層模型中的應用層,所以說http連接是不標準的;

真正實現定義並實現了數據傳輸協議的TCP,所以問題變為TCP長連接和TCP短連接的區別? 長和短又怎麼區分的呢?舉個很俗的例子,物慾橫流的今天,我們都知道一個詞--yy情,像這種一晚上或者一次的關係就是短,而像戀人朋友的關係就是長。

TCP連接也是一樣的,如果在一次HTTP請求和響應結束之後,立馬斷開連接,就是TCP短連接;

如果在一次請求和響應結束之後,沒有主動斷開連接,繼續為後面的請求響應提供連接,就是長連接;長連接的client和server為了保持連接,會有一個Connection的設置為keep-alive,這是一種心跳機制,client和server會以一定的頻率發送消息確認對方是否還在線,如果不在線那麼一段時間之後連接就會關閉,打開baidu網,能看到在Request Heads和Response Heads兩個頭中都有這個配置,說明網頁多數使用的是長連接(事實上,現在的HTTP1.1默認都是長連接)


那麼TCP長短連接之間有什麼區別與有缺點呢?

長連接和短連接之間最為明顯的不同就是TCP連接的創建和關閉頻率,長連接維持對於客戶端來說可能沒有什麼影響,但是對服務端來說,如果有成千上萬的連接這種併發量較高的情況,那麼對於服務器性能是有很大要求;


如果是短連接,在一個網站打開每個網頁或者做什麼操作都需要需要頻繁的創建和銷燬連接(三次握手,四次揮手瞭解一下),顯然這對於服務器也是極大地資源浪費(可能包含頁面,圖片,靜態文件等等大量數據);

所以使用TCP長連接還是短連接還是要按照場景來定。http連接就說到這了,更多的技術分享,敬請關注。。


分享到:


相關文章: