我试图了解什么是 HTTP 管道和 HTTP 保持连接,并试图在这两个主题和服务器发送事件技术之间建立连接。
据我了解, HTTP keep-alive 连接是 HTTP 1.1 使用 TCP 的默认方式,当建立一次 TCP 连接用于一一发送多个 HTTP 请求时。 HTTP流水线是客户端向服务器发送请求的能力,而对先前请求的响应尚未使用相同的TCP连接接收,通常不用作浏览器中的默认方式。
我的问题:
1)如果可以使用一个 TCP 连接一个接一个地向服务器发送多个请求 - 客户端如何区分响应?我猜客户端正在使用服务器发送响应的 FIFO 顺序?
2)为什么不应该对诸如 POST 请求之类的非幂等请求进行流水线处理(根据维基百科)?
3) 网络服务器的限制是什么:可能打开的 TCP 连接数是否受到限制?如果是,那么如果一些客户端保持保持连接,其他客户端无法建立连接,这可能会导致问题,对吧?
4)服务器发送事件使用保持连接,但据我了解,SSE 没有使用流水线。相反,他们设法处理对一个请求的多个响应,或者他们可能只是在下一个带有事件的响应到达时发送另一个请求。哪个猜测是正确的?
5)一个TCP连接意味着一个套接字?一个套接字意味着一个 TCP 连接?关闭/打开套接字意味着关闭/打开 TCP 连接?