参考文章:

  • TCP长连接和短连接的区别_yanglianzhuang的博客-CSDN博客_tcp短连接
  • tcp的长连接和短连接 - 皮皮虾打怪兽 - 博客园

长连接:

  1. 介绍
    指在一个TCP连接上可以连续发送多个数据包。在TCP连接保持期间,如果没有数据包发送,需双方发送探测包以维持此连接,一般需要自己做在线维持(不发送RST包和四次挥手)。
  2. 过程:

连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接(一个TCP连接通道多个读写通信)。 这就要求长连接在没有数据通信时,定时发送数据包(心跳),以维持连接状态;

  1. 应用场景:
    数据库,各种组件的连接等…
    长连接多用于操作频繁(读写),点对点的通讯,且连接数不能太多的场景。因为频繁建立tcp连接,是对资源的浪费,服务器的请求处理速度也会更低。
  2. 优点:
    长连接可以省去较多的TCP建立和关闭的操作(三次握手/四次挥手),减少资源浪费,节约连接时间。对于频繁请求资源的客户来说,更适用长连接。
  3. 缺点:
    client与server间的连接如果一直不关闭,会存在一个问题:随着客户端连接越来越多,server早晚有扛不住的时候,这时server端需要采取一些策略:

    • 如关闭一些长时间没有产生读写事件的连接,这样能淘汰一些导致server端服务受损的恶意连接
    • 如果条件再允许就以客户端机器为粒度,限制每个客户端的最大长连接数,这样能避免某个客户端占据大量后端服务连接
  4. 问题:

    (1) HTTP首部定义Connection: keep-alive后,客户端、服务端怎么知道本次传输结束呢?
    在长连接中一般是没有条件能判断读写何时结束,又因为tcp首部中没有直接表示数据包长度的字段,所以要获取tcp数据包长度,可通过ip首部及tcp首部来间接的获取:TCP数据包长度 = IP首部的数据包长度 - IP首部长度(20字节 )- TCP包首部长度(20字节 ),最后根据这个长度去读取相应长度的报文。

    静态页面通过Content-Length提前告知对方数据传输大小。

    (2) 客户端是长连接还是短连接?

    推荐长连接。若业务并发量大,为性能考虑,可以开启『连接池』功能。(连接池:由于一些数据库创建和销毁连接的开销很大,或者相对于所执行的具体数据操作,连接所耗的资源过多,此时就需要添加连接池改善性能。它是一些网络代理服务或者应用服务器实现的特性,这个连接池被所有连接的客户端共享使用,连接池可以加速连接,也可以减少数据库连接,降低数据库服务器的负载)。

  5. 补充:
  • 在http中,设置header的Connection为keep-alive就算是长连接了,但是要服务器和客户端两边都设置才有效。(如果客户端的请求头中的connection为close,则表示客户端需要关掉长连接)
  • 日常用的基本上都是HTTP1.1协议(默认长连接,也就是默认Connection的值就是keep-alive)
  • 长连接并不是永久连接的。如果一段时间内(具体的时间长短,是可以在header当中keepalive_timeout进行设置的,也就是超时时间),超时的话这个长连接就会被断开。

短连接:

  1. 介绍:
    通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接(管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段);
  2. 过程:

连接 → 数据传输 → 关闭连接

  1. 应用场景:
    WEB网站的http服务一般都用短链接(http1.0默认为短连接,而http1.1之后默认为长连接,keep-alive 带时间,操作次数限制的长连接),因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源(也就是正常情况下,每个用户不会频繁发送请求,没必要长时间占用一条连接或端口)
  2. 优点:
    短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段
  3. 缺点:
    如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽,消耗服务端的资源

