记录一下 web服务器的工作流程: 其大致分为如下几个步骤。
- 等待客户请求:
web服务器等待来至于Internet的客户请求, 其监听某个端口直到有请求进来,而此时,
服务器处于“睡眠状态” - 客户请求到来 :
客户通过浏览器对文档提出要求。用户可能是敲入URL或者点击链接。
客户机器上的网络软件负责定位服务器主机,一旦建立连接, 客户按照HTTP协议发出请求。
如 "GET /sample.html HTTP/1.0"
这些字符串经过网上传输,被服务器接受并保存到内存中。 - 服务器解析请求:
WWW服务器对请求按照HTTP协议进行解码,(以上部字符串为例) 其涉及到三个主要内容:- 方法(GET) {GET的含义是--- 服务器定位、读取文件并将它返回给客户}
- 文档(/sample.html)
- 浏览器协议(HTTP/1.0)
而服务器是经过与请求到来时相同的连接发出的,所以服务器不需要定位客户或创建新连接. - 读取其他信息(如果有必要的话):
WWW服务器根据需要去读取请求的其他部分。 HTTP/1.0下,客户还应给服务器提供关于它的一些元信息
,用于描述浏览器及其能力,以使用服务器能根据此确定如何返回应答。
如:User-agent:Mosaic for X Windows /2.4
Accept:text/plain
Accept:text/html
Accept::image/*
- 完成请求动作:
若没有错误的出现,Web服务器将执行请求所要求的动作。 获取(GET)一个文档,Web服务器会在其文档树中搜索请求的文件(/sample.html) . 这是由服务器机器上作为操作系统一部分的文件系统完成的。
若文件能找到并正常读取,服务器就将返回给客户。
被找到的目标文件的发送:- 首先服务器发送一些响应码和描述信息。 (如 200 Content-type:text/html;Content-length:1066等.)
- 发送描述信息后,服务器读取文件,并输出到网络端口上。 若传输失败,返回错误信息。
如果没找到目标文件:- 发送相应的响应码,描述原因,比如 403(没有找到)..
比如: HTTP /1.0 403 Not Found
Server: Apache/1.3.6
Date: .....
Content-type: text/html
Content-length:0
- 关闭文件和网络连接,结束会话.
- 转回第一步,重新监听端口,以准备下一次连接.