项目来源及背景_第1页
项目来源及背景_第2页
项目来源及背景_第3页
项目来源及背景_第4页
项目来源及背景_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录 TOC o 1-2 h u Hyperlink l _Toc17062678第1章 引言PageRef _Toc17062678 h1Hyperlink l _Toc17062679 项目来源及背景PageRef _Toc17062679 h1Hyperlink l _Toc17062680 目的和意义PageRef _Toc17062680 h1Hyperlink l _Toc17062681 国内外相关产品发展的情况PageRef _Toc17062681 h3Hyperlink l _Toc17062682第2章 系统定义与需求分析PageRef _Toc17062682 h7H

2、yperlink l _Toc17062683 系统定义PageRef _Toc17062683 h7Hyperlink l _Toc17062684 应用环境规定PageRef _Toc17062684 h9Hyperlink l _Toc17062685 最终作品PageRef _Toc17062685 h10Hyperlink l _Toc17062686第3章 系统架构PageRef _Toc17062686 h11Hyperlink l _Toc17062687 系统架构设计PageRef _Toc17062687 h11Hyperlink l _Toc17062688 系统文件组织

3、 PageRef _Toc17062688 h11Hyperlink l _Toc17062689第4章 B/S结构与 协议PageRef _Toc17062689 h16Hyperlink l _Toc17062690 B/S结构简介PageRef _Toc17062690 h16Hyperlink l _Toc17062691 协议简述PageRef _Toc17062691 h18Hyperlink l _Toc17062692第5章 Server部分设计PageRef _Toc17062692 h23Hyperlink l _Toc17062693 系统功能模块划分PageRef _T

4、oc17062693 h23Hyperlink l _Toc17062694 系统配置初始化模块PageRef _Toc17062694 h24Hyperlink l _Toc17062695 系统服务连接初始化及监听/接收服务模块PageRef _Toc17062695 h27Hyperlink l _Toc17062696 协议头分析模块PageRef _Toc17062696 h29Hyperlink l _Toc17062697 处理模块PageRef _Toc17062697 h32Hyperlink l _Toc17062698 静态页面处理模块PageRef _Toc170626

5、98 h34Hyperlink l _Toc17062699 CGI GET,POST处理模块PageRef _Toc17062699 h35Hyperlink l _Toc17062700 协议的设计实现PageRef _Toc17062700 h38Hyperlink l _Toc17062701第6章 OS监控部分开放框架设计PageRef _Toc17062701 h39Hyperlink l _Toc17062702 系统主控程序设计PageRef _Toc17062702 h39Hyperlink l _Toc17062703 cgi程序开发标准PageRef _Toc170627

6、03 h41Hyperlink l _Toc17062704 xcgi开发标准PageRef _Toc17062704 h46Hyperlink l _Toc17062705 CGI参数解析程序cgilibPageRef _Toc17062705 h48Hyperlink l _Toc17062706 XCGI程序DemoPageRef _Toc17062706 h49Hyperlink l _Toc17062707第7章 系统信息查看部分PageRef _Toc17062707 h52Hyperlink l _Toc17062708PageRef _Toc17062708 h52Hyperl

7、ink l _Toc17062709PageRef _Toc17062709 h52Hyperlink l _Toc17062710第8章 系统信息查看部分PageRef _Toc17062710 h53Hyperlink l _Toc17062711 对系统文件信息的查看PageRef _Toc17062711 h53Hyperlink l _Toc17062712 对系统磁盘信息的查看PageRef _Toc17062712 h56Hyperlink l _Toc17062713 对系统进程信息的浏览PageRef _Toc17062713 h58Hyperlink l _Toc17062

8、714 对系统网络配置的查看PageRef _Toc17062714 h60Hyperlink l _Toc17062715 对系统用户信息的查看PageRef _Toc17062715 h63Hyperlink l _Toc17062716第9章 系统控制部分PageRef _Toc17062716 h66Hyperlink l _Toc17062717 对系统用户的管理PageRef _Toc17062717 h66Hyperlink l _Toc17062718 对系统进程的管理PageRef _Toc17062718 h69Hyperlink l _Toc17062719 对系统文件系

