1. TCP短连接

我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server 发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在 client/server间传递一次读写操作

短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段

2. TCP长连接

接下来我们再模拟一下长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

首先说一下TCP/IP详解上讲到的TCP保活功能,保活功能主要为服务器应用提供,服务器应用希望知道客户主机是否崩溃,从而可以代表客户使用资源。如果客户已经消失,使得服务器上保留一个半开放的连接,而服务器又在等待来自客户端的数据,则服务器将应远等待客户端的数据,保活功能就是试图在服务 器端检测到这种半开放的连接。

如果一个给定的连接在两小时内没有任何的动作,则服务器就向客户发一个探测报文段,客户主机必须处于以下4个状态之一:

客户主机依然正常运行,并从服务器可达。客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后将保活定时器复位。
    客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。服务端将不能收到对探测的响应,并在75秒后超时。服务器总共发送10个这样的探测 ,每个间隔75秒。如果服务器没有收到一个响应,它就认为客户主机已经关闭并终止连接。
    客户主机崩溃并已经重新启动。服务器将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
    客户机正常运行,但是服务器不可达,这种情况与2类似,TCP能发现的就是没有收到探查的响应。

3. 长连接和短连接的优点和缺点

由上可以看出,长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。不过这里存在一个问题,存活功能的探测周期太长,还有就是它只是探测TCP连接的存活,属于比较斯文的做法,遇到恶意的连接时,保活功能就不够使了。在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可 以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个蛋疼的客户端连累后端服务。

短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。

长连接和短连接的产生在于client和server采取的关闭策略,具体的应用场景采用具体的策略,没有十全十美的选择,只有合适的选择

TCP长连接,短连接相关推荐

  1. nginx 代理tcp长连接短连接配置

    nginx使用ngx_stream_core_module模块代理tcp长连接短连接,可以增强服务器的容灾能力 下面是一个配置信息,自己也方便记录一下

  2. UDP与TCP区别以及长、短连接

    长连接 也叫持久连接,在TCP层握手成功后,不立即断开连接,并在此连接的基础上进行多次消息(包括心跳)交互,直至连接的任意一方(客户端OR服务端)主动断开连接,此过程称为一次完整的长连接.HTTP1. ...

  3. http协议之长连接与短连接服务器,长连接短连接

    HTTP 协议与 TCP/IP 协议的关系 HTTP 协议是应用层的协议,而 TCP 协议是传输层的协议,IP 协议是网络层的协议. IP 协议主要解决网络路由以及寻址等问题,而 TCP 协议主要解决 ...

  4. 转载的HTTP长连接短连接和无状态的理解

    HTTP长连接和短连接以及推送服务原理 HTTP长连接和短连接1 1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用 ...

  5. HTTP - 长连接 短连接 长轮询 短轮询 心跳机制

    错觉与突然的察觉 大多数人都知道HTTP1.0不支持长连接,知道HTTP1.1支持长连接. 这是业界的一个常识. 然而这样的描述导致了一些不做网络底层开发的开发者都下意识的认为HTTP1.1是一个可以 ...

  6. 04-长连接,短连接,连接池

    一. 短连接 短连接是指程序和数据库通信时需要建立连接,执行操作后,连接关闭.短连接简单来说就是每一次操作数据库,都要打 开和关闭数据库连接. 基本步骤是:连接→数据传输→关闭连接. 二. 长连接 长 ...

  7. TCP/IP,HTTP,RPC、SOA、长连接短连接等的区别

    一.TCP/IP 建立TCP需要三次握手才能建立(客户端发起SYN,服务端SYN+ACK,客户端ACK), 断开连接则需要四次握手(客户端和服务端都可以发起,FIN-ACK-FIN-ACK). 1.为 ...

  8. java mina长连接短连接_MINA实现TCP长连接(四)——断开重连

    前言 今天涉及以下内容: mina官网及实现客户端需要的jar包 客户端实现重连接涉及到的几个类 重连接在Activity中的使用 效果图和项目结构图 重连接涉及到的类源码 先来波效果图 image. ...

  9. HTTP长连接短连接

    一.什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待 ...

最新文章

  1. python 的保留字
  2. 为什么Redis要比Memcached更火?
  3. 【安全牛学习笔记】其他途径
  4. Opengl-光照-基本光照-投光物-多光源(现实世界的光可不只有太阳也并不只有一个)
  5. CSP认证202012-1期末预测之安全指数[C++题解]:简单题
  6. Spring Boot 构建多租户 SaaS 平台核心技术指南
  7. R语言实战(七)图形进阶
  8. 消费类电子认证测试资料清单
  9. mimo-ofdm无线通信技术及matlab实现_智芯文库 | FPGA无线通信课程连载——扰码的原理及实现...
  10. android 原生开发 3d地图 下载_arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)...
  11. 手把手教你写个ORM(一)
  12. 【捣鼓】TypeError: “x” is not a constructor
  13. 至高荣誉:WPS制作荣誉证书(转)
  14. 关于nodejs gm的各种各样的问题解决方法集合(中文乱码,non-conforming drawing,��Ч���� )
  15. js计算金额精度问题--currency.js(2022.11.10 阴)
  16. nodejs 查看下载文件路径_如何查看知网下载的caj文件
  17. 李宏毅2021机器学习笔记——Regression
  18. 阿里P8耗时3年,总结的Java面试复盘手册,带你挑战50万年薪
  19. Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
  20. 【问题解决】Because witness class org.springframework.cache.interceptor.DefaultKeyGenerator is not existed

热门文章

  1. 数据库-查看表-创建表-查询表
  2. jvm_虚拟机组成部分概述
  3. C语言烧写C51单片机的线,51单片机烧写程序过程以及详细说明【图文】
  4. java log4j 多个文件_java – Log4j:每个请求一个日志文件
  5. Spring Boot Transaction 源码解析(二)
  6. python中的set和dict_Python中dict和set的用法讲解
  7. linux 查看磁盘空间 拷贝不同目录下的文件
  8. 020303阶段三 I/O复用 select和epoll的文件描述符管理
  9. for循环运行流程/步骤
  10. 点赞模块设计 - Redis缓存 + 定时写入数据库实现高性能点赞功能