2012-11-05 33 views
3

HTTP协议是无状态的,但我发现这对黑濑罗斯书:为什么HTTP协议可以处理持久连接而无状态?

The default HTTP method is with persistent connections and pipeling. 

这意味着它可以处理多个请求,所以它一直开了一个客户端的想要问的多个请求插座。真的吗?如果是,为什么HTTP协议被认为是无状态的?

+2

’:// EN。 wikipedia.org/wiki/Stateless_protocol))管道和持久连接如何改变这一点? – raina77ow

+0

因为如果被请求多个资源,TCP连接保持打开状态,所以这样的状态被保存在插座仍处于server.And“活着”。 –

+2

HTTP状态?不是。它是较低级协议的状态。而HTTP服务器本身不应该关心如何发送两个HTTP请求。 – raina77ow

回答

2

HTTP persistent connections涉及到被抛在TCP连接的开放。 HTTP在TCP之上运行 - 因此TCP可以连接和/或有状态,而HTTP不会。 TCP只是HTTP的传输。

如果看看OSI model,你可以看到,TCP是在层4(传输),而HTTP是在层7(应用程序)。 HTTP并不依赖于TCP,也可以使用其他传输方式 - 作为一种协议,它不是“继承”来自TCP的功能。 (请注意,持久连接在很长一段时间内并不真正持续,对于Apache 2,它仅在默认情况下打开5秒,并且“根据RFC 2616(第46页),单用户客户端不应该维持与任何服务器或代理多于2个连接无状态协议是这样的,将每个请求作为一个独立的事务处理,无关之前的请求‘([维基](HTTP”)

+0

所以HTTP是无状态的,因为在应用层中没有保存的状态,在此,传输层(TCP层)的状态是saved.Is这种说法是真的吗? –

+0

使用HTTP预设连接,是的,这是真的。一般来说,TCP并不总是保存状态,HTTP有涉及状态的“黑客攻击”,但这并不是问题的关键。 – eis

相关问题