栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

无连接应用协议HTTP和keep-alive功能的关系

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无连接应用协议HTTP和keep-alive功能的关系

1.HTTP:无连接应用协议
  • 限制每次连接只处理一个请求。

  • 服务器处理完客户的请求,并收到客户的应答后,即断开连接。

这种方式就叫做无连接的,因为它不会去保持这个连接。

初衷: 协议的设计者是为了给服务器处理很多用户(用户量比较大,上百万用户),它们分别给服务器发过来的页面请求。

这么多用户都在发请求,但是单个用户来说,它的浏览器和服务器之间交换数据的间歇性比较大。(用户现在在访问数据,可能很长时间没有交互的)。

单个用户的页面请求,有突发性和瞬时性。可能一段时间很多,一段时间又停了。

而且有些网页比较发散,导致这次请求和下次请求之间的数据没有关联性。

这个用户访问服务器,如果这个连接一直保持的话,就是资源的浪费。这样服务器的压力就特别大。

故意设计成这样:即时有请求来了就即时建立连接,请求完毕之后马上释放连接。

给到其它用户使用,保证访问服务器的处理效率,避免了资源浪费。

问题:网页越来越复杂。比如页面中有很多的图片信息。挨个访问图片的时候都要重新建立一次tcp的连接,效率就很低。

为了解决这个问题就加了一个keep-alive功能,放在Connection这个头部字段里面。

2.Keep-Alive设置

1)开启:Connection:keep-alive。会发起Keep-Alive的连接请求,是个长连接(保持连接的这样一个状态)。

HTTP1.1版本--长连接的开关默认是打开的。

这个服务器给这个请求设置了保持连接的这样一个状态。

在同一个连接里面:把它设置成一个长连接,后面请求各种图片各种信息,都可以在这一个连接里面完成,后续对服务器的请求就不需要重新建立连接。

2)关闭:在http头中设置Connection:close,即可关闭。

一直保持长连接也会造成服务器压力过大,资源浪费的问题。所以根据需求去设置Keep-Alive的连接时间。

3)设置连接时间:

在http header中设置Keep-Alive:timeout=5,max=1000。

  • timeout是超时时间,单位秒,超过这个时间后就断开连接。释放连接给别的用户使用。

  • max是最多的连接次数,若超过这个次数就强制断开连接。

3.补充

访问一个网站的首页,肯定先是get请求去服务器上拿到图片,再在首页展示的。

一个页面中有很多图片,get请求获取图片的时候,每次获取一张吗?

get请求一次,拿一张图片,拿到了,请求就结束了。多个图片就用多个请求去拿。 get请求就结束了啊?!那我剩下的图片用啥请求拿?还是和上一个get请求一模一样的请求拿吗?

HTTP1.2协议有请求复用的机制。

HTTP1.1就是重新发一个新的请求哇。重新发一个新的请求也得是get的请求,和上一个拿图片的请求一模一样。

然后新的请求和老的请求里的响应头部里的Connection字段里应该都有keep_alive且设置了连接时间。获取图片的请求都是在同一个tcp连接里。当所有的图片获取完毕后,tcp连接断开。

是不是所有请求,无论get还是post请求只能发一次,请求完毕就结束了。后来的请求都是新的?

嗯,基本都是,具体得看协议。


公众号 清菡软件测试 首发,更多原创文章:清菡软件测试 180+ 原创文章,欢迎关注、交流,禁止第三方擅自转载。如有转载,请标明出处。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/894285.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号