前言

作为一名web开发者,如果对http协议不熟悉那肯定是说不过去的,至少不能称为一名合格的web开发。http协议是属于应用层协议,除了http协议,我们还经常遇到Tcp/Udp协议,他们是属于传输层协议,ip协议是属于网络层协议。这里的关注点不是这些协议的区别,我们主要来学习一下http协议中的长连接短连接。http的长连接和短连接本质上是TCP协议的长连接和短连接,由于UDP不是基于连接的协议,所以UDP是没有长连接短连接之说的。接下来就和大家一起学习一下http长连接短连接的区别。

TCP的三次握手四次挥手

上面讲到http的长连接短连接本质上是TCP的长连接和短连接。那么TCP的长连接短连接究竟有什么区别,首先我们需要搞清楚什么是TCP的三次握手四次挥手。在日常浏览器访问服务器的时候,传递数据过去,一般如果是基于http协议,都是先通过TCP建立连接,在这个连接中传递数据包,在数据包传递完之后,再释放TCP连接。所以在一次请求从开始到结束,需要TCP建立连接释放连接。而在连接建立的过程之中客户端和服务器之间需要三次握手,来确定连接的建立。具体的握手过程可以见下图
扫盲系列之http长连接短连接
在上面的三次握手之后,客户端和服务端的连接算是建立成功了,于是客户端可以向服务端发送数据包。在数据包传递完之后,如果需要释放刚刚建立的链接。那么客户端和服务端就需要进行四次挥手,具体挥手流程见下图
扫盲系列之http长连接短连接
四次挥手结束之后,握手建立的连接就相当于释放了。从上面的握手,挥手可以看出连接的建立和释放是比较耗费资源的。

长连接短连接的区别

上面通过握手和挥手说明了,连接的创建和释放都是比较耗费资源,而所谓的长连接就是指在一次请求的数据包传递完之后,并不是马上释放连接。而是通过一个心跳测试来维持连接,当下一次有请求进来的时候,共用这个连接来传递数据包,直到一定时间之后才回收这个连接。这样就可以避免由于频繁创建连接,释放连接导致的资源消耗和请求延迟。这样确实提升了请求的处理速度,但是由于在服务端需要维持连接的存在,如果需要的连接数比较小,而且在连接中需要频繁操作,这种长连接比较实用。如果创建了太多的长连接,在服务器端需要维持这些连接,这样服务器端的压力就比较大了。而和长连接对应的短连接是在数据包传递完之后就立刻释放连接。所以短连接不需要额外的资源来维持和管理短连接。但是短连接自身的缺点刚刚在上面也已经讲过了。所以对于长连接短连接的使用场景也是需要合理选择的。一般数据库连接是属于长连接,而在早期的浏览器访问默认是短连接,但是在http1.1中默认是长连接。一般长连接在请求的响应头上都有这个属性Connection Keep-Alive,那么在长连接中是怎么确定数据包已经传递完毕的呢,其实这就要通过设置Content-length来确定请求报文的长度了。

长连接和短连接的操作过程

短连接的操作流程是:
建立连接——数据传输——释放连接。。。。。建立连接——数据传输——释放连接
就这样来来回回的创建和关闭
长连接的操作流程是:
建立连接——数据传输。。。。(通过服务端的心跳测试来保持连接)。。。数据传输——释放连接
上面需要注意的一点就是,长连接不是说永远不会释放连接。那么随着长连接的增多,服务端的压力迟早会压垮服务器。他是通过服务端的保活功能,来维持长连接。如果发现客户端不是出于**状态就释放长连接,避免资源的浪费。

总结

上面是对长连接短连接的一点小介绍,至于他们的使用需要具体情况具体对待!

相关文章:

  • 2022-01-12
  • 2022-01-05
  • 2022-02-09
猜你喜欢
  • 2021-11-18
  • 2022-02-09
  • 2021-09-08
  • 2021-11-20
  • 2021-12-13
  • 2021-06-11
相关资源
相似解决方案