HTTP 响应如何发送回 TCP 中的正确客户端?

How Does HTTP Response get sent back to correct Client in TCP?

我试图了解 HTTP 服务器如何确保将正确的响应发送回正确的客户端。

级别很高:

  1. 在服务器实现的 TCP 层,某些 ServerSocket(侦听请求发送到的 host:port)创建一个 'client socket' 来处理请求

  2. (如果我们假设它是一个线程服务器)- 在应用程序中分配一个线程并完成工作

问题:-

A.) 响应是否必须通过处理请求的同一个套接字返回?

B.) 如果是,如何将响应映射到处理请求的同一个套接字?

C.) 维护客户端 IP/host 是套接字的责任,响应数据包需要返回到该客户端,还是维护此信息的 HTTP Headers 以及然后用于将响应寻址回正确的客户端?

如果 HTTP Header 信息用于将响应路由回调用客户端,那么我假设响应不一定必须由处理关联请求的同一个套接字处理

非常感谢任何帮助。 詹姆斯

套接字是双向的。

当ServerSocket 接收到一个新的连接时,它会创建一个新的Socket 并将其交给将处理该请求的线程。此套接字已连接并支持双向通信。然后该线程将通过该套接字发送回响应,这将导致它被路由回连接的客户端。工作线程不需要明确知道另一端的 IP/host 因为套接字是双向的。它只需要通过套接字发送响应并在完成后关闭连接。