我正在尝试了解服务器收到客户请求后会发生什么的详细信息......
在请求指定的端口上打开一个套接字...
然后访问资产或资源?
如果资源引用cgi / script怎么办?
请求信息必须通过哪些“图层”?
如何生成响应?
我已查询有关“互联网如何运作”和“请求响应周期”的信息,但我正在寻找有关服务器内部情况的详细信息。
答案 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)