HTTP是无连接的吗?

我看http://www.runoob.com/http/http-intro.html,上面说:

HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

看这里http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html#!comments最后又说:

从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

那么HTTP到底是不是无连接的呢?

阅读 4.3k
2 个回答

是无连接的,虽然目前的一些新技术如你说的Keep-Alive使用了长连接优化效率,但这些都是属于HTTP请求之外的,也就是说,在每个独立的HTTP请求中,你是无法知道当前的HTTP是否处于长连接的状态(即使这个请求可能标记为Keep-Alive),你始终都要认为HTTP请求在结束后连接就会关闭。这是HTTP的特性,至于下层实现是否在结束请求后关闭连接,都不会改变这个特性,长连接可以理解为下层实现对上层透明。

keep-alive最终也是要断开的,所以也算是无连接。
keep-alive是http1.1中的新特性,叫做长连接。
至于是否使用长连接要具体情况具体分析。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题