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阅读 141,930评论 1 299
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 60,888评论 1 255
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 93,606评论 0 211
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 40,848评论 0 175
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 48,544评论 1 253
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 38,671评论 1 173
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,312评论 2 267
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,112评论 0 165
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 28,899评论 6 229
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 32,451评论 0 213
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,221评论 2 213
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 30,541评论 1 225
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 24,196评论 0 31
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,079评论 2 213
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 31,448评论 3 204
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,597评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 25,969评论 0 164
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 33,451评论 2 230
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 33,523评论 2 229

推荐阅读更多精彩内容