9、统的管理PageRef _Toc17062719 h71Hyperlink l _Toc17062720 对其它系统设备管理PageRef _Toc17062720 h74Hyperlink l _Toc17062721第10章 用户界面部分PageRef _Toc17062721 h77Hyperlink l _Toc17062722第11章 Net-snmp接口实现PageRef _Toc17062722 h78Hyperlink l _Toc17062723 Net-snmp介绍PageRef _Toc17062723 h78Hyperlink l _Toc17062724 Net-sn

10、mp移植PageRef _Toc17062724 h78Hyperlink l _Toc17062725 Net-snmp扩展PageRef _Toc17062725 h78Hyperlink l _Toc17062726 系统与Net-snmp接口实现PageRef _Toc17062726 h80Hyperlink l _Toc17062727第12章 调试与编译PageRef _Toc17062727 h81Hyperlink l _Toc17062728 调试PageRef _Toc17062728 h81Hyperlink l _Toc17062729 编译选项PageRef _To

11、c17062729 h81Hyperlink l _Toc17062730 Makefile文件的编写PageRef _Toc17062730 h81Hyperlink l _Toc17062731第13章 设计总结PageRef _Toc17062731 h84Hyperlink l _Toc17062732 设计总体思路PageRef _Toc17062732 h84Hyperlink l _Toc17062733 设计实现中的问题和还需完善的工作PageRef _Toc17062733 h84Hyperlink l _Toc17062734第14章 本项目今后的发展规划PageRef _

12、Toc17062734 h86Hyperlink l _Toc17062735 继续开源PageRef _Toc17062735 h86Hyperlink l _Toc17062736 由个人小团队开发向社区开发模式发展PageRef _Toc17062736 h86Hyperlink l _Toc17062737 继续采用GPLV2PageRef _Toc17062737 h87Hyperlink l _Toc17062738第15章 参考文献PageRef _Toc17062738 h88Hyperlink l _Toc17062739附录1:系统截图PageRef _Toc1706273

13、9 h1引言项目来源及背景目前,在嵌入式Linux系统中还没有基于Web且通用性较好的监控系统。然而,利用Web提高对嵌入式设备的访问和控制效率是嵌入式发展的必然趋势。Web的访问控制优势在于:首先,不需要专门的客户端软件。这是因为,现在的操作系统几乎都集成或预安装有客户端浏览器。而且这些浏览器几乎都支持标准的 协议。所以访问控制可以达到真正的随时随地。其次,作为一般的控制,基于Web的访问控制更为简单有效。后期程序开发和维护成本相对较低。鉴于如上优势,我们成立了该项目,研究和开发基于Web的嵌入式监控系统。该系统是一个通用的用于Linux或是类Linux嵌入式系统的监控系统,该系统是一个框架

14、性的系统,十分方便于针对于具体设备的二次开发。目的和意义在以太网和TCP/IP协议已成为世界范围内事实标准的情况下,我们对各种工业控制设备的网络功能要求就越来越高,希望工业控制设备具有Internet接入功能,能够支持TCP/IP以及其他网络协议,采集数据通过网络传送到服务器的数据库中,使用户通过浏览器查看设备状态、设置设备参数,以达到远程监控现场设备的目的。嵌入式基于Web监控系统就能够实现这个目的,它采用嵌入式Internet技术和工业以太网控制技术,是一种新型的远程监控的解决方案。基于嵌入式Web的远程监控是在传统远程监控的基础上又融合了Web和嵌入式技术,可提供比传统远程监控更为强大的

15、功能,将成为今后远程监控技术发展的主流方向。Web技术弥补了传统监控系统的不足,致使运用Web技术实现设备的远程监控,已经越来越多地成为设备监控系统不可或缺的一部分。嵌入式设备的Web服务为现场设备的数据采集、监控、诊断和维护开辟了一个新的领域。基于嵌入式Web的远程监控思想是在电子设备中实现 服务,将其转化成 WebServer嵌入到被控设备中,为Internet或局域网用户提供基于Web的图形化管理接口,实现对接入到网络中各种设备的统一管理。用户可以通过现有的公共通信网络,不受地域限制,使用标准的Web浏览器作为接口直接访问机电设备上的Web服务器,实现对网络中各个节点现场设备的远程监控、

