tcp在真正的讀寫操作(資料傳輸)之前,server與client之間必須建立乙個連線,當讀寫操作完成後,雙方不再需要這個連線時它們可以釋放這個連線,連線的建立通過三次握手,釋放則需要四次握手,所以說每個連線的建立都是需要資源消耗和時間消耗的。
tcp通訊的整個過程,如下圖:
模擬一種tcp短連線的情況:
1.client 向 server 發起連線請求
2.server 接到請求,雙方建立連線
3.client 向 server 傳送訊息
4.server 回應 client
一次讀寫完成,此時雙方任何乙個都可以發起 close 操作在步驟5中,一般都是 client 先發起 close 操作。當然也不排除有特殊的情況。從上面的描述看,短連線一般只會在 client/server 間傳遞一次讀寫操作!
再模擬一種長連線的情況:
1.client 向 server 發起連線
2.server 接到請求,雙方建立連線
3.client 向 server 傳送訊息
4.server 回應 client
5.一次讀寫完成,連線不關閉
6.後續讀寫操作
7.長時間操作之後client發起關閉請求
3.1 短連線的操作步驟是:
建立連線——資料傳輸——關閉連線…建立連線——資料傳輸——關閉連線
3.2 長連線的操作步驟是:
建立連線——資料傳輸…(保持連線)…資料傳輸——關閉連線
短連線對於伺服器來說管理較為簡單,存在的連線都是有用的連線,不需要額外的控制手段。但如果客戶請求頻繁,將在tcp的建立和關閉操作上浪費時間和頻寬。
長連線可以省去較多的tcp建立和關閉的操作,減少浪費,節約時間。對於頻繁請求資源的客戶來說,較適用長連線。
像web**的http服務一般都用短鏈結,因為長連線對於服務端來說會耗費一定的資源,
而像web**這麼頻繁的成千上萬甚至上億客戶端的連線用短連線會更省一些資源。
長連線多用於操作頻繁,點對點的通訊,而且連線數不能太多情況。
每個tcp連線都需要三次握手,這需要時間,如果每個操作都是先連線,
再操作的話那麼處理速度會降低很多,所以每個操作完後都不斷開,
再次處理時直接傳送資料報就ok了,不用建立tcp連線。
例如:資料庫的連線用長連線,如果用短連線頻繁的通訊會造成socket錯誤,
而且頻繁的socket 建立也是對資源的浪費。
鏈結1:
TCP長鏈結和短鏈結
tcp在真正的讀寫操作之前,server與client之間必須建立乙個連線,當讀寫操作完成後,雙方不再需要這個連線時它們可以釋放這個連線,連線的建立通過三次握手,釋放則需要四次握手,所以說每個連線的建立都是需要資源消耗和時間消耗的。tcp通訊的整個過程,如下圖 模擬一種tcp短連線的情況 1.cli...
tcp 長連線 短鏈結
1.2.2.tcp短連線 我們模擬一下tcp短連線的情況,client向server發起連線請求,server接到請求,然後雙方建立連線。client向server傳送訊息,server回應client,然後一次讀寫就完成了,這時候雙方任何乙個都可以發起close操作,不過一般都是client先發起...
長鏈結轉短鏈結
將長鏈結轉化成短鏈結 風之子 2012 短鏈 短位址 short url 杭州.mark 演算法大致如下 1 將長 md5生成32位簽名串,分為4段,每段8個位元組 2 對這四段迴圈處理,取8個位元組,將他看成16進製制串與0x3fffffff 30位1 與操作,即超過30位的忽略處理 3 這30位...