如果HTTP协议可以处理持久连接,为什么它是无状态的?

Ram*_*uri 5 http

HTTP协议是无状态的,但是我在Kurose-Ross的书中发现了这一点:

The default HTTP method is with persistent connections and pipeling.  
Run Code Online (Sandbox Code Playgroud)

这意味着它可以处理多个请求,因此它会一直打开要询问多个请求的客户端的套接字。如果是,为什么HTTP协议被认为是无状态的?

eis*_*eis 6

HTTP 持久连接与 TCP 连接保持打开状态有关。HTTP 在 TCP 之上运行 - 因此 TCP 可以连接和/或有状态,而 HTTP 则不能。TCP 只是 HTTP 的传输。

如果查看OSI 模型,您会发现 TCP 位于第 4 层(传输),而 HTTP 位于第 7 层(应用程序)。HTTP 与 TCP 无关,也可以使用其他传输方式 - 作为协议,它不会“继承”TCP 的功能。

(还要注意,持久连接并不是真正持久的。对于 Apache 2,默认情况下它只打开 5 秒,并且“根据 RFC 2616(第 46 页),单用户客户端不应该维护与任何服务器或代理的连接超过 2 个”。)