一个简单web服务器(试验)

上传人:第*** 文档编号:30583185 上传时间:2018-01-30 格式:DOC 页数:94 大小:1.07MB
返回 下载 相关 举报
一个简单web服务器(试验)_第1页
第1页 / 共94页
一个简单web服务器(试验)_第2页
第2页 / 共94页
一个简单web服务器(试验)_第3页
第3页 / 共94页
一个简单web服务器(试验)_第4页
第4页 / 共94页
一个简单web服务器(试验)_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《一个简单web服务器(试验)》由会员分享,可在线阅读,更多相关《一个简单web服务器(试验)(94页珍藏版)》请在金锄头文库上搜索。

1、 一个简单Web服务器的例子SHTTPD本章将实现一个简单的Web服务器程序SimpleHTTPDemo,简称SHTTPD。这个Web 服务器可以实现简单的用户配置、静态网页响应等功能。按照如下步骤进行设计和编写程序:定义需求,明确需求定义。对需求进行分析,明确实现的方式和关键的问题,进行模块设计。按照模块设计,进行编码。最后进行编译和测试。18.1 SHTTPD的需求分析Web服务器 SHTTPD可以实现动态配置、多客户访问、CGI支持、支持HTTP/1.0版本,最终能实现简单的可用型Web 服务器,多种浏览器可以正常访问SHTTPD上的网页,如图18.1所示。本节对SHTTPD的功能进行说

2、明。第18章 一个简单Web服务器的例子 SHTTPD11图18.1 多浏览器访问支持18.1.1 SHTTPD启动参数可动态配置的需求服务器dHTTP可以动态配置启动参数,例如服务器的侦听端口、支持客户端并发访问的数量、超时时间的设置、访问Web网页的路径等。采用参数配置和文件配置两种支持方式,在优先级上,参数配置比文件配置的优先级高,参数配置的选项值会覆盖文件配置的选项。1命令行参数配置命令行配置的命令格式如下:SHTTPD -ListenPort number -MaxClient number DocumentRoot path CGIRoot path DefaultFile fil

3、ename TimeOut seconds ConfigFile filename配置选项的含义如下:-ListenPort 第4篇 综合案例12number:配置侦听端口, ListenPort为关键字,number为服务器的侦听端口。例如,如下命令使SHTTPD在8888 端口侦听。默认设置为8080。debain#SHTTPD ListenPort 8888-MaxClient number:最大支持客户端数量,MaxClient为关键字,number为客户端的数量,默认设置为4。DocumentRoot path:服务器搜寻 Web网页的根目录,DocumentRoot为关键字,pat

4、h为路径名称,必须设置为全路径,权限与运行SHTTPD 的用户权限相同。默认路径为/usr/local/var/www。CGIRoot path:服务器查找 CGI程序的位置,以此作为根目录。CGIRoot为关键字,path为路径,必须为全路径。默认路径为/usr/local/var/www/cgi-bin。DefaultFile filename:当用户没有指定目录下的文件名时,默认发送给客户端的文件。DefaultFile为关键字,filename为设置的文件名,默认为index.html。TimeOut seconds:客户端使用HTTP/1.1 协议访问的时候,客户端长时间没有访问服务

5、器时,服务器断开连接的超时时间。TimeOut为关键字,seconds为客户端上次访问的最长间隔,超过这个时间服务器自动断开此连接。默认值为3秒。-ConfigFile filename:指定Web服务器SHTTPD的配置文件第18章 一个简单Web服务器的例子 SHTTPD13。ConfigFile为关键字, filename为配置文件的路径,包含配置文件的文件名。默认配置时配置文件为/etc/SHTTPD.conf。2文件配置配置文件的名称为SHTTPD.conf,默认路径为 “/etc”下。配置文件的格式如下:#注释|空格关键字 空格= 空格value配置文件中的一行为#开头的注释或者选

6、项配置,不支持空行,关键字右边的值不能含有空格。各部分如下定义:#注释:一行以#开始表示此行为注释,程序不对此行进行分析。空格:可以为0个或者多个空格。关键字:可以为如下的字符串,大小写必须完全匹配。ListenPort:侦听端口。MaxClient:最大客户端并行访问数。DocumentRoot:Web网页根目录。CGIRoot:CGI程序根目录。DefaultFile:默认访问网页名称。TimeOut:客户端连接空闲超时时间。值:用户对关键字选项的配置,全部为字符串。值中不能有引号、换行符、空格(末尾的空格将被解释为值的一部分),ListenPort 、 TimeOut等不支持16进制的“

7、0x” 方式。下面为配置文件实例。#SHTTPD Web服务器配置文件示例#侦听端口ListenPort = 80#最大并发访问客户端数目MaxClient = 8第4篇 综合案例14#Web网页根目录DocumentRoot = /home/www/#CGI根目录CGIRoot = /home/www/cgi-bin/#默认访问文件名DefaultFile = default.htm#客户端空闲连接超时时间TimeOut = 5注意:SHTTPD在用户不进行配置的时候可以正常运行,此时采用默认配置。有配置文件则相应的选项覆盖默认配置。命令行输入覆盖文件配置和默认配置。例如图18.2所示为服务

8、器参数配置更改过程。图中从左到右为系统默认配置、配置文件配置和用户启动程序时的更改。18.1.2 SHTTPD的多客户端支持的需求SHTTPD支持多个客户端的并发连接,在同一时刻允许多个客户端同时成功获得服务器上的网页资源,这是现代服务器的基本属性。SHTTPD启动时的处理单元初始化了两个,并发访问数量为2,当客户端增加时,会自动根据现场情况增加处理单元,最大为4个。如图18.3所示,两个客户端同时对SHTTPD进行访问,均能获得其响应信息“欢迎”。如图18.4所示,当客户端增多,达到4个的时候,SHTTPD会自动增加 2个来响应用户的请求。当超过4个客户端并发访问时,SHTTPD服务器会将后

