我刚刚在http://www.w3.org/Protocols/rfc2616/rfc2616.html浏览了 http 1.1 的规范,并遇到了关于连接的部分http://www.w3.org/Protocols/rfc2616/rfc2616- sec8.html#sec8说
" HTTP/1.1 和早期版本的 HTTP 之间的一个显着区别是持久连接是任何 HTTP 连接的默认行为。也就是说,除非另有说明,客户端应该假设服务器将保持持久连接,即使在错误响应之后从服务器。
持久连接提供了一种机制,通过该机制客户端和服务器可以发出 TCP 连接关闭的信号。该信令使用连接头字段(第 14.10 节)进行。一旦发出关闭信号,客户端就不能再在该连接上发送任何请求。"
然后我还浏览了https://www.rfc-editor.org/rfc/rfc2965上关于 http 状态管理的部分,该部分在其第 2 部分中说
“目前,HTTP 服务器响应每个客户端请求,而不将该请求与先前或后续请求相关联;”
RFC 2616 中关于需要持久连接的部分还说,在每次客户端希望获取 url 时,在持久连接之前,它必须为每个新请求建立一个新的 TCP 连接。
现在我的问题是,如果我们在 http/1.1 中有持久连接,那么如上所述,客户端不需要为每个新请求建立新连接。它可以通过同一个连接发送多个请求。因此,如果服务器知道每个后续请求都来自同一个连接,那么该请求是否来自同一个客户端不是很明显吗?因此这是否不足以维持状态,这是否足以让服务器了解请求来自同一个客户端?在这种情况下,为什么需要一个单独的状态管理机制呢?