1. 程式人生 > >長連線和短連線區別和優缺點

長連線和短連線區別和優缺點

TCP與UDP 

udp:面向無連線的通訊協議,資料包括目的埠資訊和源埠資訊
優點:面向無連線,操作簡單,要求系統資源較少,速度快,由於不需要連線,可進行廣播發送
缺點:傳送資料之前不需要與對方建立連線,接收到資料時也不需要傳送確認訊號,傳送端不知道接收端是否正確接接收,不會重發,不可靠。


tcp:面向連線的通訊協議,通過三次握手建立連線,通訊完成時四次揮手斷開連線
優點:在資料傳輸時,有確認、視窗、重傳、擁塞控制機制,能保證資料正確性,較為可靠
缺點:速度相對慢一點,要求系統資源較多
 

短連線 

連線->傳輸資料->關閉連線 
比如HTTP是無狀態的的短連結,瀏覽器和伺服器每進行一次HTTP操作,就建立一次連線,但任務結束就中斷連線。 
具體就是 瀏覽器client發起並建立TCP連線 -> client傳送HttpRequest報文 -> server接收到報文->server handle併發送HttpResponse報文給前端,傳送完畢之後立即呼叫socket.close方法->client接收response報文->client最終會收到server端斷開TCP連線的訊號->client 端斷開TCP連線,具體就是呼叫close方法。 
也可以這樣說:短連線是指SOCKET連線後,傳送接收完資料後馬上斷開連線。 因為連線後接收了資料就斷開了,所以每次資料接受處理不會有聯絡。 這也是HTTP協議無狀態的原因之一。

長連線 

連線->傳輸資料->保持連線 -> 傳輸資料-> ………..->直到一方關閉連線,多是客戶端關閉連線。 長連線指建立SOCKET連線後不管是否使用都保持連線,但安全性較差。HTTP在短連結和長連線上的選擇:HTTP是無狀態的 ,也就是說,瀏覽器和伺服器每進行一次HTTP操作,就建立一次連線,但任務結束就中斷連線。如果客戶端瀏覽器訪問的某個HTML或其他型別的 Web頁中包含有其他的Web資源,如JavaScript檔案、影象檔案、CSS檔案等;當瀏覽器每遇到這樣一個Web資源,就會建立一個HTTP會話 
HTTP1.1和HTTP1.0相比較而言,最大的區別就是增加了持久連線支援(貌似最新的HTTP1.1 可以顯示的指定 keep-alive),但還是無狀態的,或者說是不可以信任的。 
如果瀏覽器或者伺服器在其頭資訊加入了這行程式碼 Connection:keep-alive TCP連線在傳送後將仍然保持開啟狀態,於是,瀏覽器可以繼續通過相同的連線傳送請求。保持連線節省了為每個請求建立新連線所需的時間,還節約了頻寬。 
實現長連線要客戶端和服務端都支援長連線。

 優缺點

tcp長連線優缺點:長連線可以省去較多的tcp建立/關閉的操作,減少浪費,節省時間,對於頻繁請求資源的客戶,較適用於長連線;client和server如果長時間不關閉的話,會存在一個問題,隨著客戶的越來越多,server早晚會有扛不住的一天,這時需要採取一些策略,如關閉一些長時間不讀寫操作的連線,這樣可以避免一些惡意連線導致server端服務受損,如果條件再允許,就可以以客戶端為顆粒度,限制每個客戶端的最大連線數


tcp短連線優缺點:短連線對於伺服器來說較為簡單,存在的連線都是有用的連線,不需要額外的控制,但如果客戶端連線頻繁,會在tcp的建立和關閉上浪費時間。