HTTP协议是无状态的,但我在Kurose-Ross书中找到了这个:
The default HTTP method is with persistent connections and pipeling.
这意味着它可以处理多个请求,因此它会一直打开想要询问多个请求的客户端的套接字。这是真的吗?如果是,为什么HTTP协议被认为是无状态的?
答案 0 :(得分: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个以上的连接“。)