16、诊断与维护。嵌入式Web服务器(EWS)技术发展起来,它把网络化设备设计成Web服务器,通过 协议和Web页面形式实现对设备的远程控制。EWS将信息采集和信息发布都集成到现场的测试设备中。有了标准的接口形式和通信协议,内嵌于设备的Web服务器可以向任何接入它所在网络的合法用户提供统一的基于嵌入式浏览器方式的操作和控制界面,浏览器成了设备的前端控制板。由于工业控制领域和信息家电领域信息监控有很强的需求,嵌入式远程监控技术就有了更加广阔的应用前景。嵌入式Internet的发展,则可以方便、低廉地将嵌入式终端的信息传送到几乎世界上的任何一个地方。因此随着微处理器技术、计算机网络技术的进步,基于嵌入式

17、Web的网络监控系统得到了人们的广泛关注。嵌入式网络监控是指在网络中使用,通过Web来访问,提供给客户端共享资源的硬件及软件的结合体。网络的基本功能是使用户通过编程和浏览取得网页在浏览器内显示出来。文件中的超级链接可以把用户导向其他的文件,对一个嵌入式设备来说,更重要的是一个超级链接可以连接一个CGI脚本,它可以动态地产生HTML网页,因此可以实时地从传感器上得到数据并发回到客户端的浏览器上,通过该机制可以用来监控。随着科技的发展,远程监控技术将在在军事科技,商业生产,工业控制以及未来家庭生活等方面得到更加广泛的应用和发展。国内外相关产品发展的情况国外研究现状目前,国外有很多公司对基于Inte

18、rnet的嵌入式远程控制进行了研究、开发和应用。基于以太网,客户只要拥有浏览器,即可方便地进行通信。虽然可以用浏览器来进行过程参数的设定或控制对象的关闭与开启,但浏览器不能用来控制设备,因此设备的实际控制由PC机来完成。在设备的远程故障诊断领域,在美国波音公司的设备预维护系统中,采用了Web网络技术进行数据分析,使用以太网TCP/IP和Web浏览器进行远程探测和检修机器的故障,对于设备复杂故障的分析与排除,也可以通过人工智能软件来实现。加拿大Granby公司使用了Web网络浏览器技术,通过以太网TCP/IP进行机床故障诊断、维护及排除,周期性地使用自动视屏信号及录像机进行监控、服务请求和机器诊

19、断,通过Internet连接与Web网络访问进行图像传输,实现主要用户远程产品和生产过程的监测,没有使用针对机器的专用通信与控制线路。国外在网络监控软件方面比国内早,己经开始研制第三代网管软件了,也拥有很多专利技术,比较有代表性的有惠普公司的openView和IBM公司的Tivoli,和Micromuse公司的NetCool。其中最具代表性的是NetCool。NetCool是Micromuse公司的旗舰产品,主要由端对端监控模块,服务监控模块,业务冲击影响模块,故障分析模块组成。各个模块之间相互独立,每个模块可以独立使用。国内研究现状国内在网络监控方面起步比国外晚,但最近几在技术和功能上也有了

20、较大的提高,在一些关键技术上的差距也在逐步缩短。出现了许多优秀的具有代表性的网络监控软件,比如白塔软件,SiteView,浪潮网管等。其中,市场上比较流行的国产网络管理软件是SiteView,浪潮网络管理软件两者比较而言,SiteView的监控范围要大一些,它不仅可以监控网络的各种设备路由器,交换机,还可以监控各种网络主机(HP,IBM),数据库,各种服务进程,中间件等,它提出逻辑采集器的慨念,对任何设备的采集都必须添加一个对应的采集器,并设置相应的采集指标。由于逻辑采集器对用户不是透明的所以配置稍显复杂,SiteView对主机监控提供了Telnet的监控方式,用户可以不用在主机端安装SNMP

21、代理软件,这也是Siteview的一个特点。浪潮的网管软件偏重于网络硬件的监控,它的监控范围并不局限于IP网络。同时由于采用了专业的商业中间件,也使其具有较好的性能。浪潮的网管软件具有网络优化功能,能够对网络优化提供有用的数据分析,具有一定的智能.目前国产的网络管理软件在中小型网络应用中,以较低的价格和稳定的性能占据了主要地位。国内基于SNMP协议的网络管理软件也很多,如联想公司的Hyperview管理软件,方正公司宽带“王管”网络管理平台,不仅能实现对企业网络运行的日常管理及维护,而且专门针对国内企业普遍存在的BT、电骡下载、病毒以及网络聊天等导致工作效率低下的问题,提出了一整套完备的解决方

