繁体   English   中英

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

[英]What does a Server do once it receives a request from a client? [closed]

我正在尝试深入了解服务器从客户端收到请求后会发生什么情况的细节...

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

然后访问资产或资源?

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

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

响应如何产生?

我已经查找了有关“ Internet的工作方式”和“请求响应周期”的信息,但我正在寻找有关服务器内部发生的情况的详细信息。

这取决于服务器。 apache 2服务器可以执行任意数量的请求重写,基于规则的自动响应(301、303、307、403、404、500),启动CGI脚本,与FastCGI脚本交换数据,将一些数据传递到脚本模块像mod_php ,等等。 CouchDB Web服务器将完全执行其他操作。

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

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

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

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

Ethernet-IPv4-TCP-HTTP

协议的这种模块化用于创建关注点分离,以便开发人员不必在每次尝试使两台计算机以某种方式进行通信时就“重新发明轮子”。 如果您要编写聊天程序,则无需担心数据包丢失或Internet路由方法,因此可以继续使用现有的低层协议,并为您处理更多棘手的问题。

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

虽然您的Web服务器知道较低级别协议中的某些信息,但实际上并没有做很多事情。 基本上,所有这些操作都由操作系统库处理,这些操作系统库最终向Web服务器提供了一些原始HTTP数据,然后Web服务器开始处理这些HTTP数据。

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

希望这可以为您澄清一些概念,并为您提供一个更好的主意,以帮助您理解。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM