在HTTP/1.0中, 默认使用的是短连接.也就是说, 浏览器和服务器每进行一次HTTP操作, 就建立一次连接, 但任务结束就中断连接.如果客户端浏览器访问的某个HTML或其他类型的 Web 页中包含有其他的Web资源,如js文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。

但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:

Connection:keep-alive

  

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

模拟TCP短连接的过程:

  1. client 向 server 发起连接请求
  2. server 接到请求,双方建立连接
  3. client 向 server 发送消息
  4. server 回应 client
  5. 一次读写完成,此时双方任何一个都可以发起 close 操作

在步骤5中,一般都是 client 先发起 close 操作。当然也不排除有特殊的情况。

从上面的描述看,短连接一般只会在 client/server 间传递一次读写操作!

模拟TCP长连接的过程:

  1. client 向 server 发起连接
  2. server 接到请求,双方建立连接
  3. client 向 server 发送消息
  4. server 回应 client
  5. 一次读写完成,连接不关闭
  6. 后续读写操作...
  7. 长时间操作之后client发起关闭请求

长连接: 连接建立成功后,可以发送多次请求和响应,等双方不进行通信的时候,服务端做好断开连接的操作

短连接: 连接建立成功后,一次请求和响应完成以后连接就会断开,每次发送请求需要先建立好连接

长连接减少了用户的等待时间,提升了访问速度,但是增加了服务端的资源开销

短连接不会占用服务端过多的资源,但是增加了用户的等待时间,减慢了访问速速

最新文章

  1. Netsuite > Foreign Currency Revaluation 外币评估
  2. [经验交流] docker in docker 的变通实现方法
  3. bzoj 1001
  4. PHP读取流文件
  5. ZK框架的分析与应用
  6. nyoj 168 房间安排(区间覆盖)
  7. QT UI 使一个QWidget里面的元素自动填充满本QWidget
  8. Windows服务器Pyton辅助运维--02.远程重启IIS服务器
  9. mysql_config_editor程序的用法
  10. Android Stuido怎样查看快捷键冲突?
  11. Java 信号 Semaphore 简介
  12. SQL Server中存储过程比直接运行SQL语句慢的原因
  13. js获取编辑框游标的位置
  14. DOMContentLoaded
  15. Redis in python
  16. CF1119A Ilya and a Colorful Walk
  17. JPA唯一索引更新删除的问题
  18. Page10:Lyapunov稳定概念及判定定理[Linear System Theory]
  19. js五道经典练习题--第二道仿qq聊天框
  20. Linux与Windows远程互访(使用Rdesktop与SSH)

热门文章

  1. python全栈开发 * 30知识点汇总 * 180713
  2. particles.js中文开发手册
  3. css学习_css文字阴影、盒子阴影
  4. pytorch 中的重要模块化接口nn.Module
  5. Win7 搭建Linux开发环境
  6. 【数据可视化-Echarts】Echart基础
  7. java框架之SpringBoot(9)-数据访问及整合MyBatis
  8. apache多站点vhost.conf配置
  9. WebForm内置对象:Application和ViewState、Repeater的Command用法
  10. c#阿里云服务器发送邮件