22、案。这些知名度较高的软件,有力的推动了网管软件的发展。虽然目前国际国内网管软件发展非常迅速,但是它们主要集中在互联网的网络硬件、软件产品上,开发非网络产品的网络化和信息化管理并不多,本项目就是抓住了这个商机,积极开发各种设备的网络化和信息化功能,实现在互联网上的网络管理。目前提供全面的、完整的、低廉的网管固件和网管模块以及嵌入式设备网管系统开发平台的服务,国内和国外还没有看到,本项目就是要抓住先机,引领国内嵌入式设备网管系统的发展,加速我国网络化和信息化管理的进程。系统定义与需求分析系统定义系统功能开放框架设计系统信息监控功能与snmp相结合等功能面向的用户该系统主要针对的用户有两种:系统管理

23、员和一般用户系统管理员(Admin):是对整个操作系统进行维护管理的人员。系统管理员具有特殊的权限,例如:可以在必要的时候控制嵌入式系统杀死某个进程,启动(或关闭)某些服务、创建文件、强制关机等。也可以像查看本地文件系统一样查看嵌入式系统的系统信息。一般用户(user):只能对系统进行监视,而不能配置。主要用于观察嵌入式系统的运行状况以及资源的使用情况。系统主模块功能系统结构为B/S模式,其中运行在开发主机上的是浏览器,命名为Client,运行在嵌入式开发板上的是服务器端,命名为Server。由于浏览器是操作系统自带的,故整个监控系统仅考虑服务器端的开发。服务器端的设计分为两部分:A) Ser

24、ver部分:它主要和客户端浏览器进行交互。负责 协议的解析和处理、会话管理、以及调用监控程序完成对系统的监控。尽管目前有比较成熟的基于嵌入式的 服务器,但美中不足的是,它们作为通用的 服务器,相对于这样一个具体的项目来说过于复杂,且不易于根据实际情况进行定制。为了弥补这个不足,本项目在参考其它 服务器的基础之上开发适合本项目自身的 服务器。B)OS监控端部分:该部分负责对系统进行信息收集和实时控制。该部分程序相对比较庞大,也比较复杂,是整个监控系统的最底层部分。界面需求由于Client端界面是浏览器,所以服务端程序要求以HTML语言作为输出,最后由客户端浏览器解释为图形界面。响应时间需求要求具

25、有较好的实时性,即对监视系统资源使用情况功能要在较短的周期时间内响应请求,以便更及时的反应嵌入式设备的情况。系统安全性需求系统安全需求表现在对系统进行设置时的权限划分,默认是只有系统管理员用户才可以对系统进行设置。一般用户只可以查看系统信息,而匿名用户没有任何权限。以此来保证系统的安全性。 应用环境规定系统运行网络环境本项目的应用环境为网络环境。前提是目标板和管理主机之间的网络必须连同,本程序基于以太网实现两者的交互。首先开发人员必须将服务程序下载安装到目标开发板上,这个可以通过并口,串口,usb,ssh或者ftp实现,接下来在嵌入式开发板上运行该服务程序。再在管理主机端运行浏览器,在浏览器地

26、址栏中输入HYPERLINK :/ip:port :/ip:port 即可访问。ip为嵌入式开发板的ip。登录成功后即可管理嵌入式系统。系统运行硬件环境Server:通用的嵌入式设备。主要针对于运行Linux操作系统的嵌入式产品。ARM7以上,需要存储空间在500K以上。Client:普通PC,或是带有通用浏览器的任意设备。系统运行软件环境Server:嵌入式Linux(Linux或ucLinux)Client:通用浏览器(Browse)。 开发平台开发平台系统:Server端程序都是在Debian linux或是ubuntu Linux上开发。编译器采用针对于嵌入式的编译器。开发工具:开发工

