長連接1.client 向 server 發(fā)起連接2.server 接到請求,雙方建立連接3.client 向 server 發(fā)送消息4.server 回應(yīng) client5.一次讀寫完成,連接不關(guān)閉6.后續(xù)讀寫操作...7.長時間操作之后client發(fā)起關(guān)閉請求長連接就是在建立連接和關(guān)閉連接之間可以進(jìn)行多次數(shù)據(jù)傳輸短連接1.client 向 server 發(fā)起連接請求2.server 接到請求,雙方建立連接3.client 向 server 發(fā)送消息4.server 回應(yīng) client5.一次讀寫完成,此時雙方任何一個都可以發(fā)起 close 操作短連接就是在建立連接到關(guān)閉連接只進(jìn)行一次連接長連接與短連接的優(yōu)缺點(diǎn)長連接可以省去較多的tcp建立和關(guān)閉的操作,減少浪費(fèi),節(jié)約時間;對于頻繁請求資源的客戶來說較適用長連接client與server之間的連接如果一直不關(guān)閉的話會存在一個問題,隨著客戶端連接越來越多,server早晚有扛不住的時候,這時候server端需要采取一些策略;如關(guān)閉一些長時間沒有讀寫事件發(fā)生的連接這樣可以避免一些惡意連接導(dǎo)致server端服務(wù)受損;如果條件再容許就可以以客戶端機(jī)器為顆粒度,限制每個客戶端的最大長連接數(shù),這樣就可以避免客戶端連累后端服務(wù)短連接對于服務(wù)器來書管理較為簡單,存在的連接都是有用的連接,不需要額外的控制手段但如果客戶請求頻繁,將在TCP的建立和關(guān)閉操作上浪費(fèi)時間和帶寬
TCP長/短連接的應(yīng)用場景
長連接多用于操作頻繁,點(diǎn)對點(diǎn)的通訊,而且連接數(shù)不能太多情況。每個TCP連接都需要三次握手,這需要時間,如果每個操作都是先連接,再操作的話那么處理速度會降低很多,所以每個操作完后都不斷開,再次處理時直接發(fā)送數(shù)據(jù)包就OK了,不用建立TCP連接。例如:數(shù)據(jù)庫的連接用長連接,如果用短連接頻繁的通信會造成socket錯誤,而且頻繁的socket 創(chuàng)建也是對資源的浪費(fèi)。而像WEB網(wǎng)站的http服務(wù)一般都用短鏈接,因?yàn)殚L連接對于服務(wù)端來說會耗費(fèi)一定的資源,而像WEB網(wǎng)站這么頻繁的成千上萬甚至上億客戶端的連接用短連接會更省一些資源,如果用長連接,而且同時有成千上萬的用戶,如果每個用戶都占用一個連接的話,那可想而知吧。所以并發(fā)量大,但每個用戶無需頻繁操作情況下需用短連好。