长连接和短连接的区别

短连接 
连接->传输数据->关闭连接 
比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 
具体就是 浏览器client发起并建立TCP连接 -> client发送HttpRequest报文 -> server接收到报文->server handle并发送HttpResponse报文给前端,发送完毕之后立即调用socket.close方法->client接收response报文->client最终会收到server端断开TCP连接的信号->client 端断开TCP连接,具体就是调用close方法。 
也可以这样说:短连接是指SOCKET连接后,发送接收完数据后马上断开连接。 因为连接后接收了数据就断开了,所以每次数据接受处理不会有联系。 这也是HTTP协议无状态的原因之一。

长连接 
连接->传输数据->保持连接 -> 传输数据-> ………..->直到一方关闭连接,多是客户端关闭连接。 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。HTTP在短链接和长连接上的选择:HTTP是无状态的 ,也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话 
HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的HTTP1.1 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。 
如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-alive TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了带宽。 
实现长连接要客户端和服务端都支持长连接。

 优缺点
tcp长连接优缺点:长连接可以省去较多的tcp建立/关闭的操作,减少浪费,节省时间,对于频繁请求资源的客户,较适用于长连接;client和server如果长时间不关闭的话,会存在一个问题,随着客户的越来越多,server早晚会有扛不住的一天,这时需要采取一些策略,如关闭一些长时间不读写操作的连接,这样可以避免一些恶意连接导致server端服务受损,如果条件再允许,就可以以客户端为颗粒度,限制每个客户端的最大连接数


tcp短连接优缺点:短连接对于服务器来说较为简单,存在的连接都是有用的连接,不需要额外的控制,但如果客户端连接频繁,会在tcp的建立和关闭上浪费时间。

 


原文链接:https://blog.csdn.net/qq_38270106/article/details/83539289

posted @ 2020-04-13 21:49  昭z  阅读(8486)  评论(0编辑  收藏  举报