27、具采用eclipse + vim + gedit + dia + gimp。eclipse主要用来编辑源文件,项目文件简单管理,初步调试程序使用;vim和gedit作为单个文件编辑。dia用于绘制各种图表,如UML图;截图和图像编辑工具采用gimp;文档编写与管理软件:永中集成office个人版 + gedit项目管理:采取先进的源码开放的开发模式,项目管理采用git和svn的双向管理,并辅助以google code管理系统。主管理工具为git,svn管理主要针对google code管理系统测试需求测试平台:嵌入式端采用3c2410开发板,EPC-8000开发板进行测试,客户端采用firef

28、ox,ie等通用浏览器客户端测试操作系统:linux,windows测试分类:功能测试,可靠性测试,安全行测试,压力测试。 最终作品嵌入式Linux轻量级 服务器程序一套,具有较好安全性,能及时相应客户端的请求。支持并发处理。有较好的负载能力。系统监控程序一套,和上面的 配合使用。程序开发过程文档,包括需求分析,概要设计,详细设计文档。最终程序包括c程序,shell程序,HTML网页文件,css样式文件,js文件和图片。最终文档包括doc文档,pdf文档,文本文档。 系统架构系统架构设计程序结构为B/S模式,其中运行在开发主机上的是浏览器,命名为Client,运行在嵌入式开发板上的是服务器端,

29、命名为Server。所以整个监控系统的重点在于服务器端的开发。整个系统服务器端的设计分为两部分: Server和OS监控端两部分。系统结构图示用户浏览器Linux-arm 服务器OS监控端部分主界面及主控制程序系统控制程序集系统信息查看程序集系统结构图示(图3-1)系统文件组织 x 根文件夹这个开发目录结构图。helightZhwen:x d$ ls -ltotal 68-rw-r-r- 1 helight helight 6076 2009-03-07 19:52 Coding_Styledrwxr-xr-x 3 helight helight 4096 2009-03-14 22:05 c

30、onfig-rw-r-r- 1 helight helight 18353 2002-01-05 23:55 COPYING-rw-r-r- 1 helight helight 92 2009-04-01 13:16 CREDITSdrwxr-xr-x 3 helight helight 4096 2009-03-14 16:33 doc-rw-r-r- 1 helight helight 572 2009-03-07 19:52 HOWTOdrwxr-xr-x 3 helight helight 4096 2009-04-03 21:46 d-rw-r-r- 1 helight heligh

31、t 341 2009-03-07 19:52 Makefile-rw-r-r- 1 helight helight 300 2009-03-07 19:52 TODOdrwxr-xr-x 14 helight helight 4096 2009-04-01 13:36 wwwhelightZhwen:x d$ 目录文件夹的截图。开发目录图示(图3-2) d服务器源文件该部分是Web服务器源程序所在的目录结构。helightZhwen: d$ ls -ltotal 100-rw-r-r- 1 helight helight 358 2009-03-14 22:06 Makefilehelight

32、Zhwen: d$ www应用程序源文件该部分主要是应用程序所在的目录结构。helightZhwen:www$ ls -ldrwxr-xr-x 2 helight helight 4096 2009-11-28 17:27 cgilibdrwxr-xr-x 2 helight helight 4096 2009-09-01 09:24 demodrwxr-xr-x 2 helight helight 4096 2009-11-28 17:31 devdrwxr-xr-x 2 helight helight 4096 2009-11-28 17:31 diskdrwxr-xr-x 2 helig

33、ht helight 4096 2009-09-01 09:22 envdrwxr-xr-x 2 helight helight 4096 2009-09-01 09:22 fsdrwxr-xr-x 2 helight helight 4096 2009-08-31 17:28 img-rw-r-r- 1 helight helight 621 2009-11-28 17:30 Makefiledrwxr-xr-x 2 helight helight 4096 2009-11-28 17:31 netdrwxr-xr-x 2 helight helight 4096 2009-11-28 17

34、:31 psdrwxr-xr-x 2 helight helight 4096 2009-11-28 17:31 sysdrwxr-xr-x 2 helight helight 4096 2009-11-28 17:31 usrhelightZhwen:www$ 文件结构说明:目录结构说明(表 3-1)文件夹内容说明 dMakefilesrc中的Makefile文件主文件,完成进程的初始化主头文件对服务器进行初始化配置文件读取并进行配置建立服务器端监听接口参数解析 协议处理和CGI程序处理日志处理日志处理头文件调试处理函数错误处理错误处理头文件一般功能函数wwwimg文件夹,存放网页图片,cs

