TCP在真正的讀寫操作之前,server 與 client之間必須建立一個連接,當(dāng)讀寫操作完成后,雙方不再需要這個連接時(shí)它們可以釋放這個連接,連接的建立通過三次握手,釋放則需要四次握手,所以說每個連接的建立都是需要資源消耗和時(shí)間消耗的。
1. TCP短連接
模擬一種TCP短連接的情況:
- client 向 server 發(fā)起連接請求
- server 接到請求,雙方建立連接
- client 向 server 發(fā)送消息
- server 回應(yīng) client
- 一次讀寫完成,此時(shí)雙方任何一個都可以發(fā)起 close 操作
在步驟5中,一般都是 client 先發(fā)起 close 操作。當(dāng)然也不排除有特殊的情況。
從上面的描述看,短連接一般只會在 client/server 間傳遞一次讀寫操作!
2. TCP長連接
再模擬一種長連接的情況:
- client 向 server 發(fā)起連接
- server 接到請求,雙方建立連接
- client 向 server 發(fā)送消息
- server 回應(yīng) client
- 一次讀寫完成,連接不關(guān)閉
- 后續(xù)讀寫操作…
- 長時(shí)間操作之后client發(fā)起關(guān)閉請求
3. TCP長/短連接操作過程
3.1 短連接的操作步驟
建立連接——數(shù)據(jù)傳輸——關(guān)閉連接…建立連接——數(shù)據(jù)傳輸——關(guān)閉連接
3.2 長連接的操作步驟
建立連接——數(shù)據(jù)傳輸…(保持連接)…數(shù)據(jù)傳輸——關(guān)閉連接
4. TCP長/短連接的優(yōu)點(diǎn)和缺點(diǎn)
長連接可以省去較多的TCP建立和關(guān)閉的操作,減少浪費(fèi),節(jié)約時(shí)間。對于頻繁請求資源的客戶來說,較適用長連接。但是,client與server之間的連接如果一直不關(guān)閉的話,會存在一個問題,隨著客戶端連接越來越多,server早晚有扛不住的時(shí)候,這時(shí)候server端需要采取一些策略,如關(guān)閉一些長時(shí)間沒有讀寫事件發(fā)生的連接,這樣可以避免一些惡意連接導(dǎo)致server端服務(wù)受損; 如果條件再允許就可以以客戶端機(jī)器為顆粒度,限制每個客戶端的最大長連接數(shù),這樣可以完全避免某個蛋疼的客戶端連累后端服務(wù)。
短連接對于服務(wù)器來說管理較為簡單,存在的連接都是有用的連接,不需要額外的控制手段。但如果客戶請求頻繁,將在TCP的建立和關(guān)閉操作上浪費(fèi)時(shí)間和帶寬。
5. TCP長/短連接的應(yīng)用場景
數(shù)據(jù)庫的連接用長連接,如果用短連接頻繁的通信會造成 socket 錯誤,而且頻繁的socket 創(chuàng)建也是對資源的浪費(fèi)。文章來源:http://www.zghlxwxcb.cn/news/detail-610237.html
WEB網(wǎng)站的http服務(wù)一般都用短鏈接,因?yàn)殚L連接對于服務(wù)端來說會耗費(fèi)一定的資源,如果用長連接,而且同時(shí)有成千上萬的用戶,如果每個用戶都占用一個連接的話,那后果可想而知。所以在并發(fā)量大,但每個用戶無需頻繁操作情況下用短連接好。文章來源地址http://www.zghlxwxcb.cn/news/detail-610237.html
到了這里,關(guān)于TCP長連接和短連接的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!