Web服务器如何处理TCP连接?

时间:2014-11-13 01:29:59

标签: web tcp webserver

我想写一个小型的Web服务器。我试图了解Web服务器应该如何处理TCP连接。

我的理解是,客户端请求到达80端口的Web服务器。 Web服务器有一个监视端口80的专用监视线程(或多个?)。监视线程将每个传入请求的工作项放入队列中以供稍后处理。工作项数据应包括客户端IP地址和客户端端口信息。

然后工作线程将从队列中接收请求并将响应发送回客户端。 TCP连接元组将如下所示<服务器IP,端口80,客户端IP,客户端端口>

所以,我的问题是,

  • 可以有多个监控线程吗?并且是否有多个队列或单个队列在多个监视和工作线程之间具有同步访问权限?

  • 队列中的工作项是否有相互关系?如果不是,这是否意味着后续请求的状态丢失?

  • 是否有可能许多工作线程使用单个端口80来创建出站连接?我的意思是,许多服务器工作线程同时使用端口80来创建TCP连接,如下所示。这些连接用于向不同的客户端发送响应。

    <服务器IP,端口 80 ,客户端IP 1,客户端端口1>

    <服务器IP,端口 80 ,客户端IP 2,客户端端口2>

    <服务器IP,端口 80 ,客户端IP 3,客户端端口3>

    ...

1 个答案:

答案 0 :(得分:3)

  

可以有多个监控线程吗?

  

是否有多个队列或单个队列在多个监视和工作线程之间具有同步访问权限?

无论哪个适合你。

  

队列中的工作项是否具有相互关系?

仅在原始请求发生时,这取决于客户端的编写方式。

  

如果没有,这是否意味着后续请求的状态丢失?

意味着失去国家?

  

是否有可能许多工作线程使用单个端口80来创建出站连接?

不,但工人不会创建出站连接。他们通过收到请求的同一连接回复。