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

Jam*_*ieP 5 sockets tcp http

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

在很高的水平上:

  1. 在服务器实现的TCP层,一些ServerSocket(在侦听请求的主机:端口上侦听)创建了一个“客户端套接字”来处理请求

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

问题:-

A.)响应是否必须返回与处理请求的套接字相同的套接字?

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

C.)套接字是维护响应数据包需要发送回去的客户端IP /主机的责任,还是HTTP标头来维护此信息,然后将其用于将响应寻址回正确的客户端?

如果HTTP标头信息用于将响应路由回调用方客户端,则我认为响应不一定必须由处理关联请求的同一套接字处理

任何帮助深表感谢。詹姆士

Eri*_*son 5

套接字是双向的。

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