HTTP长连接短连接

   我们在介绍HTTP各版本区别的时候说过,HTTP1.1和1.0的区别就是1.1默认情况就是长链接的而在1.0版本里就需要通过头部Connection: Keep-alive来说明链接情况,如果不说明可能就是短连接了。

   那到底什么是长链接什么是短连接,这两个又有什么区别呢?

   HTTP链接是在应用层的协议,他是建立在传输层协议TCP协议和网络层协议IP协议上,IP协议主要解决了网络路由和寻址的问题,TCP协议主要是解决如何在IP层上可靠传输数据包,使得发送端的数据都安全可靠的发送到了接收端。HTTP的长短链接本质上实际是TCP的长链接和短链接。

   我们在用HTTP协议传输之前,需要先让发送端和接收端通过TCP协议链接起来,TCP三次握手成功之后,我们就可以在TCP协议的基础上使用HTTP超文本传输协议来传输数据。

当我们数据传输完成之后,就是长链接和短连接做出区分的地方,

HTTP长连接短连接

这样看来长链接就可以省去很多TCP链接创立和断开的时间,减少了资源的浪费。对于那些服务器频繁请求客户端的操作可以采用长链接。但是这些链接也不能说一直不关闭,一直建立,如果这个链接存在周期过长,但是又不发送有效的请求,随着客户端链接服务器越来越多,服务器迟早会扛不住这样的压力。所以我们经常会设置长链接的条件。

HTTP长连接短连接

我们会在下边设置timeout用来告诉客户端,这个TCP链接可以保持20秒,另外还有设置max=20的,这种表示这个长链接最多接受20次请求就会断开。如果没有设置这些,服务器可能会采用一系列的操作,比如这个链接长时间没有发送请求就把他关闭,或者还有TCP的心跳包来检测这个链接是不是还活着,有很多方法来检测。

所以不是长链接就是好的,长链接确实会省去那些频繁发送请求的场景但是长链接会占用大量的系统资源,对那些可能会有大量用户访问的网站通常会采用短连接。