




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第0页共38页论文题目嵌入式LINUX系统中HTTP协议的实现方法研究学生姓名指导老师所在学院时间2017年6月第1页共38页摘要随着计算机技术的发展,嵌入式系统已成为计算机应用领域的一个重要组成部分。随着网络技术与嵌入式技术的结合,INTERNET网络体系结构中应用层的各种协议,在嵌入式系统设备中有了实现的可能。本文就是在嵌入式系统设备上实现HTTP10协议的部分功能。本论文从嵌入式系统的设计与开发入手,到在嵌入式系统硬件设备上,实现基于LINUX操作系统上实现HTTP协议的服务端功能程序。整个发生过程如下首先,嵌入式系统的硬件设备的选择与实现。在众多的嵌入式CPU中,考虑到实现HTTP协议的服务端功能程序,对CPU的性能要求不是很高,最终选择了性价比较高的SAMSUNG公司的基于ARM7TDMI的S3C44B0X一款CPU芯片。以太网控制芯片为RTL8019AS。博创科技公司开发的一款实验箱恰好恰符合这种要求。其次,嵌入式软件系统的实现。对于嵌入式系统操作系统的选择,由于硬件功能的限制,通过比较几个常用的嵌入式操作系统,最后选择了LINUX操作系统。在该系统下,选用C程序设计语言,利用LINUX操作系统地系统函数库和SOCKET编程技术,实现HTTP服务端的功能。最后,该项目的实际意义主要在于两个方面的应用,一个是监视功能,用于在服务器端进行某项监视任务,使在客户端的浏览器中的显示监视的信息,这样能帮助用户主动获取信息。另一个是控制仪器设备。用户可以通过执行CGI程序或脚本语言,通过INTERNET获得交互式信息,对其进行远程控制。关键词嵌入式系统;超文本传输协议;LINUX;第2页共38页ABSTRACTWITHTHEDEVELOPMENTOFTHECOMPUTERTECHNOLOGY,EMBEDDEDSYSTEMTECHNOLOGYHASBECOMEANIMPORTANTPARTOFTHECOMPUTERAPPLICATIONAFTERTHECOMPUTERNETWORKTECHNOLOGYANDTHEEMBEDDEDSYSTEMTECHNOLOGYCOMBINES,SOMEPROTOCOLSOFTHEAPPLICATIONLAYERINTHEINTERNETNETWORKARCHITECTURECANBETRANSLATEDINTOPROGRAMSTHATRUNONTHEEMBEDDEDDEVICESTHETHESISPRESENTSTHEDESIGNANDIMPLEMENTATIONOFPARTOFTHEHTTP10PROTOCOLBASEDONEMBEDDEDHARDWAREANDOPERATIONSYSTEMTHESERVERPROCESSESTHEREQUEST,RETURNSAHEADERCONTAININGASTATUSCODEANDEITHERAFILEORANHTMLDOCUMENTATTACHEDAFTERTHEHEADERTHETHESISINTRODUCESTHEPROCEDUREOFTHEDESIGNANDDEVELOPMENTOFTHEEMBEDDEDSYSTEM,WHICHTHESERVERFUNCTIONPROGRAMOFTHEHTTPPROTOCOLREALIZESBASEDONEMBEDDEDDEVICESSYSTEMANDCLINUXOSPLATFORMSTHEENTIREPROCESSGOESASFOLLOWSFIRST,THETHESISINTRODUCESTHECHOICEANDTHEREALIZATIONOFTHEEMBEDDEDSYSTEMHARDWAREBECAUSETHEPERFORMANCEANDCOMPLEXIONOFTHEPROGRAMOFTHEHTTPSERVERFUNCTIONISNOTTOOMUCH,ICHOSESAMSUNGSS3C44B0XCPUTHATISBASEDONARM7TDMIAMONGTHEMANYEMBEDDEDCPUANDTHEETHERNETCONTROLLERCHIPOFTHESYSTEMISRTL8019ASFORTUNATELY,UPNETARM3000EXPERIMENTSYSTEMBASEDONARM7PLATFORMMEETSTHENEED,WHICHISMADEBYUNIVERSALPIONEERINGTECHNOLOGYCO,LTDSECOND,THEEMBEDDEDSYSTEMREALIZESCONSIDERINGTHELIMITEDPERFORMANCEOFTHEEMBEDDEDSYSTEMHARDWARE,IFINALLYCHOOSECLINUXOSASTHESOFTWAREPLATFORMBYCOMPARINGSEVERALOPERATIONSYSTEMSOFCURRENTEMBEDDEDSYSTEMICHOOSECPROGRAMMINGLANGUAGETOPROGRAMBYUSEOFTHEOPERATIONSYSTEMFUNCTIONSANDSOCKETTECHNOLOGYOFFEREDBYCLINUXINORDERTOREALIZETHEHTTPSERVERFUNCTIONFINALLY,THEAPPLICATIONOFTHEPROJECTCONSISTSOFTWOPRIMARYPARTSONEISMONITORINGFUNCTION,THATIS,THEINFORMATIONMONITOREDBYTHEHTTPSERVERCANBESENTTOTHECLIENTTHATGETSITBYTHEBROWSERTHEOTHERISREMOTECONTROLLINGAPPLIANCESANDDEVICESUSERSCANCONTROLTHEMREMOTELYBYRUNNINGCGIPROGRAMSORSCRIPTSLANGUAGEPROGRAMSTHROUGHTHEINTERNET第3页共38页KEYWORDSEMBEDDEDSYSTEM;HTTPPROTOCOL,;LINUX目录第一章嵌入式的基础简介111嵌入式系统的历史、现状与发展112嵌入式系统概述213LINUX的主要特性414嵌入式WEB服务器5第二章HTTP协议简介721HTTP协议基础722HTTP协议的运作过程823HTTP协议的工作模式及特点10第三章HTTP设计思想1131系统总体设计11311系统的结构图说明11312功能分配1232详细设计12321主程序设计12322客户请求连接处理模块设计14323客户请求解析处理模块设计15324发送HTTP协议数据头模块设计1633程序设计需求分析16第四章程序实现1941主程序实现的主要思想1942几个主要函数的名称及相关参数说明2043系统程序(函数)源码21第五章嵌入式WEB服务器的实现第4页共38页2251WEB服务器的模块框图2252介绍。22第六章测试与固化2461测试2462程序的固化阶段24第七章现实意义26参考文献29附录30第0页共38页第一章嵌入式的基础简介近年来嵌入式技术作为计算机科学与技术发展的一个新的分支,发展非常迅速,应用的前景被业内人士非常看好。随着INTERNET的普及,网络在人们的日常生活和工作中扮演着越来越重要的角色,已经成为人们生活和工作中不可缺少的部分。1随着嵌入式技术和INTERNET技术的发展与结合,嵌入式系统在互联网方面的应用越来越广泛,由于嵌入式系统带有网络接口,把嵌入式系统设备挂接互联网上,可以实现嵌入式设备系统的数据通过INTERNET实现共享,这样对于远端的许多用户就可以通过浏览器以网页的形式和嵌入式设备进行通讯,从而实现各典型的基于X86的CPU的微型计算机和LINUX操作系统下的WEB服务器技术已经成熟。但由于LINUX内核庞大,而嵌入式系统的硬件资源(CPU和存储器)远远比不上微型计算机,因此,要把LINUX操作系统装入有限的内存,就要对它进行裁剪。对于内存资源很宝贵的嵌入式系统来,设计一个嵌入式HTTP网络服务器,用浏览器进行访问控制,在嵌入式网络设备中的应用将是非常有前景的。为了实现嵌入式HTTP服务端的功能,采用基于ARM7TDMI内核的S3C44B0XCPU芯片,操作系统选用CLINUX来作为嵌入式操作系统,利用CLINUX提供的库函数及SOCKET编程技术,依据采用软件工程学的原理,来指导开发过程。目前用于WEB页面访问的应用都是基于HTTP(HYPERTEXTTRANSFERPROTOCOL)应用协议的,它对于设计WEB浏览器等应用软件是必须需的。我们在嵌入式产品无线PDA(PERSONALDIGITALASSISTANT)中为了实现嵌入式的浏览器,自行设计和实现了HTTP/11协议,为无线PDA提供访问WEB页面提供了基本的支持。在设计和实现过程中,我们应用了HTTP/11不同于HTTP/10之处,如可持续连接、缓存等减少了响应时间,改善了无线网络带宽窄而带来的延时,同时也提高了嵌入式设备的资源利用,为嵌入式设备提供了较好的实现方案。该项目的实际意义包括以下两个方面的应用,一个是监视功能,用于在服务器端进行某项监视任务,使在客户端的浏览器中的显示监控的信息。它能帮助用户主动获取信息。另一个是控制仪器设备。用户可以通过普通的HTML页面,在任何时间、任何地方浏览电器设备的运行状态,并可对其进行远程控制,特别是通过INTERNET获得交互式信息。11嵌入式系统的历史、现状与发展20多年前,芬兰赫尔辛基大学的一名名为LINUSTORVALDS的计算机业余爱好者设第1页共38页计了一个可以代替MINIX的操作系统,这个系统不但可以运行在当时最为流行的X86平台的处理器,并且还具有UNIX所能实现的一切功能,这就是早期LINUX的前身。1991年的9月,它将第一个LINUX版本发布在网络上,并在十个月以后发布了第二个版本,同时,借助于网络,越来越多的计算机爱好者也加入了新版本开发的行列,它们慢慢的成为了LINUX强大的技术支持力量,也就是当今著名的LINUX社区。到现在,LINUX已经发行了超过了30个版本,并且每三个月就会更新一个新版本,成为全世界最具影响力的操作系统之一。现代社会信息化,智能化,网络化发展迅速,嵌入式系统的发展空间也越来越大。从二十世纪九十年代起,嵌入式技术全面展开,发展到现在已成为通信,工业和消费类产品不可转变的共同发展方向。二十一世纪是信息化的社会,互联网的发展不可抑制,网络化是提高生产效率,保证产品质量,降低人工成本的有效方法。在工业工程控制,数字机床,电力系统,电网安全,石油化工系统等方面的发展,就离不开嵌入式系统,从老式的低端的八位单片机到如今以32位,64位处理器为核心的工业控制设备,足以让我们明白目前工业设备的发展是以嵌入式系统的发展为前提的。尤其在数控技术中,嵌入式LINUX数控系统完成了系统人机界面的开发,利用C语言完成了控制层面的开发。现在一些大型商场中的自动售货机早已进入人们的视野,居民出行方便省钱的公交卡,随处可见的智能ATM终端,各种超市商场的会员卡,这些卡伴随着嵌入式系统的发展在人们生活中发挥着越来越重要的作用,一卡在手走遍天下已不是遥不可及的梦想。嵌入式系统的市场是巨大的,嵌入式系统的应用几乎无处不在移动通信、数字办公、家电应用、交通运输、互动娱乐等无不有它的踪影。体积小、可靠性高、功能强、灵活方便等嵌入控制器独有的特点与优势,使其被广泛运用到教育、国防、工农业、科学研究以及日常生活等各个领域,对各行各业的技术进步、自动化发展、产品更换、提高生产率等方面起到了十分重要的促进作用。嵌入式系统作为人类青睐的系统工具,要想不被淘汰,只有吸引人们的目光,不断进步,给人类生活带来便利,打开新的消费市场,适应快速发展的社会状况。近几年我国对物联网行业发展的大力支持和相关产业发展的不断推动,使得具有高度智能化的电子产品的应用范围也因此而不断的扩大,从而使得更多的嵌入式产品也不断的进入到了我们日常的生产生活之中,这就标志着嵌入式系统也进入到了飞速发展的时期,其应用的规模也随之不断的扩大、在此种背景下,本文首先对当前我国各行业对嵌入式系统的概念及应用情况进行简单的介绍和讲解,然后对嵌入式系统未来的发展趋势进行研究,进而了解嵌入式系统在我国各行业的深入应用。第2页共38页12嵌入式系统概述什么是嵌入式系统嵌入式系统本身的定义比较模糊,小到、手机、智能、电子仪表等微型数字化产品,大到数字家电、车载卫星定位器以及一些工业控制设备等都可以称为嵌入式系统。根据国际电气和电子工程师协会的定义嵌入式系统是“用于控制、监视或者、辅助操作机器和设备的装置”,国内一般定义为“以应用为中心、以计算机技术为基础、软件硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。”嵌入式系统是电脑软件与硬件的综合体。也可以涵盖机械或其它的附属装置。硬件包括处理器微处理器、存储器及外设器件和拍端口、图形控制器等。软件部分包括操作系统软件要求实时和多任务操作和应用程序编程。这种系统具有软件代码小,高度智能化,响应速度快等特点,特别适合于要求实时的和多任务的体系。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为而操作系统控制着应用程序编程与硬件的交互作用。整个综合体设计的目的在于满足某种特殊功能。可以认为凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。图11HTTP/11协议的实现框架HTTP请求解析传递参数(HOST、PORTFORMURLFORM等)形成HTTP待发送数据建立基于SOCKET的网络连接发出HTTP请求,接收来自WEB服务器的数据解析接收的HTTP数据并进行相应的处理结束第3页共38页国际电气和电子工程师协会INSTITUTEOFELECTRICALANDELECTRONICSENGINEERS,IEEE曾给出了明确的定义“用于控制、监视或者辅助机器和设备操作的装置”DEVICESUSEDTOCONTROL,MONITORORASSISTTHEOPERATIONOFEQUIPMENT,MACHINERYORPLANTS。但随着技术的发展,当前则普遍认为其定义应为依附计算机相关技术作为核心技术,重在应用,软件与硬件可以根据需要裁减,灵活的适应系统对体积、功耗,成本与可靠性的要求。一般来讲,嵌入式系统由硬件层、中间层、软件层三个方面组成,而被控对象或者系统的执行机构主要接收系统发来的控制指令,完成所规定的任务,最终实现嵌入式系统所预定的工作。作为计算机系统技术的分支,嵌入式技术发展非常迅速,嵌入式控制器的应用几乎无处不在手持终端设备、智能家电、汽车电子等都能找到它的踪迹。由于其出色的性能,灵活的应用方式,以及体积功耗理想等特点,其对当今社会生产生活产生的影响是不可估量的。13LINUX的主要特性完全自由免费到目前为止,LINUX仍然是一种绝对免费的开放自由的操作系统,所有的使用者都可以通过其官方网站方便的下载获得其源码。并可在没有获得许可的情况下任意的修改其源码。这是其它操作系统所不可想象的。当然,也正是由于这一优势,来自全球各地的数以万计的程序员、操作系统爱好者参加了对LINUX内核的修改、编写与设计工作,程序爱好者可以根据自己的兴趣和灵感对其进行修改。这不但让LINUX的内核吸收了无数程序员大量的的精华,还避免了版权等诸多纷争风险的存在。完全兼容POSIX标准由于其支持POSIX标准,这使得用户可以在LINUX下通过相应的模拟器运行其它操作系统下开发的程序,如DOS、WINDOWS的程序。这为许多用户从WINDOWS操作系统过渡到LINUX操作系统提供了保障。当许多使用者在考虑LINUX操作系统时,就不必担心早先在WINDOWS操作系统下开发过的程序是否能在LINUX操作系统下正常运行了,这也是LINUX操作系统优势所在。多用户、多任务LINUX操作系统的另外一个特点就是对多用户的支持,通常不同的用户对于自己所使用的文件设备会有特殊的操作权利,为了保证各用户之间在使用上互不影响,LINUX操作系统采用了多用户的设计模式。多任务则是现在计算机操作系统的最重要的一个特点,LINUX操作系统可以使多个应用程序同时运行而相互之间没有影响。第4页共38页良好的界面LINUX操作系统不但带有字符界面而且还具有图形界面。在字符界面下,用户可以通过输入相应的操作指令对计算机操作。它还同时提供了具有与WINDOWS操作系统的图形界面非常相似的XWINDOW图形界面操作系统,用户除使用键盘外,还可以使用鼠标对计算机实时操作。由于在XWINDOW系统环境中的操作就和在WINDOWS操作系统中进行操作非常相似,因此可以说XWINDOW操作系统是一个LINUX版的WINDOWS操作系统。丰富的网络功能由于UNIX操作系统是在互联网的基础上发展而来的,作为其继承者,LINUX操作系统同样具有强大的网络功能。它的网络功能与其系统内核联系非常紧密,因此,在网络功能方面,LINUX操作系统明显强于其它的操作系统。在LINUX操作系统中,用户可以轻松实现对网页的浏览、传输各类文件、以及远程登陆计算机等网络功能。另外基于其强大的网络功能,LINUX操作系统通常用来作为服务器提供WWW、FTP、EMAIL等服务。高安全、可靠、稳定性能LINUX操作系统采取了许多安全技术第二章系统涉及到的关键技术措施,其中主要包括对用户读写权限控制、审核跟踪、严格的用户授权机制,这些措施都为系统的安全提供了必要地保障。许多情况下,由于其出色的稳定性,LINUX操作系统被作为网络服务器使用。支持多种平台目前,LINUX操作系统可以运行非常多的硬件平台之上,例如X86、ARM,AVR等架构的处理器。另外LINUX还是一种嵌入式操作系统,它可以应用在手机、数码相机、电视机顶盒、游戏机等数码设备上。2001年1月开始发布的LINUX24版内核系统已经实现了对INTEL64位芯片架构的支持。同时LINUX操作系统还对多处理器具有很好的支持。当系统采用多个处理器同时工作时,其性能将大大的提高。14嵌入式WEB服务器通俗来讲,WEB服务器可以认为是一种存在于因特网上某种特定类型的计算机应用程序。当有WEB浏览器客户端连接到WEB服务器IP地址并请求访问文件时,WEB服务器便会把存放在本地计算机上的相关文件发送至来访的浏览器,并通过附带信息的方式告知浏览器如何浏览相关文件。目前,WEB服务器进行文件通信时使用的是超文本传输协议HYPERTEXTTRANSFERPROTOCOL,HTTP。因此,也可称其为HTTP服第5页共38页务器。除了存储被访问的数据文件之外,WEB服务器还可以与客户端进行交互,并运行相关的脚本程序。这些程序或者脚本一般称之为通用网关接口COMMONCATEWAYINTERFACE,CGI。WEB服务器可驻留于各种类型的计算机,从常见的PC机到巨型的UNIX网络服务器,以及其它各种类型的计算机。但在嵌入式系统中,由于资源有限,一般使用体积较小的WEB服务器,其中多为单任务服务器,例如BOA。系统中WEB服务器采用的就是BOA。通常是在远程机器上,负责对浏览器页面请求作出响应,返回HTML编码或类似的数据流。通俗的讲,WEB服务器传送SERVES页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用CALL的方法METHODS。确切一点,你可以说WEB服务器专门处理HTTP请求REQUEST,但是应用程序服务器是通过很多协议来为应用程序提供SERVES商业逻辑BUSINESSLOGIC。随着INTERNET技术的兴起,在嵌入式设备的管理与交互中,基于WEB方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S结构,即在嵌入式设备上运行一个支持脚本或CGI功能的WEB服务器,能够生成动态页面,在用户端只需要通过WEB浏览器就可以对嵌入式设备进行管理和监控,非常方便实用。第6页共38页第二章HTTP协议简介21HTTP协议基础INTERNET使用的基本协议是TCP/IP协议,在TCP/IP协议模型最上层的是应用层,它包含所有高层的协议。高层协议有文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。2HTTPHYPERTEXTTRANSFERPROTOCOL协议,即超文本传输协议,是用于WWW服务器与本地浏览器进行超文本传输传送的协议。它可以使浏览器与WEB服务器通过互联网,更加高效使传输网络信息,并使之成为标准化。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分以及哪部分内容首先显示如文本先于图形等。由于HTTP协议是基于请求/响应范式的相当于客户机/服务器。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为统一资源标识符URL、协议版本号后边是MIME信息包括请求修饰符、客户机信息等内容。服务器在接收到请求后,给予相应的响应信息。其格式为一个状态行(包括信息的协议版本号、一个成功或错误的代码),后边是MIME信息包括服务器信息、实体信息和其他的一些内容。许多HTTP通讯是由一个用户代理初始化的,并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和服务器之间通过一个单独的连接来完成。在INTERNET上HTTP通讯经常发生在TCP/IP连接之上。其缺省端口是TCP协议的80端口,当然,其它的端口也是可以使用的。但这并不预示着HTTP协议在INTERNET或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。HTTP协议的内部操作过程大致如下,在WWW中“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即某个计算机在某个连接中的可能是客户机,而在另一个连接中可能作为服务器。基于HTTP协议的客户/服务器模式的信息交换过程它分四个过程建立连接、发送请求信息、发送响应信息、关闭连接。其实简单说,就是任何服务器除了包括HTML文件以外,还有一个HTTP协议驻留程序用于响应用户请求。浏览器是HTTP协议客户机,当浏览器向服务器发送请求,在浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求后,第7页共38页进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包PACKET,每个数据包包括要传送的数据;控制信息(即告诉网络怎样处理数据包)。TCP/IP协议决定了每个数据包的格式。HTTP请求和HTTP响应都使用头发送有关HTTP协议消息的信息。头由一系列行组成,每行都包含名称,然后依次是冒号、空格、值。字段可按任何顺序排列。某些头字段既能用于请求头也能用于响应头,而另一些头字段只能用于其中之一。许多请求头字段都允许客户端指定多个可接受的选项,有时甚至可以对这些选项的首选项进行排名,多个项以逗号分隔。所有请求行后面的内容都是头的一部分。紧接着头之后是一个空行,表示头已结束。WEB服务器可以通过多种方式响应前一个请求。22HTTP协议的运作过程当一个或多个中介出现在请求响应链中时,HTTP协议的运作情况就变得比较复杂。中介由三种代理PROXY、网关GATEWAY和通道TUNNEL。一个代理根据URL的绝对格式来接受请求,重写全部或部分消息,通过URL的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介例如防火墙等或者是中介不能识别消息的内容时,通道经常被使用。简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。首先,简单介绍基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。WWW服务器运行时,一直在TCP80端口WWW的缺省端口监听,等待连接的出现。下面,讨论HTTP协议下客户/服务器模式中信息交换的实现。1建立连接连接的建立是通过申请套接字SOCKET实现的。客户打开一个套接字并把它绑定在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。2发送请求打开一个连接后,客户机把请求消息送到服务器的特定端口上,完成提出请求动第8页共38页作。HTTP/10请求消息的格式为请求消息请求行通用信息|请求头|实体头CRLF实体内容请求行方法请求URLHTTP版本号CRLF方法GET|HEAD|POST|扩展方法URL协议名称宿主名目录与文件名请求行中的方法描述指定资源中应该执行的动作,常用的方法有GET、HEAD和POST。不同的请求对象对应GET的结果是不同的,对应关系如下对象GET的结果文件文件的内容程序该程序的执行结果数据库查询查询结果HEAD要求服务器查找某对象的元信息,而不是对象本身。POST从客户机向服务器传送数据,在要求服务器和CGI做进一步处理时会用到POST方法。POST主要用于发送HTML文本中FORM的内容,让CGI程序处理。头信息又称为元信息,即信息的信息,利用元信息可以实现有条件的请求或应答。请求头告诉服务器怎样解释本次请求,主要包括用户可以接受的数据类型、压缩方法和语言等。实体头实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。实体请求或应答对象本身。3发送响应服务器在处理完客户的请求之后,要向客户机发送响应消息。HTTP/10的响应消息格式如下响应消息状态行通用信息头|响应头|实体头CRLF实体内容状态行HTTP版本号状态码原因叙述状态码表示响应类型1保留2表示请求成功地接收3为完成请求客户需进一步细化请求第9页共38页4客户错误5服务器错误响应头的信息包括服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用。4关闭连接客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话。23HTTP协议的工作模式及特点HTTP协议是一种用于分布式、合作式的多媒体信息系统的应用层协议,它在1990年WWW全球信息刚刚起步的时候就得到了应用。HTTP协议是一种请求/响应协议,在与主机建立连接后,客户以请求方法、URI和协议版本的形式向服务器发送请求,随后是类MIME信息(包括请求修改,客户信息和可能的正文内容)。服务器用包括消息协议版本和一个成功或错误代码的状态行进行应答,随后也是类MIME信息(包括服务器信息,实体维护信息和可能的实体内容)。HTTP通信通常发生在TCP连接上,虽然TCP是面向连接的传输层协议,但HTTP本身是一个无连接的协议,其无连接性表现在每一次请求和相应完成后,该连接就自动断开,解决此问题的方法可以通过在网页中加入刷新机制,使网页不断请求连接服务器。HTTP通信的默认端口是80,不过其它端口也可以使用。在互联网或其他网络上,这并不妨碍HTTP应用在其他协议的顶端。仅仅期望可靠的传输,任何能提供这种保证的协议都可以使用。在基于HTTP协议的客户/服务器数据交换时,当HTTP请求产生时,就开始一次HTTP通信,过程如下浏览器提取出URL中的主机后,向DNS发出请求,解析主机名的IP地址;DNS解析地址并将结果返回给浏览器;浏览器向该地址请求建立TCP连接;浏览器发出请求报文;服务器向浏览器发送响应报文,并将指定数据发送给浏览器;断开连接。第10页共38页第三章设计思想31系统总体设计通过软件需求分析来确定软件系统开发目标、需求规格。总体设计的任务是解决怎么做,实现将需求规格转换为体系结构并划分程序的模块组成,以及模块间的相互联系。确定系统的数据结构,即组成系统的元素、程序、文件文档等,但是每一个物理元素仍然是黑盒子状态。软件结构反映系统中模块的相互调用关系顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,最下层的模块完成最具体的功能。当数据流图细化到适当的层次,则可以直接从数据流图映射出软件结构。设计出软件的初步结构以后,应通过模块分解或合并审查,力求降低耦合提高内聚。模块的划分要符合独立性原则。模块接口复杂是软件发生错误的一个主要原因,应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。详细通讯过程见附录。311系统的结构图说明主程序模块客户连接处理分析客户请求协议发送TEXT文件发送JPEG文件发送GIF文件发送HTML文件发送目录信息发送协议数据头第11页共38页图31系统结构图主程序服务端程序开始运行时,主进程就创建一个套接口,并和主机地址及端口绑定到一起,随后置为被动监听状态,等待客户端连接请求的到来。一旦接收了一个连接,ACCEPT会返回一个新的套接口描述符,主进程则创建一个新的子进程来处理这个新的连接,这样系统可以同时接受最多5个客户端来的请求。建立TCP类型SOCKE在80端口进行监听连接请求。接收到连接请求将请求传送给连接处理模块处理。并继续进行监听。312功能分配发送当前目录文件列表信息将服务器当前目录下所有文件的信息发送给客户端信息包括文件名、大小、日期。发送HTML类型文件将客户请求的HTML类型文件发送给客户。发送纯文本文件将客户请求的纯文本发送给客户。发送JPG图像文件将客户请求的JPG图像文件发送给客户。发送GIF图像文件将客户请求的GIF图像文件发送给客户。解析客户请求HTTP协议头分析客户的请求包括1空格处理2解析客户请求命令3解析客户请求的资源名4解析客户请求的资源类型。第12页共38页客户连接处理解析REFERRER和CONTENT_LENGTH字段值并调用客户请求解析函数。发送HTTP协议数据头根据发送文件类型发送相应的HTTP协议头信息。332详细设计321主程序设计功能说明系统的总入口也是系统的主要控制函数。分别完成如下功能建立环境设置。设置信号处理方式。建立侦听TCP流方式SOCKET并绑定80端口。建立连接侦听及客户连接处理调用主循环。该系统基于TCP/IP的套接口通信,具体的消息处理遵循HTTP协议,服务端程序的工作状态如下图。设置信号处理句柄进入根目录客户请求处理设置最大连接数5客户主程序参数处理建立SOCKET,并绑定到80端口监听客户连接第13页共38页图33主程序流程图图32主进程与线程322客户请求连接处理模块设计功能说明当用户的请求达到HTTP服务端程序的时候,通过客户连接处理模块来初步处理客户的连接请求,并将请求信息传递给客户请求解析函数处理。算法描述建立文件描述符读取客户端程序的连接信息获取REFFERER字段信息获取内容字长字段信息主进程线程1线程2线程线程5第14页共38页调用客户请求解析子程序关闭文件流图34客户请求连接处理模块NS盒图323客户请求解析处理模块设计功能说明用于解析客户的请求并根据请求信息调用相应的函数进行请求处理。开始对的请求字符串进行处理请求资源在请求目录判断请求文件类型送目录信息结束JPEG协议头IMAGE/JPEGGIF协议头IMAGE/GIFHTML协议头TEXT/HTMLTEXT协议头TEXT/PLAIN发送INDEXHTMINDEXHTM第15页共38页图35客户请求解析处理模块的流程图324发送HTTP协议数据头模块设计功能说明根据客户浏览器请求的不同参数,发送不同的HTTP协议头信息。发送成功信息CASE内容类型TGJH发送纯文本的相应信息发送GIF的相应信息发送JPEG的相应信息发送HTML的相应信息图36协议数据头模块的NS盒图至此,系统的软件设计部分已经完成,下一阶段的工作就是根据系统的详细设计,实现各模块的编程,以及将各个模块组装成一个完整的系统。33程序设计需求分析第16页共38页嵌入式系统中服务器的实现方法主要有两种目标嵌入式系统设备使用嵌入式操作系统和目标嵌入式系统设备不使用操作系统。本课题采用EOS的服务端功能的程序实现。4在低端嵌入式设备上实现HTTP服务端功能的程序,要根据该系统对HTTP服务的功能需求简化HTTP协议的一些机制,在资源有限的情况下设计满足需求的嵌入式HTTP服务端程序。图37嵌入式HTTP服务端程序的原理需求分析的结果是系统开发的基础,关系到系统开发的整过过程,以及软件的成败和质量。嵌入式系统的特点决定了系统在开发初期的需求分析过程中就要完成的任务在需求分析阶段需要分析客户需求,包括功能需求、数据流图以及系统地数据要求发送HTTP服务端相应头从标准输入中接受浏览器的字符初始化网络端口把缓冲区中的字符串标记成HTML将从端口接受的字符串送缓冲区发送HTML到客户端浏览器结束第17页共38页等。1、功能要求在嵌入式系统中实现HTTP(服务端)的程序,在客户端向服务端发出请求,时将服务器当前目录下所有文件的信息发送给客户端信息包括文件名、大小、日期;获取指定的文件,并解析文件类型(HTML、TXT、JPG、GIF等文件);响应客户端程序的要求,析客户的请求将请求信息解析为几个变量包括请求的命令、请求的文件名、请求的文件类型。2、系统的数据流分析数据流图(DATAFLOWDIAGRAM,简称DFD)图38系统数据流图2监听请求客户端浏览器11监听请求13监听请求12监听请求客户端浏览器I资源数据事务事务事务事务请求的资源第18页共38页、第四章程序实现41主程序实现的主要思想主进程(HTTP服务端程序)开始运行时,主进程就创建一个套接口,并和主机地址绑定到一起,随后置为被动监听状态,等待客户端连接请求的到来。一旦接收了一个连接,ACCEPT会返回一个新的套接口描述符,5主进程则开辟一个新的子进程来处理这个新的连接,这样系统可以同时接受多个客户端来的请求。具体如下INTSOCKETINTFAMILY,INTTYPE,INTPROTOCOL;FAMILY一般为AF_INET,代表INTERNET(TCP/IP)地址族;TYPE参数指定SOCKET的类型SOCK_STREAM或SOCK_DGRAM;PROTOCOL通常赋值“0“。该函数用来创建一个套接口,并返回一个短整数的套接口描述符,可以在后面的程序中调用使用它。SOCKET描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用SOCKET函数时,SOCKET执行体将建立一个SOCKET,实际上“建立一个SOCKET”意味着为一个SOCKET数据结构分配存储空间。SOCKET执行体为你管理描述符表。BIND函数将SOCKET与本机上的一个端口相关联,随后可以在该端口监听服务请求。BIND函数原型为INTBINDINTSOCKFD,STRUCTSOCKADDRMY_ADDR,INTADDRLEN;SOCKFD是调用SOCKET函数返回的SOCKET描述符,MY_ADDR是一个指向包含有本机IP地址及端口号等信息的SOCKADDR类型的指针;ADDRLEN常被设置为SIZEOFSTRUCTSOCKADDR。BIND函数在成功被调用时返回0;出现错误时返回“1“并将ERRNO置为相应的错误号。LISTEN函数使SOCKET处于被动的监听模式,并为该SOCKET建立一个输入数据队第19页共38页列,将到达的服务请求保存在此队列中,直到程序处理它们。INTLISTENINTSOCKFD,INTBACKLOG;SOCKFD是SOCKET系统调用返回的SOCKET描述符;BACKLOG指定在请求队列中允许的最大请求数,进入的连接请求将在队列中等待ACCEPT它们。BACKLOG对队列中等待服务的请求的数目进行了限制,大多数系统缺省值为20。如果一个服务请求到来时,输入队列已满,该SOCKET将拒绝连接请求,客户将收到一个出错信息。当出现错误时LISTEN函数返回1,并置相应的ERRNO错误码。ACCEPT函数让服务器接收客户的连接请求。在建立好输入队列后,服务器就调用ACCEPT函数,然后睡眠并等待客户的连接请求。INTACCEPTINTSOCKFD,VOIDADDR,INTADDRLENSOCKFD是被监听的SOCKET描述符,ADDR通常是一个指向SOCKADDR_IN变量的指针,该变量用来存放提出连接请求服务的主机的信息(某台主机从某个端口发出该请求);ADDRTEN通常为一个指向值为SIZEOFSTRUCTSOCKADDR_IN的整型指针变量。出现错误时ACCEPT函数返回1并置相应的ERRNO值。当ACCEPT函数监视的SOCKET收到连接请求时,SOCKET执行体将建立一个新的SOCKET,执行体将这个新SOCKET和请求连接进程的地址联系起来,收到服务请求的初始SOCKET仍可以继续在以前的SOCKET上监听,同时可以在新的SOCKET描述符上进行数据传输操作。线程用来处理每个具体请求,线程中主要由几个处理模块组成通用函数模块、静态文本处理模块、CGI模块和出错处理。42几个主要函数的名称及相关参数说明COPY函数函数名INTCOPYFILEREAD_F,FILEWRITE_F参数1文件流FILE结构指针用于表示读文件流指针。参数2文件流FILE结构指针用于表示写文件流指针。客户连接处理函数名INTHANDLECONNECTINTFD参数客户连接文件描述字解析客户请求函数名INTPARSECLIREQFILEFILE_POINTER,CHARRHTTP参数1文件流FILE结构指针用于表示客户连接的文件流指针。第20页共38页参数2字符串指针待解析的字符串。发送HTTP协议数据头函数名INTSENDHEADERFILEFILE_POINTER,INTCONTENT_TYPE参数1文件流FILE结构指针用于表示客户连接的文件流指针。用于写入HTTP协议数据头信息。参数2信息类型用于确定发送的HTTP协议数据头信息。发送当前目录文件列表信息函数名INTHANDLEDIRECTORYFILEFILE_POINTER,CHARNAME参数1文件流FILE结构指针用于表示客户连接的文件流指针。用于写入目录文件信息数据。参数2目录名表示客户请求的目录信息。发送HTML文件内容函数名INTHANDLEHTMLFILEFILE_POINTER,CHARNAME参数1文件流FILE结构指针用于表示客户连接的文件流指针。用于写入文件信息数据。参数2客户浏览器请求的文件名。43系统程序(函数)源码由于函数的代码所占篇幅较大,请参照附录里的源程序。第21页共38页第五章嵌入式WEB服务器的实现51WEB服务器的模块框图一个嵌入式服务器基于开发,6主要由如下一些模块组成初始化模块、侦听模块、请求解析模块、脚本引擎模块、输出模块、命令模块。图51WEB服务器的模块框图“初始化模块用于定义变量、设置信号量、创建、将与本地地址和端口绑定,并设置处理侦听状态。侦听模块在接收一个连接请求后,读取用户的请求,进行处理,静态文本带参数的命令L动态文本初始化侦听客户请求解析客户请求字符串脚本引擎模块命令执行模块输出第22页共38页再交给解析模块进行解析。请求解析模块是服务器的核心所在,根据用户的请求,进行相应的处理。当请求为带参数的执行命令时,请求解析器调用命令执行模块分析命令并控制监控前端;当请求为静态文本时,文档直接提交输出模块输出请求为动态文本时,请求解析模块自动调动脚本引擎模块,将脚本替换为现场数据,再提交输出模块输出。”因为嵌入式系统资源通常比较有限,并且一般不需要同时处理很多用户的请求,所以不需要使用等服务器,而那些专门为嵌入式设备设计的服务器则是不错的选择,这些服务器运行时所占有的内存空间和其本身的存空间都不大,非常适合嵌入式应用场合。52介绍常见的嵌入式服务器主要有LIGHTTPD、THTTPD、SHTTPD和BOA等等,下面分别做简要介绍。1THTTPDTHTTPD是一个轻量级的SERVER,它非常小巧,极为简单,只提供了HTTP/11和简单的CGI支持。此外,THTTPD和LIGHTTPD比较类似,对于并发请求采用多路复用(MULIPLEX技术来实现,而不使用FORK来派生子进程处理,所以效能很好。THTTPD支持多种平台,比如SOLARIS、FREEBSD、SUNOS、BSD、LINUX、OSF等。对小型的WEBSERVER来说,高速度是必然的,至少THTTPD和主流的WEBSERVER一样快,因为其资源占用小的缘故甚至在高负载的情况下更快。THTTPD还有一个相当显著的特点基于的文件流量限制,这对于下载的流量控制而言是非常方便的。而则必须使用插件来实现,效率比THTTPD低。2LIGHTTPDLIGHTTPD是一个幵源软件,它是专门针对高性能网站开发的,根本的目的是提供一个快速、安全、兼容性好并且灵活的WEBSERVER环境,具有丰富的模块,极低的内存开销,效能好,CPU占用拿低等特点。LIGHTTPD是众多OPENSOURCE轻量级的WEBSERVER中较为优秀的一个。支持CGI、FASTCGI、AUTH、输出压缩(OUTPUTCOMPRESS、ALIAS、URL重写等许多重要的功能,而APACHE之所以流行,很大程度也是因为功能丰富,在上LIGHTTPD很多功能都有相应的实现了,这点对于APACH的用户是非常重要的,因为移植LIGHTTPD到就必须面对这些问题。3SHTTPD第23页共38页SHTTPD是另一个轻量级的WEBSERVER,具有比THTTPD更丰富的功能特性,支持CGI、SSL、COOKIE、MD5认证,还能嵌入EMBEDDED到现有的软件里,而且不需要配置文件。由于SHTTPD可以嵌入其他软件,因此可以非常容易的开发嵌入式系统的WEBSERVER官方网站上称SHTTPD如果使用UCLIBC/DIELIBCLIBC的简化子集则开销将非常非常低。4BOABOA的可执行代码大约只有60KB,是一个很小巧的WEBSERVER。它是一个单任务的WEB服务器,对于并发连接请求它不会FORK出新的进程来处理,而只能依次完成用户的请求。但BOA支持CGI,能够为CGI程序FORK出一个进程来执行。BOA的设计目标是速度和安全,它的性能要好于服务器,并且非常适合于嵌入式系统。为了实现动态WEB技术,本文也正是采用了BOA。第六章测试与固化61测试首先,进行单元测试,又称模块测试,是针对软件设计的最小单位程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块平行地独立进行单元测试。在单元测试的开始,通过被测模块的数据流进行测试。7测试项目包括1调用本模块的输入参数是否正确;2本模块调用子模块时输入给子模块的参数是否正确;3全局量的定义在各模块中是否一致。模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。其次,在单元测试的完成之后,将所有模块按照设计要求组装成为系统。主要考虑的问题是1在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;2一个模块的功能是否会对另一个模块的功能产生不利的影响。将模块按系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年网络管理员考试指南与试题及答案
- 敏捷开发概念与实践试题及答案
- 考虑可访问性的设计原则试题及答案
- 2025年敏捷开发实战试题及答案
- 法学概论复习方法大公开试题及答案
- 2025年中国钢结构防火门市场调查研究报告
- 行政法学相关性试题及答案解答
- 2025年中国铜质合页市场调查研究报告
- 2025年中国铁直通接头市场调查研究报告
- 2025年中国钙块市场调查研究报告
- 取水泵站施工方案
- 医疗纠纷应急处置预案
- (新教材)细胞核是细胞生命活动的控制中心(公开课)课件
- 教师职业道德与专业发展智慧树知到课后章节答案2023年下山东师范大学
- 企业安全生产风险辨识评估管控指导手册-危险货物储罐仓储
- 监控立杆基础国家标准
- 大病历体格检查-系统回顾(精简版)
- 济南出入境检验检疫局国际旅行卫生保健中心
- 黑土地知识科学普及-黑土地保护法宣贯课件
- 毛尖茶叶批生产记录汇总
- 维修电工求职简历
评论
0/150
提交评论