关于http keep-alive的问题

MeiKai 发布于 2014/11/01 17:27
阅读 114
收藏 1
在http协议中,我发现浏览器发送了keep-alive字段值后,没有发送connection:close来指示需要关闭连接,这是怎么回事,难道都是一个请求结束之后,服务器就断开连接了?
加载中
0
有明丶
有明丶

Http 协议是基于 TCP 的,也就是说在浏览器和服务器中的任何一端,都有权利立刻关闭连接。

早期的HTTP采用发送一个请求后立刻关闭连接(浏览器和服务器默认会关闭这个连接),不过由于TCP每次连接握手太多,这样必定会消耗太多资源和时间,所以HTTP 1.1 提出了持续连接的概念:通过一个TCP连接,向同一个服务器发送多次HTTP请求(比如请求了HTML代码后,可以用同一个连接再请求其中的JS、CSS、图片等资源)。

而keep-alive字段就是告诉服务器,我将会保持这个连接,也请求服务器暂时不要关闭这个连接(这是约定俗成,当然,服务器仍然可以以主观意志关闭连接,一般服务器会有一个连接超时的检测,超过这个时间也会关闭keep-alive的闲置连接,以保证服务器资源不被浪费)

在浏览器中,浏览器既然使用了keep-alive,就表示他期望尽可能多的使用同一个连接去请求更多的数据,所有浏览器一般也不会主动关闭keep-alive连接(除非等到服务器将他关闭)。

当然,不同浏览器策略也不相同,总的来说常连接的思路是这样的,只有HTTP协议的一个规定,不是强制的,所以具体实现也是靠浏览器和服务器的遵守。

MeiKai
MeiKai
我找到原因了,是我自己写的web服务器没有处理好的原因,导致传输数据错误。因此一直阻塞,无法显示页面,thanks
返回顶部
顶部