35、s,js文件网页主索引文件dev设备管理应用程序disk磁盘管理应用程序env系统环境管理应用程序fs文件系统管理应用程序net网络管理应用程序ps进程管理应用程序sys系统服务管理应用程序usr系统用户管理应用程序主登录控制程序,验证程序登录输入框Make配置文件MakefileMakefile主Makefile文件Coding_StyleCoding_Style代码编写规范HOWTO HOWTO 用户使用手册TODOTODO开发指导手册CREDITSCREDITS贡献者COPYINGCOPYING所使用的协议 B/S结构与 协议B/S结构简介C/S和B/S结构C/S和B/S是当今世界开发模

36、式技术架构的两大主流技术。C/S是美国Borland公司最早研发,B/S是美国微软公司研发。目前,这两项技术以被世界各国所掌握,国内公司以C/S和B/S技术开发出产品也很多,这两种技术都有自己一定的市场份额和客户群。C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的

37、业务处理,应用不同的模块共享逻辑组件。因此,内部的和外部的用户都可以访问新的和现有的应用系统,过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Intemet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端 (server)实现,形成所谓三层结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。B/S架构管理软件方便、快捷、高效。

38、而C/S架构的劣势是高昂的维护成本且投资大。B/S架构软件的优势1)维护和升级方式简单目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大的单位来说,系统管理人员如果需要在成百上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软

39、件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。2)成本降低B/S下的客户端问题几乎可以忽略不计。因为浏览器成为了几乎所有桌面操作系统中标准配置。所以客户端的构建成本将降为零。 协议简述 是一个应用层面向对象的协议,由于其简洁、快速的方式,适用于分布式超媒体信息系统,它于1990年提出,经过接近20年的使用与发展,得到不断的扩充和完善。 协议的主要特点支持客户及服务器模式。简单快速:客户向服务器请求服务时,只需传送请求方法和路径。常用的请求方法有GET, HEAD和POST等。每种方法规

40、定了客户与服务器联系的类型不同。由于 协议简单, 服务器的程序规模小,因而通信速度很快。灵活: 允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。无状态: 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则必须重传,这样可能导致每次连接传送的数据量增大。在服务器不需要先前信息时,它应答就较快。 协议的几个重要概念连接(connection):一个传输层的实际环流,它建立在两个互相通

41、信的应用程序之间。消息 (message): 通信的基本单位,包括一个结构化的八元组序列并通过连接传输。请求 (request):一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标志符和协议的版本号。响应(response):一个从服务器返回的信息,包括 协议的版本号。请求的状态(例如成功或没找到)和文档的MIME类型。资源(resource):由URI标识的网络数据对象或服务。实体(entity):数据资源或来自服务资源回应的一种特殊表示方法,它可能被包围在一个请求或响应信息中,一个实体包括头信息和实体的本身内容。客户机 (client):一个为发送请求目的而建立连接的应用程序。客

42、户端可浏览Web上丰富的图像文字等多媒体信息,一般来说简称“页面”。页面包含“链接”,链接指向的页面可存储在世界的任何一个地方。包含这种链接的页面称为“超文本”。服务器(server):一个接受连接并对请求返回信息的应用程序。服务器端的每一个Web服务器上都运行这一个倾听TCP的80端口的进度,等待来自客户端的 请求。当一个链接发生的时候,客户端发送一个请求,当服务器收到这个请求后,服务器会将客户端请求的数据返回到客户端。 协议的于请求/响应模式 协议是基于请求/响应模式的。一个客户机与服务器建立连接后,发送一个请求给服务器,服务器接到请求后,给予相应的响应信息。 服务器运行时,一直在TCP8

43、0端口(系统默认)监听,等待连接的出现。一般一个信息的交换要经过以下几个步骤:(l)建立连接连接的建立是通过申请套接字实现的。客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件,以后就可以在该虚拟文件上写数据并通过网络向外传送。(2)发送请求打开一个请求后,客户机把请求信息送到服务器的停留端口上,完成提出请求动作。请求消息的格式:请求信息=请求行(通用信息请求头实体头 )CRLF(实体内容)请求行=方法请求URL 版本号CRLF方法=GET/HEAD/POST等扩展方法URL=协议名称+宿主名+目录与文件名(3)发送响应服务器处理完客户端的请求后,要求客户机发送响应

