1. tcp短連線
模擬一種tcp短連線的情況:
1. client 向 server 發起連線請求
2. server 接到請求,雙⽅建⽴連線
3. client 向 server 傳送訊息
4. server 回應 client
5. 一次讀寫完成,此時雙方任何乙個都可以發起 close 操作
在步驟5中,一般都是 client 先發起 close 操作。當然也不排除有特殊的情
況。從上⾯的描述看,短連線⼀般只會在 client/server 間傳遞⼀次讀寫操作!
2. tcp長連線
再模擬一種長連線的情況:
1. client 向 server 發起連線
2. server 接到請求,雙方建立連線
3. client 向 server 傳送訊息
4. server 回應 client
5. 一次讀寫完成,連線不關閉
6. 後續讀寫操作...
7. 長時間操作之後client發起關閉請求
3. tcp長/短連線操作過程
3.1 短連線的操作步驟是:
建立連線——資料傳輸——關閉連線...建立連線——資料傳輸——關閉連線
3.2 長連線的操作步驟是:
建立連線——資料傳輸...(保持連線)...資料傳輸——關閉連線
4. tcp長/短連線的優點和缺點
長連線可以省去較多的tcp建立和關閉的操作,減少浪費,節約時間。
對於頻繁請求資源的客戶來說,較適用長連線。
client與server之間的連線如果一直不關閉的話,會存在乙個問題,
隨著客戶端連線越來越多,server早晚有扛不住的時候,這時候server端
需要採取一些策略,
如關閉一些長時間沒有讀寫事件發生的連線,這樣可以避免一些惡意連
接導致server端服務受損;
如果條件再允許就可以以客戶端機器為顆粒度,限制每個客戶端的最大
長連線數,
這樣可以完全避免某個蛋疼的客戶端連累後端服務。
短連線對於伺服器來說管理較為簡單,存在的連線都是有⽤的連線,不
需要額外的控制手段。
但如果客戶請求頻繁,將在tcp的建立和關閉操作上浪費時間和頻寬
5. tcp長/短連線的應用場景
長連線多用於操作頻繁,點對點的通訊,而且連線數不能太多情況。
每個tcp連線都需要三次握手,這需要時間,如果每個操作都是先連
接,再操作的話那麼處理速度會降低很多,所以每個操作完後都不斷開,
再次處理時直接傳送資料報就ok了,不用建立tcp連線。
例如:資料庫的連線用長連線,如果用短連線頻繁的通訊會造成socket
錯誤,而且頻繁的socket 建立也是對資源的浪費。
而像web**的http服務一般都用短鏈結,因為長連線對於服務端來說
會耗費一定的資源,
而像web**這麼頻繁的成千上萬甚至上億客戶端的連線用短連線會更
省一些資源,
如果用長連線,而且同時有成千上萬的使用者,如果每個使用者都占用乙個
連線的話,
那可想而知吧。所以併發量大,但每個使用者無需頻繁操作情況下需用短
連好。
tcp的三次握手和4次揮手
第一次握手 host1傳送乙個tcp標誌位syn 1 ack 0的資料報給host2,並隨機會產生乙個sequence number 3233.當host2接收到這個資料後,host2由syn 1可知客戶端是想要建立連線 第二次握手 host2要對客戶端的聯機請求進行確認,向host1傳送應答號ac...
TCP協議的三次握手 4次揮手
tcp的連線建立是乙個三次握手過程,目的是為了通訊雙方確認開始序號,以便後續通訊的有序進行。主要步驟如下 連線開始時,連線建立方 client 傳送syn包,幷包含了自己的初始序號a 連線接受方 server 收到syn包以後會回覆乙個syn ack包,其中包含了對上乙個a包的回應資訊ack,回應的...
TCP連線的「三次握手」與「4次揮手」
三次握手 所謂的三次握手即tcp連線的建立。這個連線必須是一方主動開啟,另一方被動開啟的。以下為客戶端主動發起連線的 握手之前主動開啟連線的客戶端結束closed階段,被動開啟的伺服器端也結束closed階段,並進入listen階段。隨後開始 三次握手 1 首先客戶端向伺服器端傳送一段tcp報文,其...