HTTP 响应如何发送回 TCP 中的正确客户端?
How Does HTTP Response get sent back to correct Client in TCP?
我试图了解 HTTP 服务器如何确保将正确的响应发送回正确的客户端。
级别很高:
在服务器实现的 TCP 层,某些 ServerSocket(侦听请求发送到的 host:port)创建一个 'client socket' 来处理请求
(如果我们假设它是一个线程服务器)- 在应用程序中分配一个线程并完成工作
问题:-
A.) 响应是否必须通过处理请求的同一个套接字返回?
B.) 如果是,如何将响应映射到处理请求的同一个套接字?
C.) 维护客户端 IP/host 是套接字的责任,响应数据包需要返回到该客户端,还是维护此信息的 HTTP Headers 以及然后用于将响应寻址回正确的客户端?
如果 HTTP Header 信息用于将响应路由回调用客户端,那么我假设响应不一定必须由处理关联请求的同一个套接字处理
非常感谢任何帮助。
詹姆斯
套接字是双向的。
当ServerSocket 接收到一个新的连接时,它会创建一个新的Socket 并将其交给将处理该请求的线程。此套接字已连接并支持双向通信。然后该线程将通过该套接字发送回响应,这将导致它被路由回连接的客户端。工作线程不需要明确知道另一端的 IP/host 因为套接字是双向的。它只需要通过套接字发送响应并在完成后关闭连接。
我试图了解 HTTP 服务器如何确保将正确的响应发送回正确的客户端。
级别很高:
在服务器实现的 TCP 层,某些 ServerSocket(侦听请求发送到的 host:port)创建一个 'client socket' 来处理请求
(如果我们假设它是一个线程服务器)- 在应用程序中分配一个线程并完成工作
问题:-
A.) 响应是否必须通过处理请求的同一个套接字返回?
B.) 如果是,如何将响应映射到处理请求的同一个套接字?
C.) 维护客户端 IP/host 是套接字的责任,响应数据包需要返回到该客户端,还是维护此信息的 HTTP Headers 以及然后用于将响应寻址回正确的客户端?
如果 HTTP Header 信息用于将响应路由回调用客户端,那么我假设响应不一定必须由处理关联请求的同一个套接字处理
非常感谢任何帮助。 詹姆斯
套接字是双向的。
当ServerSocket 接收到一个新的连接时,它会创建一个新的Socket 并将其交给将处理该请求的线程。此套接字已连接并支持双向通信。然后该线程将通过该套接字发送回响应,这将导致它被路由回连接的客户端。工作线程不需要明确知道另一端的 IP/host 因为套接字是双向的。它只需要通过套接字发送响应并在完成后关闭连接。