HTTP 协议是无状态的,但我在 Kurose-Ross 的书中发现了这一点:
The default HTTP method is with persistent connections and pipeling.
这意味着它可以处理多个请求,因此它会一直打开想要请求多个请求的客户端的套接字。这是真的吗?如果是,为什么 HTTP 协议被认为是无状态的?
HTTP 协议是无状态的,但我在 Kurose-Ross 的书中发现了这一点:
The default HTTP method is with persistent connections and pipeling.
这意味着它可以处理多个请求,因此它会一直打开想要请求多个请求的客户端的套接字。这是真的吗?如果是,为什么 HTTP 协议被认为是无状态的?
HTTP 持久连接与 TCP 连接保持打开状态有关。HTTP 在 TCP 之上运行 - 因此 TCP 可以连接和/或有状态,而 HTTP 不能。TCP 只是 HTTP 的传输。
如果您查看OSI 模型,您可以看到 TCP 在第 4 层(传输)上,而 HTTP 在第 7 层(应用程序)上。HTTP 不依赖于 TCP,也可以使用其他传输方式——作为一种协议,它不是从 TCP“继承”特性。
(另请注意,持久连接并不是真正持久的很长时间。对于 Apache 2,默认情况下它仅打开 5 秒,并且“根据 RFC 2616(第 46 页),单用户客户端不应维护与任何服务器或代理的连接超过 2 个”。)