HTTP长连接和短连接

x33g5p2x  于2021-09-25 转载在 其他  
字(0.7k)|赞(0)|评价(0)|浏览(447)

HTTP长连接简介

HTTP1.1中引入了长连接,且HTTP默认就是长连接。

有长连接就有短连接,二者有什么区别呢?

HTTP是基于TCP的,所以在传输数据的时候,会进行三次握手和四次挥手。

短连接: 每次发起HTTP请求都要进行连接,然后再传输完后关闭连接。

长连接: 发起完HTTP请求后,并不关闭连接,当连接复用次数到一定次数,或者过了一定时间、或者客户端主动释放连接才会关闭连接。

HTTP长连接详情

长连接是由一个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,响应顺序严格按照发送请求返回,如果前一个响应阻塞,后边的响应也都阻塞,这也叫做队头阻塞

相关文章

微信公众号

最新文章

更多