44、信息。响应信息格式:响应消息=状态行(通用信息请求头实体头 )CRLF(实体内容)状态行= 版本号状态码原因叙述状态码表示响应类型。1XX保留2XX表示请求成功的接受,例如2003XX为完成请求客户需进一步细化请求4XX客户错误5XX服务器错误(4)关闭连接客户和服务器双方都可以通过关闭套接字结束对话。用户在浏览器的地址栏中输入要访问的页面地址并回车触发这个申请。Web浏览器将用户输入的URL分解,从中提取有用的信息。例如:当用户输入 :/localhost/时,将其分解后,Web浏览器得到如下信息:使用超文本传输协议( )从一台名为localhost的Internet主机(或服务器)上的某个

45、目录下获取一个名为index.html的文件。2.Web浏览器根据网络配置查询Internet上的域名服务器(DomainName Server)来获取相应的IP地址。域名服务器上有一个数据库,存储了许多Internet服务器的域名及其相应的IP地址。在这里 baidu 对应的IP地址是。3.Web浏览器取得IP地址后,使用所获取的IP地址与相应的诸如light 的网络服务器进行通信来确证Web服务器是否处于可用状态。所用的通信协议为上述所提到的超文本传输协议。4.当浏览器得知服务器请求后,即向服务器发出相应的文件请求(某个目录下的index.html文件)。服务器收到请求后即检查该目录下的指

46、定文件,根据.html或.htm的后缀意识到这是HTML文件。若该HTML文件存在则发送该文件,否则发送文件未找到的回应信息。5.当所要求的文件(index.html)到达浏览器后,浏览器开始解码。若浏览器发现其中有嵌入对象信息时,如嵌入的图像,则向服务器发送文件请求信息(image.gif)服务器收到文件请求信息后,开始查找相应的文件,找到后即发送该文件。对于超文本文件中的每一个嵌入对象,这个过程将被重复一次。当所有的对象都传送完毕后,此时浏览器中就会有一个完整的超文本页面展现在用户面前。从以上过程可以看出,一个超文本页面的获取并非通过浏览器与服务器之间的一次突发的通信完成的,而是通过浏览器

47、与服务器之间的多次交互来完成的。尽管上述过程看起来比较复杂,但它并不占用大量的计算机资源。并不影响我们同时使用计算机进行其他处理。 Server部分设计系统功能模块划分该部分作为整个系统的核心部分,负责系统的整体调度,从上面的系统结构图中可以看出,这一部分是整个系统的中心调度部分。负责 协议的解析和处理,会话管理,并且调用监控程序完成系统的监控。该部分是和用户浏览器直接交互的一块。该服务器完成的主要任务就是完成 协议的解析,并且根据协议请求作出相应的响应。由于本系统的基础功能的实现是由CGI程序来完成,所以该服务器还必须完成CGI程序的调用执行,并且将执行结果返回给客户端。在设计实现上可划分为

48、一下几个模块:系统配置初始化模块系统服务连接初始化模块及监听/接收服务模块 协议头处理模块协议头处理模块静态页面处理模块CGI POST,GET 请求处理模块服务器系统配置环境变量根据分析进行相应的响应读取 请求头并进行分析服务器网络端口配置及监听服务器配置初始化CGI GET,POST处理一般静态页面处理新连接数据相关 服务器的结构图(图5-1)系统配置初始化模块模块描述对系统进行环境初始化和配置,具体功能分为:读取配置文件,根据配置文件完成相关系统环境变量的初始化。数据相关相关文件:config.c,config.h,x d.h:配置模块源程序(表5-1)文件位置描述配置文件主程序配置文件

49、主程序头文件相关全局配置数据结构头文件相关函数和数据:x/* * the config environment of the server, * It should be readed from the configure file. * * port : listen port * start_time : when the server start * connection_timeout : how long should the connection keep when its idle * max_connect : the max number client connect the

50、 server * log_file : the path of log file * version : the version of my server * name : the name of my server * index : the file name of the default * author : the name of the author * root_dir : the default server dir */struct server_env unsigned short port; /*listen port*/ unsigned int start_time;

