http短连接和长连接的概念
1.什么是http短连接和长连接?
短连接
连接->传输数据->关闭连接
解释一: 比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 因为连接后接收了数据就断开了,所以每次数据接受处理不会有联系。 这也是HTTP协议无状态的原因之一。
解释二: 短连接就是只有在有数据传输的时候才进行连接,客户-服务器通信/传输数据完毕就关闭连接。
长连接
连接->传输数据->保持连接 -> 传输数据-> ...........->直到一方关闭连接,多是客户端关闭连接。
解释一: 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。
解释二: 长连接就是指在基于tcp的通讯中,一直保持连接,不管当前是否发送或者接收数据。
2.怎么样实现http的短连接和长连接?
1.使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive
3.短连接和长连接的应用场景是什么?
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。
通常浏览器访问服务器的时候就是短连接。
对于服务端来说,长连接会耗费服务端的资源,而且用户用浏览器访问服务端相对而言不是很频繁的, 如果有几十万,上百万的连接,服务端的压力会非常大,甚至会崩溃。所以对于并发量大,请求频率低的,建议使用短连接。
4.短连接与长连接的优缺点是什么?
短连接的优点是:
1.管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段
短连接的却点是:
1.如果客户端连接频繁, 会在tcp的建立和关闭上浪费时间.
长连接的优点是:
1.长连接可以省去较多的TCP建立和关闭的操作,减少网络阻塞的影响
2.当发生错误时,可以在不关闭连接的情况下进行提示
3.减少CPU及内存的使用,因为不需要经常的建立及关闭连接。
4.长连接可以省去较多的tcp建立/关闭的操作,减少浪费,节省时间,对于频繁请求资源的客户,较适用于长连接;
长连接的缺点是:
1.连接数过多时,影响服务端的性能和并发数量。因为client和server如果长时间不关闭的话,会存在一个问题,随着客户的越来越多,server早晚会有扛不住的一天
5. 短连接和长连接涉及的知识和解决办法?
1.HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
2.短连接的生命周期: 短连接在建立连接后,完成一次读写就会自动关闭了。
3.长连接的生命周期: 一条TCP长连接建立后,只要双不提出关闭请求并且不出现异常情况,这条连接是一直存在的.操作系统不会自动去关闭它,甚至经过物理网络拓扑的改变之后仍然可以使用。所以一条连接保持几天、几个月、几年或者更长时间都有可能,只要不出现异常情况或由用户(应用层)主动关闭。客户端和服务单可一直使用该连接进行数据通信。
4. 心跳机制
整理博主:
优秀博文
1. https://www.cnblogs.com/superfj/p/9153776.html
2.TCP(HTTP)长连接和短连接区别和怎样维护长连接: https://blog.csdn.net/ls5718/article/details/51757467
3.TCP通信过程详解以及tcp长连接和短连接: https://blog.csdn.net/zxy987872674/article/details/52653101