长连接意味着进行一次数据传输后,不关闭连接,长期保持连通状态。如果两个应用程序之间有新的数据需要传输,则直接复用这个连接,无需再建立一个新的连接。就像下图这样。

它的优势是在多次通信中可以省去连接建立和关闭连接的开销,并且从总体上来看,进行多次数据传输的总耗时更少。缺点是需要花费额外的精力来保持这个连接一直是可用的,因为网络抖动、服务器故障等都会导致这个连接不可用,甚至是由于防火墙的原因。所以,一般我们会通过下面这几种方式来做“保活”工作,确保连接在被使用的时候是可用状态:

1.利用 TCP 自身的保活(Keepalive)机制来实现,保活机制会定时发送探测报文来识别对方是否可达。一般的默认定时间隔是 2 小时,你可以根据自己的需要在操作系统层面去调整这个间隔,不管是 linux 还是 windows 系统。

2.上层应用主动的定时发送一个小数据包作为“心跳”,探测是否能成功送达到另外一端。 保活功能大多数情况下用于服务端探测客户端的场景,一旦识别客户端不可达,则断开连接,缓解服务端压力。
提前多说一句,如果在做了高可用的分布式系统场景中运用长连接会更麻烦一些。因为高可用必然包含自动故障转移、故障隔离等机制。这恰恰导致了一旦发生故障,客户端需要及时发现哪些连接已处于不可用状态,并进行相应的重连,包括重新做负载均衡等工作。

了解完了长连接,那么短连接就很容易理解了。短连接意味着每一次的数据传输都需要建立一个新的连接,用完再马上关闭它。下次再用的时候重新建立一个新的连接,如此反复。

它的优势是由于每次使用的连接都是新建的,所以基本上只要能够建立连接,数据就大概率能送达到对方。并且哪怕这次传输出现异常也不用担心影响后续新的数据传输,因为届时又是一个新的连接。缺点是每个连接都需要经过三次握手和四次握手的过程,耗时大大增加。

另外,短连接还有一个致命的缺点。我们回到前面提到的维基百科对 socket 的定义,其中说到 socket 包含通信协议、目标地址、状态等。实际当你在基于 socket 进行开发的时候,这些包含的具体资源主要就是这 5 个:源 IP、源端口、目的 IP、目的端口、协议,有个专业的叫法称之为“五元组”。在一台计算机上只要这五元组的值不重复,那么连接就可以被建立。然而一台计算机最多只能开启 65535 个端口,如果现在两个进程之间需要通信,作为服务端的 IP 和端口必然是固定的,因此单个客户端理论上最多只能与服务端同时建立 65535 个 socket 连接。如果除去操作系统和其它进程所占用的端口,实际还会更少。所以,一旦使用不当,在很短的时间内建立了大量连接,端口很容易被占用完。这不但会导致自身无法正常工作,还会影响到同一台计算机上的其它进程。

长连接和短链接的区别相关推荐

  1. TCP长连接和短链接的区别及应用场景

    TCP长连接和短链接的区别及应用场景 TCP在真正的读写操作之前,服务端与客户端之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立通过三次握手,释放则需要四 ...

  2. 什么是长连接和短连接?(长链接、短链接)什么时候使用长连接、短链接?

    文章目录 什么是长连接和短连接? 什么时候使用长连接.短链接? 定义 适用场景 什么是长连接和短连接? 在HTTP/1.0中默认使用短连接.也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连 ...

  3. http / 关于长连接和短链接的理解

    HTTP 协议是基于请求 / 响应模式的,因此只要服务端给了响应,本次 HTTP 请求就结束了,也可以理解成 HTTP 是面向请求 / 响应的. TCP 协议是面上连接的. 综上,如果 HTTP 请求 ...

  4. HTTP长连接,短链接,持久连接的区别

    什么是Http长连接 长连接定义: client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收.这种方式下由于通讯连接一直存在.此种方式常用于P2P点对点的通信. 长连接的操 ...

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

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

  6. 长连接与短链接问题的探讨

    通常我们会提及HTTP的长连接和短连接,因为HTTP本身是一个请求-响应的无状态协议.所以就它自身来说是无法实现长连接的. HTTP长连接的本质是TCP传输层的长连接. 如图 图片来自http://w ...

  7. TCP长连接与短链接

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

  8. TCP长连接和短链接及优缺点

    TCP和UDP tcp:面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手断开连接 优点:在数据传输时,有确认.窗口.重传.拥塞控制机制,能保证数据正确性,较为可靠 缺点:速度相对慢一点,要 ...

  9. TCP长连接和短链接

    目录 短连接 长连接 keepalive功能 中间设备删除超时的连接过程 TCP keepalive交互过程 TCP keepalive带来的问题: 为什么需要长连接? http keepalive ...

最新文章

  1. YOLOv4中的tricks概念总结——Bag of freebies
  2. sql join on 多表连接_阿里规范不建议多表Join,可这SQL要怎么写啊?
  3. rust 编程入门_面向初学者的Rust –最受欢迎的编程语言入门
  4. 2021汉语言文学对高考成绩查询,2021汉语言文学专业就业前景怎么样
  5. 如何将地址栏打开的图标隐藏_如何制作一款手机主题?这套UI主题图标教程将为你解密!...
  6. 结构体,文件操作,指针,简单练习
  7. Android View layout方法的简单使用案例
  8. [面试必考]OSI 网络七层协议以及各层的功能
  9. 厚积‘博’发,成就卓越IT人生!
  10. c#记录合并PDF和word
  11. 什么软件可以测试皮肤色号,肤色测试卡怎么用?肤色测试卡的使用方法
  12. 我的世界服务器无限繁殖,村民无限繁殖!我的世界自制超速繁殖机
  13. 数据库候选关键词怎么求_数据库中主键、主码、主属性、关键字、候选关键字、码的区别...
  14. 在MPLAB X IDE下用SEGGER J-LINK调试PIC32
  15. 本机IP地址,ios的IP地址,www.ip138.com,
  16. 2017年,加密货币对冲基金收益超过1000%
  17. 2023中职组网络安全技能竞赛——代码审计解析(超级详细)
  18. 孕妇好的软件有哪些 孕妇软件哪个好 孕妇软件
  19. 怎么删除PPT设置的打印限制
  20. matlab上能仿真功率吗,基于MATLAB的高功率因数整流器仿真实验平台

热门文章

  1. 会员裂变营销 实现会员量、销量快速提升
  2. 梳理国外lead项目操作全部流程
  3. 硬刚Doris系列」Apache Doris基本使用和数据模型
  4. 永磁同步电机矢量控制(一)—— 建立数学模型
  5. 苹果之前删除计算机怎么恢复,苹果电脑删除的文件怎么找回?
  6. 可以用思维导图iMindMap做什么
  7. MC1000程序开发见解
  8. Python爬虫之--------泸深A股股票
  9. Unity在PC端调用电脑镜头
  10. Python进阶篇---异常处理