2011-04-12 159 views
0

如何在Web服务器识别该请求是从一个特定的客户端?我知道通信通过http协议发生,但是它告诉服务器,对于特定的请求,响应需要发送给这个客户端?浏览器和Web服务器通讯

(我不知道这是一个过于简单的问题,但我只是想在这里学到的东西,可能受益其他人一样我也)

回答

0

HTTP服务器开始一个新的进程(在大多数情况下,它实际上启动一个新的线程,但是为了简单起见,我们可以假设它是一个过程)为每个连接的客户端,所以从代码的程序只能看到这个客户端,导致它开始。 HTTP是无状态的,这意味着在完成对查询的响应后,http服务器程序结束 - 它看起来像一个函数,查询作为参数,网页作为返回值。连接本身由源IP,目标IP,源端口和目标端口(全部)标识。

+0

那么,你的意思是http连接有那些信息?你有什么样的样子吗? – user583126 2011-04-12 18:40:46

+0

这实际上与HTTP相比更基本。根据我上面提到的,HTTP服务器和客户端程序都使用TCP,它可以处理哪些数据包会放在哪里。在这里,你可以找到更多信息[http://en.wikipedia.org/wiki/Internet_socket](http://en.wikipedia.org/wiki/Internet_socket) – 2011-04-12 19:34:50

+0

顺便说一句,这些信息将提供给服务进程作为名为REMOTE_ADDR和REMOTE_PORT的环境变量描述服务器的客户端端点和SERVER_NAME和SERVER_PORT。如果这回答你的问题,请检查我的答案分数下面的复选框,否则随时提出进一步的问题:) – 2011-04-12 19:59:37

0

你的问题是几乎this question完全相同的副本,这有一些很好的答案。


响应通过与请求传出相同的TCP/IP连接返回。

客户端发起与服务器的IP地址和端口的连接。服务器不需要知道客户端的IP地址和端口,因为连接已经打开并可以使用。

大多数[引用需要]客户端甚至没有可公开访问的IP地址。

+0

我想更多地了解什么,究竟如何建立连接,并在技术方面,这意味着什么。你能分享任何可以提供这些信息的链接吗? – user583126 2011-04-12 18:11:28

+0

@ user583126:为什么不读[HTTP RFC(http://www.w3.org/Protocols/rfc2616/rfc2616.html)? – 2011-04-12 18:12:55