TCP 长连接和短连接:相关推荐

  1. PHP tcp短链接,http请求怎样实现TCP长连接、短连接

    HTTP连接分为长连接和短连接,而我们现在常用的都是HTTP1.1,因此我们用的都是长连接. 这句话其实只对了一半,我们现如今的HTTP协议,大部分都是1.1的,因此我们平时用的基本上都是长连接.但是 ...

  2. TCP长连接和短连接

    2019独角兽企业重金招聘Python工程师标准>>> 1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操 ...

  3. [转]TCP(HTTP)长连接和短连接区别和怎样维护长连接

    原文链接 一.HTTP协议和TCP协议 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问题, ...

  4. 分析 HTTP,TCP 的长连接和短连接以及 sock

    作者:zhoulujun 链接:https://www.zhoulujun.cn/html/webfront/SGML/web/2015_1016_317.html 1 HTTP 协议与 TCP/IP ...

  5. TCP长连接与短连接的区别(转)

    1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次 ...

  6. tcp协议中的长连接和短连接服务器,谈谈HTTP协议中的短轮询、长轮询、长连接和短链接...

    undefined 在之前总结 WebSocket 的时候就已经提到过短长轮询了~~今天看公众号文章,又把长短连接引进来一起分析.感觉这种总结很棒,那么我们一起看看呗 长短连接 听说长短连接的话,应该 ...

  7. tcp、http协议的长连接和短连接

    转载:http://www.cnblogs.com/onlysun/p/4520553.html 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当 ...

  8. TCP/IP系列——长连接与短连接的区别

    1 什么是长连接和短连接 三次握手和四次挥手 TCP区别于UDP最重要的特点是TCP必须建立在可靠的连接之上,连接的建立和释放就是握手和挥手的过程. 三次握手为连接的建立过程,握手失败则连接建立失败. ...

  9. http,tcp的长连接和短连接

    http长连接和短连接 短连接:客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接. 长连接:从HTTP/1.1起,默认使用长连接,用以保持连接特性.使用长连接的HTTP协议,会 ...

  10. TCP长连接和短连接代码及其比较

    前言: 最近又看到了关于TCP长连接和短连接的概念,以前也看过Http长连接和短连接的概念,因为Http是建立在TCP协议之上的,所以它其实是依赖TCP的长连接和短连接.所以,我就萌生了一个想法,看看 ...

最新文章

  1. mysql where后面if_mysql查询语句where后面加if判断
  2. 这是我的2018年终总结,你的呢?
  3. 我司那产品经理丨第二期
  4. Gym102059A Coloring Roads
  5. 处理文件、摄像头和图形用户界面
  6. 人群频率 | gnomAD数据库 (二) 后台数据的获取及质量评估
  7. 读者专属福利: Git面试宝典分享
  8. 计算机新建用户会不会速度快,创建帐户让电脑系统速度比重装还快
  9. Debian 决定允许无记名投票,候选人Felix Lechner质疑
  10. 无监督学习:Linear Dimension Reduction(线性降维)
  11. Extjs GRID表格组件使用小结
  12. 转载:相同版本的JVM和Java应用,在 x86 和AArch64 平台性能相差30%
  13. win8 开发新格局分析
  14. 最强分布式锁工具:Redisson
  15. php 抽奖活动_php 实现活动人选抽奖功能代码
  16. ENVI中FLAASH大气校正中的Atmosphere Model选项各含义
  17. 在IE浏览器访问网址时显示证书错误,导航已阻止
  18. 怎么取消linux ssh互信,[系统-linux] ssh互信操作
  19. 【文章阅读】【超解像】--Residual Dense Network for Image Super-Resolution
  20. 【功能规格说明书】命劫开发

热门文章

  1. 【丽江时光】静静的古城清晨
  2. uniapp-H5、vue 中好用的textarea右下角显示字数限制
  3. 程序员,你何时离开北京?
  4. 机器学习西瓜书笔记:软间隔和支持向量回归SVR
  5. HTTP 的前世今生:一次性搞懂 HTTP、HTTPS、SPDY、HTTP2.0
  6. freecel 空档接龙 算法
  7. Redmi Note 10 pro,红米nate10pro面具成功!
  8. 0603异常,OS,
  9. python设置曲面图颜色范围_三维曲面p的matplotlib中的自定义颜色映射
  10. 抖音SEO排名优化源代码开发搭建技术分析