keepalive浏览器
Http 协议中有一个keep-alive的状态,Tcp 三次握手中也有一个keep-alive的状态,从字面上看就多了一个'-',它们两个是彻底不一样的。
服务器
1、Http协议中的keep-alive:tcp
在访问一个页面的过程当中,会请求不少次服务器去获取不一样的网页内容,而http的每次请求都是无链接的,请求->发送->关闭,因此在屡次请求的过程当中会使用不一样的tcp端口号和sockfd,这样会发生屡次的断开和连接tcp的过程,能够想象这种状况对于服务器而言是想当不利的。ide
下面是我作的一个实验:个人搭建的服务器在一次网页请求中发生的连接和断开spa
能够看出,整个过程发生了3次连接和关闭的过程。blog
而 http 中keep-alive的做用就是复用tcp,在浏览器请求服务器http服务时,ci
服务器将保持当前的tcp连接一段时间,这个时间是能够经过keepalive_timeoutget
设置的。it
浏览器在HTTP1.1下的keep-alive都是默认开启的。
io
2、TCP下的keepalive
TCP下的keepalive :
这个keepalive是一种检测TCP连接情况的保险措施,它会每隔必定的时间就去
client发送个数据,经过client端的反应来采起相应的措施。
因此:彻底不一样的两个keepalive