短连接就是客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会复用同一个 TCP 通道,直到客户端心跳检测失败或服务器连接超时。
短连接过程如下:
发起请求连接->传输数据->关闭连接
长连接过程如下:
发起请求连接->传输数据->保持连接 -> 传输数据-> ... ->关闭连接。
简而言之,若没有数据传输也要保持TCP连接,就是长连接,反之就是短连接。(如下图)
长连接是由一个Connecton字段控制的,有两个取值:
1、 Keep-Alive 表示使用长连接,默认。
2、 Close 表示关闭长连接
复用详解
HTTP长连接的本质就是对TCP连接的复用,一个浏览器可能会发送建立狠很多个HTTP,也就是TCP,当浏览器需要发送一个HTTP时,怎么从多个TCP中找到自己的TCP呢?
通过 源IP地址、源端口号,目的IP地址、目的端口号 这个四元组来唯一确定一个TCP,根据这个四元组去系统里查找,然后复用。
HTTP长连接时间控制
HTTP长连接什么时候关闭呢?如果客户端和服务器之间不发送数据了,还不断开连接,就会造成资源浪费。怎么控制长连接的存活时间呢?
1、 客户端主动关闭,发送一个HTTP包,其中connection = close。
2、 服务器一般不会主动释放长连接。有以下两种策略:
2.1、 设置存活时间,当超过存活时间后,服务器自动断开长连接
2.2、 设置请求次数,当客户端请求超过请求次数后,就断开连接。
HTTP长连接的过程
当多个请求先后调用HTTP发送的时候,可以连续发送多个HTTP请求,但是响应确实FIFO,响应顺序严格按照发送请求返回,如果前一个响应阻塞,后边的响应也都阻塞,这也叫做队头阻塞。
以上就是关于HTTP的长连接和短连接介绍,希望能有效的帮助到大家。更多资讯和教程可留言给小编。