51、 /*/ unsigned int connection_timeout; /*/ unsigned int max_connect; /*max number of connected!*/ char *log_file; /*path of log*/ char version8; char name16; char index16; /*default index file*/ char author32; /*the name of author*/ char root_dirNAME_LEN; /*document root*/server_env;/* * the environm

52、ent of the server when it is running , * The date should be collect when the serve is running * * connect : how many client connect to the server now * state : the state of my server - r or d */struct run_envunsigned intconnect;/*number of connected*/charstate;run_env;#define CONFIG_FILE config/x _c

53、onfig#define DEFAULT_DOC index.htm /#define Web_ROOT /home/helight/workspace/x d/Web/#define Web_ROOT www/#define PORT 8080void do_config(struct server_env *server_env);void read_config(struct server_env *server_env);void do_default_config(struct server_env *server_env);算法简单处理流程图初始化开始do_config判断是否有配

54、置文件进行默认配置do_default_config读取配置文件read_config进行配置判断配置是否正确配置模块的简单流程图(图5-2)接口void do_config(struct server_env *server_env);void read_config(struct server_env *server_env);void do_default_config(struct server_env *server_env);配置文件约束配置文件中的有效配置项:端口 port链接超时 connection_timeout最大链接数 max_connect主索引文件 index主服务

55、目录 root_dir 件中的注释符号:# (英文井字符) ,如下示例# config the port 配置文件格式:name+spease+value+enter(配置名称空格值+换行)。测试相关对默认配置进行和有配置文件都要进行测试。该部分只要进行功能测试,只要将配置文件中的相关数据写到服务器配置数据结构即可系统服务连接初始化及监听/接收服务模块模块描述该部分主要在于建立安全的socket服务,以便为下面的程序建立数据通道;并且接收请求,完成相应请求信息的分析。具体功能如下:建立安全的socket服务。接收客户端请求建立相应的用户信息数据结构数据相关相关文件:set_socket.c,s

56、et_socket.h,x d.h:服务端口建立模块源程序(表5-2)文件位置描述socket建立实现的主程序socket建立实现的主程序头文件相关全局配置数据结构头文件相关函数和数据: d_listen(short port): int listenfd; struct sockaddr_in servaddr;int d_accept(int listenfd): int connect_fd; socklen_t len; struct sockaddr_in client_addr;算法简单处理流程图:listen_connect() d_listen() d_acceptdo_soc

57、ket()accept()do_bind()listen() close()do_request端口建立模块的简单流程图(图5-3)算法描述:接口void listen_connect(void);static int do_socket(void)static int do_bind(int fd, struct sockaddr *sadd, int len)int d_listen(short port)int d_accept(int listenfd)int do_close(int fd)使用约束该部分出了又主文件调用以外,其它函数均不可以调用。测试相关该部分的测试相对复杂,端口建

58、立是否真确,错误处理是否正当等。除了基本的功能测试以外,更为重要的是性能测试。 协议头分析模块模块描述该模块完成处理 协议,主要完成对客户端发送的 协议包进行解析。 功能从客户端浏览器发送过来的请求数据中解析出其中的请求方式,请求文件和参数等。以便分析如何响应客户端的请求。数据相关相关文件:request.c,request.h: 协议分析模块源程序(表5-3)文件位置描述头文件解析相关结构申明相关函数和数据:/* The request method of brows * and now in this d we can do GET and POST */enum method GET,

59、POST, UNKNOW,;/* * the state of the server */enum state C, /*connect*/ N, /*not connnect*/;/* * version of request */enum v V0, /*version 1.0*/ V1, /*version 1.1*/ UNV,;/* * for user info */struct user_info int fd; /*connect file descr*/ unsigned short port; /*client port*/ struct in_addr ipaddr; /*

60、client ip*/ unsigned long login_time; /*login time*/ char stat; enum v v; /*The request version of */ enum method method; char brows16; char filename32; char path512; /* the request path*/ struct user_info *next; 请求包头:Host: :8080User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:) Gecko/20080928

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论