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

时间:2015-03-25 16:17:27

标签: sockets http tcp

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

处于非常高的水平:

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

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

  3. 问题: -

    A。)响应是否必须通过处理请求的同一个Socket返回?

    B。)如果是,那么Response如何映射到处理Request的同一个套接字?

    C。)套接字是否负责维护响应数据包需要被寻址的客户端IP /主机,或者是维护此信息的HTTP标头,然后用于解决响应的响应。正确的客户?

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

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

1 个答案:

答案 0 :(得分:4)

套接字是双向的。

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