1 什么是长连接和短连接

三次握手和四次挥手

TCP区别于UDP最重要的特点是TCP必须建立在可靠的连接之上,连接的建立和释放就是握手和挥手的过程。
三次握手为连接的建立过程,握手失败则连接建立失败。
四次挥手为连接的完整释放过程,也会发生某个消息丢失或者超时的情况,有一方主动发送FIN消息即表示连接即将释放。
注:SYN、ACK、FIN消息具有哪些含义,以及连接的状态,请参考《TCP/IP详解 卷1》第18章。

长连接

长连接,也叫持久连接,在TCP层握手成功后,不立即断开连接,并在此连接的基础上进行多次消息(包括心跳)交互,直至连接的任意一方(客户端OR服务端)主动断开连接,此过程称为一次完整的长连接。HTTP 1.1相对于1.0最重要的新特性就是引入了长连接。

短连接

短连接,顾名思义,与长连接的区别就是,客户端收到服务端的响应后,立刻发送FIN消息,主动释放连接。也有服务端主动断连的情况,凡是在一次消息交互(发请求-收响应)之后立刻断开连接的情况都称为短连接。
注:短连接是建立在TCP协议上的,有完整的握手挥手流程,区别于UDP协议。

2 如何快速区分当前连接使用的是长连接还是短连接

1、凡是在一次完整的消息交互(发请求-收响应)之后,立刻断开连接(有一方发送FIN消息)的情况都称为短连接;
2、长连接的一个明显特征是会有心跳消息(也有没有心跳的情况),且一般心跳间隔都在30S或者1MIN左右,用wireshark抓包可以看到有规律的心跳消息交互(可能会存在毫秒级别的误差)。

3 什么时候用长连接,短连接?

1、需要频繁交互的场景使用长连接,如即时通信工具(微信/QQ,QQ也有UDP),相反则使用短连接,比如普通的web网站,只有当浏览器发起请求时才会建立连接,服务器返回相应后,连接立即断开。
2、维持长连接会有一定的系统开销,用户量少不容易看出系统瓶颈,一旦用户量上去了,就很有可能把服务器资源(内存/CPU/网卡)耗尽,所以使用需谨慎。
转载:
http://jgsj.iteye.com/blog/2050436

转载于:https://www.cnblogs.com/pangguoping/p/5571422.html

TCP/IP系列——长连接与短连接的区别相关推荐

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

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

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

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

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

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

  4. TCP长连接和短连接

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

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

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

  6. android socket 长连接_TCP/IP,http,socket,长连接,短连接

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家 下一篇:这200G的Java实战资料是我师傅当年教 ...

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

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

  8. 网络:tcp长连接与短连接

    当网络通信采用tcp协议时,在真正的读写操作之前,sever与client之间必须建立一个连接,当读写操作完成之后,对方不再需要这个连接时他们可以释放这个链接,连接的连接需要三次握手,释放需要四次握手 ...

  9. TCP长连接与短连接、心跳机制

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

最新文章

  1. PyTorch代码调试利器_TorchSnooper
  2. c#动态修改代码的crackme
  3. [转]Python 字符串操作实现代码(截取/替换/查找/分割)
  4. php 文章读取_php实现获取文章内容第一张图片的方法
  5. java swing简介
  6. 方维订餐系统二次开发,将商户的所有图片调到商铺详情里面
  7. [20190530]oracle Audit文件管理.txt
  8. android 多类型参数,Android的数据绑定-类型参数T具有不兼容的上限:ViewDataBinding和MainActivity...
  9. 图像仿射变换之图像旋转 python
  10. 测试可变字符序列stringBuilder
  11. LeetCode:35. Search Insert Position(Easy)
  12. tp3.2 生成二维码
  13. 使用tcpdump找出PP用户
  14. 基于bootstrap 的AceAdmin 1.4版本(iframe修改)
  15. ca盘显示无证书_ca证书提示没有正确的安装驱动程序
  16. 程序员常用资源工具集合
  17. OpenCV批量处理图片
  18. PokemonGo:LBS游戏开发
  19. 微信忘记支付密码,实名认证的身份证又没有办理银行卡怎么破?(未解决)
  20. android 10.0 在系统源码下生成jks系统签名文件

热门文章

  1. JSON.toJSONString()空字段不忽略
  2. mysql 索引过长1071-max key length is 767 byte
  3. swoole 服务端heartbeat_check_interval心跳检测 客户端 swoole_timer_tick 发送心跳包 这里只是个demo参考
  4. WebKit技术内幕(笔记)
  5. Hadoop Hive
  6. 棋牌游戏服务器架构: 详细设计(3) 数据库设计
  7. How to stop looking for someone perfect and find someone to love
  8. Linux 下的驱动开发最简单例子
  9. 练习瑜伽中常见的三大误区
  10. 创建Win2003域和Win2008域之间的信任关系,Active Directory系列之十八