一.概念

HTTP长连接,也称持久连接,是使用同一个TCP连接来发送和接受多个HTTP请求/应答,而不是位每一个新的请求/应答打开新的TCP连接。这种方式由于通信连接一直存在,此种方式常用于P2P通信。

HTTP短链接,浏览器和服务器每进行一次HTTP操作,就会建立一个连接,但是任务结束后就终端连接,不会像长连接那样保持连接。此方式多用于一点对多点通讯,c/s通信。

二。长连接和短链接的操作过程

长连接的操作步骤是:

建立连接----数据传输----保持连接-----数据传输----保持心跳------关闭连接

短链接的操作步骤:

建立连接---数据传输---关闭连接...建立连接--数据传输---关闭连接撒

三. 长连接和短链接的使用时机

长连接多用于操作频繁,点对点通讯 ,而且连接数不太多的情况。每个TCP连接都需要三次握手,断开都要三次挥手。

如果每次操作都要建立连接然后在操作的话,处理速度会降低,所以每次操作后,下次操作用直接发送数据就好了,不用在建立TCP连接。例如数据库就用长连接,并且同时有成千上万的用户,每个用户都占有一个链接的话,可知服务器压力有多大。所以并发量大,又不频繁操作情况下需要短连接。

总之:长连接和短链接根据需求而定。长连接和短链接的产生在于产生于client和server采用的关闭策略,具体场景应用具体策略。没有十全十美的选择,只有合适的选择。

四,优点和不足

长连接优势:

由于同时打开的tcp连接较少,会使用较少的cpu和内存

允许请求和应答的HTTP管线化(将多个HTTP request 整批提交的技术,而在传送过程中不需要先等待服务器的回应)。

通过减少TCP开启引起的包的数目,降低网线堵塞

不需要进行握手降低延迟

报告错误无需关闭TCP连接

短链接优势:

web网站的http服务一般都用短链接。因为长连接对于服务器消耗一定的资源。向web网站这种多用户用短链接更省资源。并发大操作不频繁

长连接劣势:

对于单个文件不断请求的服务,可能造成极大的性能影响,因为在文件请求之后还保持了很长时间的不必要的连接

短链接的劣势:

如果频繁的的通信会早成socket错误,而且频繁的socket创建是对资源的浪费

五。http长连接的设置

客户端设置失效时间,服务端设置不失效

  客户端设置 Connection: keep-alive 和 Keep-Alive: timeout=30。
  服务端设置永久连接,即 Connection: keep-alive。
  连接将一直保持。

HTTP协议中的长连接和短链接的更多相关文章

  1. HTTP协议中的长连接、短连接、长轮询、短轮询

    长连接.短连接,指的是TCP连接.长连接是为了复用TCP连接. 长轮询中,服务器如果检测到库存量没有变化的话,将会把当前请求挂起一段时间(这个时间也叫作超时时间,一般是几十秒).在这个时间里,服务器会 ...

  2. Socket编程中的长连接、短链接以及心跳包机制详解

    参考:http://blog.csdn.net/zdwzzu2006/article/details/7723738 一.定义 1.TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,se ...

  3. HTTP协议中的长连接和短连接(keep-alive状态)

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

  4. HTTP长连接与短链接

    想要充分了解HTTP长连接,需要首先知道一些基本概念: TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这 ...

  5. 微信开发第8章 通过accesstoken将长连接转换为短链接

    业务场景:开发的过程中经常会有一些很长的链接,这个时候如果生成二维码,会导致扫码的过程中识别比较慢,如果存入数据库,会导致数据库的字段长度要设定的很长才行,所以把长连接转换为短链接就越来越重要了. 接 ...

  6. 【转】HTTP中的长连接和短连接分析

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

  7. HTTP协议原理(长连接,短连接/ get,post区别等等)

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

  8. socket长连接和短链接区别

    短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束后就中断连接.短连接是指SOCKET连接后发送后接收完数据后马上断 ...

  9. TCP长连接与短链接

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

  10. TCP中的长连接和短连接(转载)

    原文地址:http://www.cnblogs.com/onlysun/p/4520553.html 次挥手,所以说每个连接的建立都是需要资源消耗和时间消耗的  示意图:               ...

随机推荐

  1. 使用layui+jQuery实现点击数据修改,即点即改。

    使用layui+jQuery实现点击数据修改即可修改 首先要用到layui的官网手册 地址:https://www.layui.com/ 注意1.  此功能是在使用layui展示数据的基础上实现 3. ...

  2. 谷歌是如何改进 GKE、Cloud Run 的 gVisor 文件系统性能的?

    灵活的应用程序架构.CI/CD 管道和容器工作负载通常运行不受信任的代码,因此应该与敏感的基础设施隔离.一种常见的解决方案是部署纵深防御产品(如使用gVisor的GKE Sandbox)以通过额外的保 ...

  3. 关于protobuf报错'tr1/unordered_map' file not found

    这个问题的话,查了很多资料,总的来说就是C++版本的问题,新版本的namespace结构变化了,C++库的层级结构变化了 1.config.h HASH_MAP_H    HASH_SET_H 新版本 ...

  4. C#中DataTable新增列、删除列、更改列名、交换列位置

    一.新增列 1.1.新增列 /*新增列*/ dataTable.Columns.Add("列名称", Type.GetType("数据类型")); /*比如添加 ...

  5. 设置cudnn日志

    主要分为两个步骤,分别设置两个环境变量. 第一步,设置日志级别. # 三种级别,设置环境变量为1为开启,设置为0关闭. # CUDNN_LOGINFO_DBG # CUDNN_LOGWARN_DBG ...

  6. python逐行读取替换文件中的字符串

    用列表中的值逐行替换文件中符合条件的字符串,并保存为新的文件, open("file").readlines 方案1: 逐行替换并保存为新的文件 import re def rep ...

  7. wake on lan magic packet

    局域网模式,必须电脑和手机在同一个 局域网,或者是网段内 外网模式  这个就是,你拿着手机,在任何地方,都可以开机电脑.

  8. MySQL Delete 表数据后,磁盘空间并未释放,为什么?

    有开发小哥咨询了一个问题,记录一下处理过程分享给有需要的朋友.问题如下:MySQL数据库中有几张表增删比较频繁.数据变动剧烈且数据量大,导致数据增长过快,磁盘占用多.为了节约成本,定期进行数据备份,并 ...

  9. css 启动页 loading动画

    <div class="index-html-loader"> <div class="text">Loading...</div ...

  10. k8s各个服务和执行流程介绍

    Master节点部署的都是kubernetes的核心模块 APIServer 提供资源操作的唯一入口,并且提供认证/授权/kubernets的访问控制可以通过kubectl和自己开发的客户端,通过ht ...