长连接的定义:
HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据
短连接的定义:
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,一次读写操作,任务结束就中断连接。
长短连接的区别:
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
注意:在长连接中Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
tcp的三次握手:
tcp长连接与短连接的优缺点:
- ⻓连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用⻓连接。
- client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些⻓时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大⻓连接数,
- 短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。
tcp长连接与短连接的应用场景:
- ⻓连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。
- 如果并发量大,使用短连接。WEB网站的http服务一般都用短链接,因为⻓连接对于服务端来说会耗费一定的资源,