TCP長連接和短連接


  • TCP在真正的讀寫操作之前,server與client之間必須建立一個連接,當讀寫操作完成后,雙方不再需要這個連接
    時它們可以釋放這個連接,連接的建立通過三次握手,釋放則需要四次握手,所以說每個連接的建立都是需要
    資源消耗和時間消耗的。

三次握手的示意圖:

三次握手

四次揮手的示意圖:

四次揮手

TCP短連接

  • 模擬一下TCP短連接的情況:

    1. client 向 server 發起連接請求
    2. server 接到請求,雙方建立連接
    3. client 向 server 發送消息
    4. server 回應 client
    5. 一次讀寫完成,此時雙方任何一個都可以發起 close 操作
  • 在第 5 點鐘,一般都是 client 先發起 close 操作。因為一般的 server 不會回復完 client 后就立即關閉連接。
    當然也不排除有特殊的情況。
    從上面的描述看,短連接一般只會在 client/server 間傳遞一次讀寫操作!

短連接的優點

  • 管理起來比較簡單,存在的連接都是有用的連接,不需要額外的控制手段

TCP長連接

  • 再模擬一下長連接的情況:

    1. client 向 server 發起連接
    2. server 接到請求,雙方建立連接
    3. client 向 server 發送消息
    4. server 回應 client
    5. 一次讀寫完成,連接不關閉
    6. 后續讀寫操作...
  • 長連接的狀態保持在下面的TCP保活功能中講解。

長/短連接操作過程

短連接的操作步驟是:

  • 建立連接——數據傳輸——關閉連接...建立連接——數據傳輸——關閉連接

長連接的操作步驟是:

  • 建立連接——數據傳輸...(保持連接)...數據傳輸——關閉連接

TCP保活功能

  • 保活功能主要為服務器應用提供,服務器應用希望知道客戶主機是否崩潰,
    從而可以代表客戶使用資源。如果客戶已經消失,使得服務器上保留一個半開放的連接,
    而服務器又在等待來自客戶端的數據,則服務器將應遠等待客戶端的數據,
    保活功能就是試圖在服務器端檢測到這種半開放的連接。

  • 如果一個給定的連接在2小時內沒有任何的動作,則服務器就向客戶發一個探測報文段,
    客戶主機必須處于以下4個狀態之一:

    1. 客戶主機依然正常運行,并從服務器可達。客戶的TCP響應正常,而服務器也知道對方是正常的,
      服務器在兩小時后將保活定時器復位。
    2. 客戶主機已經崩潰,并且關閉或者正在重新啟動。在任何一種情況下,客戶的TCP都沒有響應。
      服務端將不能收到對探測的響應,并在75秒后超時。服務器總共發送10個這樣的探測 ,每個間隔75秒。
      如果服務器沒有收到一個響應,它就認為客戶主機已經關閉并終止連接。
    3. 客戶主機崩潰并已經重新啟動。服務器將收到一個對其保活探測的響應,這個響應是一個復位,
      使得服務器終止這個連接。
    4. 客戶機正常運行,但是服務器不可達,這種情況與2類似,TCP能發現的就是沒有收到探查的響應。

長/短連接的優點和缺點

  • 長連接可以省去較多的TCP建立和關閉的操作,減少浪費,節約時間。
    對于頻繁請求資源的客戶來說,較適用長連接。

  • 不過這里存在一個問題,存活功能的探測周期太長,還有就是它只是探測TCP連接的存活,
    屬于比較斯文的做法,遇到惡意的連接時,保活功能就不夠使了。
    在長連接的應用場景下,client端一般不會主動關閉它們之間的連接,
    client與server之間的連接如果一直不關閉的話,會存在一個問題,
    隨著客戶端連接越來越多,server早晚有扛不住的時候,這時候server端需要采取一些策略,
    如關閉一些長時間沒有讀寫事件發生的連接,這樣可以避免一些惡意連接導致server端服務受損;
    如果條件再允許就可以以客戶端機器為顆粒度,限制每個客戶端的最大長連接數,
    這樣可以完全避免某個蛋疼的客戶端連累后端服務。

  • 短連接對于服務器來說管理較為簡單,存在的連接都是有用的連接,不需要額外的控制手段。

  • 但如果客戶請求頻繁,將在TCP的建立和關閉操作上浪費時間和帶寬。

長/短連接的應用場景

  • 長連接多用于操作頻繁,點對點的通訊,而且連接數不能太多情況。
    每個TCP連接都需要三步握手,這需要時間,如果每個操作都是先連接,
    再操作的話那么處理速度會降低很多,所以每個操作完后都不斷開,
    再次處理時直接發送數據包就OK了,不用建立TCP連接。
    例如:數據庫的連接用長連接,如果用短連接頻繁的通信會造成socket錯誤,
    而且頻繁的socket 創建也是對資源的浪費。

  • 而像WEB網站的http服務一般都用短鏈接,因為長連接對于服務端來說會耗費一定的資源,
    而像WEB網站這么頻繁的成千上萬甚至上億客戶端的連接用短連接會更省一些資源,
    如果用長連接,而且同時有成千上萬的用戶,如果每個用戶都占用一個連接的話,
    那可想而知吧。所以并發量大,但每個用戶無需頻繁操作情況下需用短連好。


http://blog.csdn.net/whuslei/article/details/6667471
https://www.centos.bz/2012/08/tcp-establish-close/
http://www.cnblogs.com/0201zcr/p/4694945.html
http://www.cnblogs.com/beifei/archive/2011/06/26/2090611.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內容