1. TCP连接

当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的

经典的三次握手示意图:

经典的四次握手关闭图:

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

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

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

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

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

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

从上面可以看出,TCP保活功能主要为探测长连接的存活状况,不过这里存在一个问题,存活功能的探测周期太长,还有就是它只是探测TCP连接的存活,属于比较斯文的做法,遇到恶意的连接时,保活功能就不够使了。

在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个蛋疼的客户端连累后端服务。

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

转自:http://www.cnblogs.com/liuyong/archive/2011/07/01/2095487.html

转载于:https://www.cnblogs.com/olmlo/p/4824861.html

TCP长连接与短链接相关推荐

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

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

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

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

  3. TCP长连接和短链接

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

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

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

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

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

  6. TCP 长连接和短连接:

    参考文章: TCP长连接和短连接的区别_yanglianzhuang的博客-CSDN博客_tcp短连接 tcp的长连接和短连接 - 皮皮虾打怪兽 - 博客园 长连接: 介绍: 指在一个TCP连接上可以 ...

  7. TCP长连接和短连接的区别

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

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

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

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

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

最新文章

  1. mysql自增id前端安全显示_mysql使用自增id遇到的坑
  2. 让使用SQLite的.NET应用自适应32位/64位系统
  3. windows查询每个线程占用的内存_C#多线程
  4. gulp教程之gulp-imagemin压缩图片
  5. 科技通讯PSD分层海报出击!Hello 5G时代
  6. 中国象棋将帅问题java_编程之美读书笔记1.2——中国象棋将帅问题
  7. jinja Escaping
  8. Android 11适配指南之系统相机拍照、打开相册
  9. 自动定时执行任务、定时任务执行的几种实现方法
  10. OSChina 周六乱弹 —— 舔狗是没有好下场的
  11. 80后的我们为什么不结婚
  12. 汇编语言 查看存储器中的数据
  13. 离散数学知识点总结(9):集合的性质
  14. 微信小程序解密用户信息--java解密
  15. macf1-f12按键失灵_枕头2-1-0失灵
  16. 拓嘉辰丰:拼多多直播推广的付费模式有哪些?
  17. Java、JSP+BBS论坛系统的设计与实现
  18. 平板电脑3C认证的重要性,为什么要3C认证?Ⓠ欢Ⓠ迎3来8网3赚5喔0
  19. IT行业里哪些岗位既火爆又高薪?
  20. TensorFlow调试之一种很笨但行之有效的调试方案

热门文章

  1. [笔记]用VS2010编译运行项目时报“LINK : fatal error LNK1104:...
  2. java拍照搜题软件下载_修改版|学生福利!!免费拍照搜题秒出答案,扫一扫作业出答案!...
  3. Python+selenium+firefox模拟登录微博并爬取数据(1
  4. mysql用binlog恢复数据_mysql 利用 binlog 恢复数据
  5. docker安装chirpstack_docker-compose快速部署ChirpStack
  6. python并发与并行_python多进程,多线程分别是并行还是并发
  7. MySQL 中的共享表空间与独立表空间如何选择
  8. SQL-Hive中的Select From解析
  9. 水仙花数 与 变种水仙花数 的求解 【C语言】
  10. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★