9、来的请求放在排序队列中,当处理单元空闲时再响应其请求,如图18.5所示。第18章 一个简单Web服务器的例子 SHTTPD15图18.2 SHTTPD 配置参数的更改流程图18.3 2个并发处理单元 图18.4 增加2个并发处理单元第4篇 综合案例1618.1.3 SHTTPD支持方法的需求HTTP协议中定义了8种方法,用来表示指定数据的操作性质和特点:HEAD方法:这种方法要求与相应GET 请求的方式一样,但是没有响应体(response body),即没有内容。这种方法对于获得内容的信息很有作用,因为它不能获取数据的内容,但是能获得内容的大小、时间等信息。图18.5 并发访问超过SHTTP

10、D处理能力时等待GET方法:这种方法用来请求指定的资源,它是目前网上最常用的方法。这种方法要求对请求的网络资源进行定位和内容传输。POST方法:这种方法用来向指定的资源提交需要处理的数据,与GET方法的区别是这些数据写在请求的内容里。PUT:上传指定资源。第18章 一个简单Web服务器的例子 SHTTPD17DELETE:删除指定资源。TRACE方法:这种方法告诉服务器端返回收到的请求。客户端可以通过此方法察看在请求过程中中间服务器添加或者改变了哪些内容。OPTIONS方法:这种方法返回服务器在指定URL上支持的 HTTP方法。通过请求“ *”而不是指定的资源,这个方法可以用来检查网络服务器的

11、功能。CONNECT方法:这种方法将请求的连接转换成透明的TCP/IP通道,通常用来简化通过非加密的HTTP代理的SSL-加密通信(HTTPS )。HTTP服务器至少应该实现Get和Head方法,可能的话,也实现OPTIONS方法。18.1.4 SHTTPD支持的HTTP 协议版本的需求超文本传输协议从开始出现到现在已经演化出了很多版本,它们中的大部分都是向下兼容的。在RFC 2145中描述了HTTP版本号的用法。客户端在请求的时候先告诉服务器客户端所采用的HTTP协议版本号,而后者则在响应中采用相同或者更早的协议版本。目前版本有0.9、1.0和1.1版本。HTTP/0.9版本:版本0.9是已

12、经过时的版本,它只接受一种请求方法GET,没有在通信字段中指定版本号,且不支持请求头。由于该版本不支持POST方法,所以客户端无法向服务器传递太多信息。HTTP/1.0版本:这是第一个在通信中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。HTTP/1.1版本:这是目前流行的版本,是一种默认采用持久连接的版本,并能很好地配合代第4篇 综合案例18理服务器工作。18.1.5 SHTTPD支持头部的需求HTTP协议的头部有很多内容,本书中仅介绍几个常用的头域。主机头域:主机头域用于指定请求资源的网络主机IP 地址和端口号,客户端在发送请求的时候必须在URL中包含原始服务器或网

13、关的位置。HTTP/1.1请求必须包含主机头域,如果没有包含主机头域Web服务器会返回错误码400。参考头域:参考头域允许客户端指定请求URL的源资源地址,即请求当前URL的前一个URL地址,参考头域用于帮助服务器生成URL的回退链表,可用来登录、优化缓存等。它也允许废除的或错误的连接。如果请求的URL没有地址,则不发送参考头域。如果发送的参考头域不是一个完整的URL地址,此时的URL是一个相对地址。时间头域:时间头域用于表示消息发送的时间。范围头域:范围头域用于请求一个实体的一部分。用户代理头域:用户代码头域用于包含发送请求的用户信息。18.1.6 SHTTPD定位URI 的需求URI是Un

14、iversal Resource Identy的简写,是同一资源标识符的意思,它是一种格式化的字符串,通过名称、地址或者其他别的特征来确定网络资源的位置。URI已经广为人知,例如WWW地址、通用文件标识符、统一资源定位器(URL)、统一资源名称(URN)等。第18章 一个简单Web服务器的例子 SHTTPD191URI 的一般语法URI的表示形式可以为HTTP里的绝对形式或者与已知URI对比的相对形式。两种形式的区别在于:绝对URI要以一个协议的摘要名字作为开头,其后是一个冒号。例如http:/是一种绝对URI,而是一种相对URI。对于URI的请求,HTTP协议不对长度做限制,服务器必须处理到

15、达服务器的任何URI资源请求,并能够处理无限长的URI。当然实际的服务器中总有URI请求的长度限制。2HTTP URLHTTP协议通过HTTP协议给出网络资源的位置。其形式如下:http_URL = http: / host : port abs_path ? query 即一个“http:”后面跟“/”,然后是主机的名字,名字后面是主机的端口。然后是主机的请求资源,如果之后又“?”则后面会有传给服务器的参数。这个形式中,如果端口为空或未给出,系统会使用默认值80。3URI 比较URI是大小写敏感的,也就是说,比较两个URI是否一致,字符串必须按照大小写是两个不同资源来对待。例外情况如下:当请求资源的端口没有给出或者为空的时候,URI的端口为默认值。对于URI中的主机名的比较必须是不区分大小写的,例如WWW.SINA.COM.CN和是相同的 URI。第4篇 综合案例20协议的名称比较必须是不区分大小写的,例如HTTP:/和http:/是相同URI。除了“保留”或“ 危险 ”集里的字符,字符等同于它们的“% HEX HEX”编码.。以下3个 URI是等同的:http:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 外语文库 > 英语学习

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号