服务器收到客户端的请求后会做什么?

时间:2010-11-05 20:14:20

标签: http response

我正在尝试了解服务器收到客户请求后会发生什么的详细信息......

在请求指定的端口上打开一个套接字...

然后访问资产或资源?

如果资源引用cgi / script怎么办?

请求信息必须通过哪些“图层”?

如何生成响应?

我已查询有关“互联网如何运作”和“请求响应周期”的信息,但我正在寻找有关服务器内部情况的详细信息。

3 个答案:

答案 0 :(得分:2)

这取决于服务器。 apache 2服务器可以根据规则进行任意数量的请求重写,自动响应(301,303,307,403,404,500),启动CGI脚本,使用FastCGI脚本交换数据,将一些数据传递给脚本模块比如mod_php,等等。 CouchDB Web服务器将完全做其他事情。

基本上,除了解析请求并发回适当的响应之外,Web服务器没有真正的共同点。

您可以尝试查看各种Web服务器的文档:Apache,IIS,lighttpd,nginx ......

答案 1 :(得分:2)

您似乎在分离问题的不同部分时遇到一些麻烦,所以我会尽力帮助您解决问题。

首先,使用所谓的OSI model描述了理解两台计算机之间通信的常用方法。该模型试图区分协议栈中每个协议之间的职责。例如,当您在家庭网络上浏览网站时,协议堆栈很可能就像

Ethernet-IPv4-TCP-HTTP

协议的模块化用于创建关注点分离,以便开发人员不必在每次尝试让两台计算机以某种方式进行通信时“重新发明轮子”。如果您正在尝试编写聊天程序,则不必担心数据包丢失或互联网路由方法,因此您可以继续使用已经存在的较低级别协议,并为您处理更多细节问题。

当人们提到套接字通信时,他们通常使用TCP或UDP。这些都称为传输协议。如果您想了解有关套接字通信的更多详细信息,我将从UDP开始,因为它是一个更简单的协议,然后继续使用TCP。

虽然您的Web服务器知道较低级别协议中的某些信息,但它并没有真正起作用。主要是由操作系统库处理,最终将Web服务器传递给Web服务器然后开始处理的一些原始HTTP数据。

要添加另一个图层,HTTP与在幕后运行的网关语言无关。这是相当明显的,因为无论Web服务器是提供CGI perl脚本,PHP,ASP.Net还是静态HTML文件,协议都是相同的。 HTTP只是发出请求,而Web服务器也会相应地处理请求。

希望这能为您澄清一些概念,让您更好地了解您想要了解的内容。

答案 2 :(得分:0)

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/images/IIS_impflow.gif

相关问题