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一样么?

HTTP 与 TCP 的 KeepAlive 是一个东西吗?

nginx之keepalive与pipeline

小记TCP keepalive