HTTPkeep-alive与TCP keepalive
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTPkeep-alive与TCP keepalive相关的知识,希望对你有一定的参考价值。
keepalive
Http 协议中有一个keep-alive的状态,Tcp 三次握手中也有一个keep-alive的状态,从字面上看就多了一个‘-‘,它们两个是完全不同的。
一、Http协议中的keep-alive:
在访问一个页面的过程中,会请求很多次服务器去获取不同的网页内容,而http的每次请求都是无连接的,请求->发送->关闭,所以在多次请求的过程中会使用不同的tcp端口号和sockfd,这样会发生多次的断开和链接tcp的过程,可以想象这种情况对于服务器而言是想当不利的。
下面是我做的一个实验:我的搭建的服务器在一次网页请求中发生的链接和断开
可以看出,整个过程发生了3次链接和关闭的过程。
而 http 中keep-alive的作用就是复用tcp,在浏览器请求服务器http服务时,
服务器将保持当前的tcp链接一段时间,这个时间是可以通过keepalive_timeout
设置的。
浏览器在HTTP1.1下的keep-alive都是默认开启的。
二、TCP下的keepalive
TCP下的keepalive :
这个keepalive是一种检测TCP链接状况的保险措施,它会每隔一定的时间就去
client发送个数据,通过client端的反应来采取相应的措施。
所以:完全不同的两个keepalive
本文出自 “痕迹” 博客,请务必保留此出处http://wpfbcr.blog.51cto.com/10696766/1790766
以上是关于HTTPkeep-alive与TCP keepalive的主要内容,如果未能解决你的问题,请参考以下文章
http的keep-alive和tcp的keepalive区别
TCP keepalive 和 http keep-alive 以及心跳保活
谈谈你对HTTP1.X的Keep-Alive参数的理解,它和TCP的keepalive一样么?