某些朋友對長、短連線的概念存在誤解,下面我們嘗試釐清這2個概念。
1)一般情況下,client成功連線到server後,會傳送1個或幾個請求,收到server端1個或幾個應答;然後!就會非常識趣地馬上呼叫close()關閉連線了。這就叫短連線。
2)某些情況下,如果client有很多資料要傳給server或者從server獲取,就不甘心於只是傳送幾個請求,在相當長(幾秒,幾分鐘,甚至幾個小時)的時間內,都不會呼叫close()關閉連線(我們稱:client端hold住了連線);而且為了防止server有空閒連線超時斷開的機制,通常client會每隔幾秒發乙個心跳包告訴server自己還活著。這就是長連線。
綜上2種情況,乙個連線是長是短,幾乎完全取決於client的實現者。
因此,最正確的理解是:一條連線從它建立到銷毀,如果存在的時間長(短),就是長(短)連線。
這是它們表面的含義,也是本質的含義。看來,是我們想複雜了!
【錯誤理解】
1,tcp是長連線,udp是短連線?
答:長/短連線都是在tcp的前提下來說的,因為udp沒有連線的概念。udp client不需要與server建立連線,它只需要在需要的時候發乙個包出去就可以了。所以,更準確地說法應該是:tcp長連線、tcp短連線。
2,tcp是長連線,http是短連線?
答:誤以為tcp只能是長連線。我們再說一遍,tcp的連線有長有短。另外,http 1.0確實是短連線,但是,http 1.0加入了keepalive之後,也可以實現長連線。再到後來,出現了websocket,就是缺省長連線的協議(注意預設兩個字)。
什麼是長連線和短連線
在日常專案中,大多的時候我們用的是短連線,乙個請求過來,乙個執行緒處理完該請求,執行緒被執行緒池 這個請求就關閉了.雖然這能滿足很大部分的需求,但是也有些問題,比如說 如果客戶端發的請求比較多,比較頻繁,服務端就會忙於建立連線處理請求,由於服務端的執行緒數也有限,併發比較大的話有可能會造成服務端的崩...
什麼是長連線和短連線?
在tcp雙方通訊之前,需要通過 三次握手 建立一條鏈結。鏈結建立以後雙方就可以進行資料互動了,當互動完成後還需要通過 四次揮手 斷開鏈結,這是tcp通訊的一般流程。每個鏈結的建立都是需要資源消耗和時間消耗的,正是考慮到資源消耗和時間問題,才有了tcp短鏈結和長鏈結機制。首先看下tcp短鏈結的情況 1...
什麼是長連線?長連線 短連線 三次握手
在經過三次握手之後,如果再進行請求,不需要再次進行三次握手。http連線分為兩個 長連線 短連線 seq 序列號,是乙個隨機值 ack 確認序號,只有當ack 1的時候有效,值 seq 1 標誌位 syn 發起乙個連線,用來做同步。ack 確認序號有效 狀態 closed 關閉 listen 監聽 ...