(计算机软件与理论专业论文)基于skyeye和uclinux的轻量级web服务器的设计与实现.pdf_第1页
(计算机软件与理论专业论文)基于skyeye和uclinux的轻量级web服务器的设计与实现.pdf_第2页
(计算机软件与理论专业论文)基于skyeye和uclinux的轻量级web服务器的设计与实现.pdf_第3页
(计算机软件与理论专业论文)基于skyeye和uclinux的轻量级web服务器的设计与实现.pdf_第4页
(计算机软件与理论专业论文)基于skyeye和uclinux的轻量级web服务器的设计与实现.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

(计算机软件与理论专业论文)基于skyeye和uclinux的轻量级web服务器的设计与实现.pdf.pdf 免费下载

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

文档简介

基于s k y e y e 和u c l i n u x 的轻量级w e b 服务器的设计与实现 摘要 摘要 随着嵌入式i n t e m e t 的发展,嵌入式w e b 服务器已被越来越广泛的应用到信息家 电、网络视频监控、工业自动化等领域。嵌入式w e b 服务器也逐步成为嵌入式研究 领域的一个热点。开源项目s k y e y e 实现了对硬件平台的模拟,给缺少硬件开发环境 的人员提供了更广泛的嵌入式开发的途径。本文正是在s k y e y e 这一模拟平台下,通 过对国外一些开源嵌入式h t t p 服务器如b o a ,m i n ih t t p d 的分析和研究,设计和实 现了基于u c l i n u x 嵌入式操作系统的w e b 服务器- - p a n d o w d y 。相对于b o a 、m i n ih a p d 的基本认证,本系统实现了更为安全可靠的摘要认证。目前基于s k y e y e 所开发的应 用比较少,本系统的开发成功将给应用s k y e y e 平台开发的人员提供一个借鉴。 本文首先提出了p a n d o w d yw e b 服务器的设计目标和整体设计框架,在此基础上 具体阐述了h t t p 协议、c g i 、摘要认证在本系统中的实现,然后详细介绍了系统从 宿主机的r e d t t a t 到s k y e y e 模拟平台上运行的u c l i n u x 的移植。本文最后实现了 p a n d o w d yw e b 服务器在一a d s l 宽带路由器中的应用。 关键词:嵌入式i n t e m e t s k y e y ew e b 服务器摘要认证 u c l i n u x 作者:陆萍 指导教师:徐汀荣 a b s t r a c t a l o n gw i mt h ed e v e l o p m e n to fe m b e d d e di n t e m e t , e m b e d d e dw e bs e r v e r s a r e d e p l o y i n gi n t oi n f o r m a t i o ne l e c t r i c ,n e t w o r kv i d e om o n i t o r i n g d e v i c e sa n di n d u s t r i a l a u t o m a t i o nf i e l dd e e p l nw h i c hm a k e se m b e d d e dw e bs e r v e rb e c o m ea na c t i v er e s e a r c h f i e l d s k y e y ei s a no p e ns o u r c ep r o j e c t i ts i m u l a t e se m b e d d e dh a r d w a r ea n dp r o v i d e sa n e ww a yt oe m b e d d e da p p l i c a t i o nd e v e l o p e r s ,e s p e c i a l l yw h oa r el a c ko fh a r d w a r e t h e p a p e rf i r s ta n a l y s e ss o m eo p e ns o u r c ew e bs e r v e r ss u c ha sb o aa n dm i n ih t t n ,a n dt h e n d e s i g n sa n di m p l e m e n t saw e bs e r v e r p a n d o w d y , b a s e do ns k y e y ea n du c l i n u x c o m p a r i n gt on l cb a s i ca u t h o r i z a t i o no f b o aa n dm i n ih t t p d p a n d o w d yi m p l e m e n t s am o r e s e c u r ea u t h o r i z a t i o n m e t h o d :d i g e s ta u t h o r i z a t i o n a s t h e r eh a v e b e e no n l yaf e w a p p l i c a t i o n sb a s e do ns k y e y ea tp r e s e n t ,d e v e l o p e r sc a r ll e a r nf o r mp a n d o w d y ss u c c e s s f u l e x p e r i e n c ea n dd e v e l o pt h e i ro w na p p l i c a t i o n sb a s e do ns k y e y e i nt h eb e g i n n i n g ,t h ep a p e rp u t sf o r w a r dt h e s y s t e m sd e s i g no b j e c t sa n dt h e n i m p l e m e n t sh t t pp r o t o c o l ,c g i ,d i g e s ta u t h e n t i c a t i o n f u n c t i o n s a tl a s t , t h e p a p e r i n t r o d u c e st h ep r o c e s so fm i g r a t i n gp a n d o w d yf r o mr e d h a tl i n u xt ou c l i n u x ,r u n n i n go n s k y e y e t h ep a p e ra l s oa p p l i e sp a n d o w d yw e bs e r v e rt oa d s lh o m er o u t e rf o rr o u t e m a n a g e m e n tb a s e do nw e b k e y w o r d s :e m b e d d e di n t e m e t ,s k y e y e ,w e bs e r v e r , d i g e s ta u t h e n t i c a t i o n ,u c l i n u x w r i t t e nb yl up i n g s u p e r v i s e db yx ut i n gr o n g 苏州大学学位论文独创性声明及使用授权声明 学位论文独翻鳇声暖 零人勰重声载:濒强交豹攀位论文嫩零入程导努貔籀导下,毯立逡行舔究王馋黢 取得的成果。除文中已经注硬弓i 用的内餐外,本论文不舍其他个人或集体已经发表或 撰写避的研究成栗,也不含为获得苏州大学或其它教育机构的掌位证书而使用道的树 糕。对本文懿磷突俸出整要羹熬弱令人鼗集体。鸷已森文中以鞠确方戏振羁。零入最 担本声明的法律责任。 谚 究生蕊名:建鸯 掰期: 垒因 学位论文使用授权声弼 苏州大学、中国科学技术信息研究所、圉家图书馆、清华大学论文合作部、中国 李主瓣酸文麸接患情报孛,貉寿投保餐本人掰送蹙学位论文羽复印耱裁l 电擎文摆,弼戳采 糟影印、缩印绒其他复制手段保存论文。本人电子文档的内容张纸质论文的内容相一 致。除在保密潮内的保密论文外,允许论文梭瘴阅和储阅,可以公布( 包括刊登) 论 文豹全部或部分内容。论文的公布( 包括列登) 授权苏煳大学学位办办理。 研究生熊名: 导师签名 基于s k y e y e 和u c l i n u x 的轻量扭w e b 服务器的设计与实现 第一章前言 第一章前言 1 1 课题的研究背景 1 1 1嵌入式i n t e r n e t 的发展 后p c 时代的到来引发了嵌入式系统的产生,人们很少会意识到自己随身携带了 好几个嵌入式系统智能手机、智能手表或者智能卡,而且人们在与汽车、电梯、 厨房设备、电视、录像机以及娱乐系统的嵌入式系统交互时也往往对此毫无觉察。 通常,多于一台电脑的家庭会选择一台低端的宽带路由器来连接a d s lm o d e m 和家庭计算机网络。这样,每一台电脑都可以方便的接入因特网,这里所用的宽带路 由器通常就是一个嵌入式的系统。以上的例子是嵌入式系统在家庭中的应用。实际上, 从嵌入式系统发展的历程来看,促使嵌入式系统出现并发展是在工业控制、仪器仪表 等领域。 虽然嵌入式系统的应用越来越广泛,但是对它的定义却没有一个公认的标准。通 常人们认为嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪, 适用于应用系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统 【”。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序 等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。图1 1 为嵌入式 系统的结构图。 图1 1嵌入式系统结构图 嵌入式系统的开发人员逐渐发现,嵌入式系统就象是一个密封的盒子,缺少和人 l 第一章前言 基于s k y e y e 和u c l i n u x 的轻量级w e b 服务器的设计与实现 交互的界面。大多数的嵌入式的系统没有图形接口( i n t e r f a c e ) ,用户不能象在p c 上 一样非常直观的去设置系统运行的参数,监视系统运行的状态。或许这对于有经验的 开发人员还不算什么,因为他们可以通过t e l n e t 、f t p 等方式连接到设备中。然而对 于设备的使用者,w i n d o w s 操作系统以先入为主的优势让他们以为什么操作只要通过 点击图标就可以了,而让他们通过t e l n e t 去访问设备并以命令行方式设置或查看设备 参数无疑是比较困难的。因此迫切需要在嵌入式设备和用户之间架起一座桥梁。 幸运的是,i n t e r n e t 这一技术可以被引入到嵌入式设备中来,形成嵌入式i n t e m e t 。 与早期的嵌入式设备相比,由于目前的嵌入式操作系统上大都可以移植实现t c p i p 协议栈,因此嵌入式设备连接入i n t e m e t 比以前来得容易。图1 2 为嵌入式设备接入 i n t e m e t 连接示意图。 图1 2嵌入式设备接入i n t e m e t 示意图 通俗的说,嵌入式的i n t e m e t 使得终端用户可以通过浏览器( 通常是m 或者 f i r e f o x ) 来和嵌入式设备交互。用户可以通过静态或者动态h t m l 页面来查看目前 设备的状态,以及设置设备运行参数。用户访问嵌入式设备就象访问因特网上的一个 w e b 站点,非常直观。这给用户带来了巨大的方便,同时也促进了嵌入式系统的应用。 1 1 2嵌入式i n t e r n e t 目前存在的问题 嵌入式i n t e r a c t 在给用户带来方便的同时,也对系统开发人员提出了要求,首要 的一点就是要在嵌入式系统中部署一个w e b 服务器来对用户的请求做出响应。虽然 已经有a p a c h e 这样优秀的开源软件,但是嵌入式系统的系统资源不足以来运行 a p a c h e ,因此嵌入式系统的开发人员必须另外开发一个适合于嵌入式设备的w e b 服 2 基于s k y c y e 和u c l i n u x 的轻量蔽w e b 微务器盍搴霞计与赛珑 第一章前害 务器。国外这方丽的研究做的比较多,如开发人员将b o a 、m i n ih t t p d 、h t t p d 等l i n u x 下我簌传移接戮了嵌入式搡髂系统u c l i n u x 孛,两国内澎没有类戗鳇嚣源软佟。我们 语楚要通过这一课题,来实现一个可以在u c l i n u x 中使翔的开源的w e b 服务器。 另外,嵌入式的i n t e m e t 也对安全性提出了要求。狂嵌入式设备中,有一些资源 势零是每令人郝魏访阉斡,程楚昃有授权戆怒户才能谤瓣。困憩,瑕务器需要对客户 进行验证。在秘前移植到u c l i n u x 的w e b 服务器软件中,b o a 、m i n ih t t p d 只提儆了 基本认证功能,h 钍p d 则不包禽认证功能。识是由于基本认证采取b a s e 6 4 编码来加密 弱声懿塞毽,瓣b a s e 6 4 绽磷建一穆广泛霞蘑鹣编码方式,它教蜒璐疆廖篷擐容易获 得因此任何入都可能对口令进行窃取并解码,系统安全性不高。针对这个问题本文 采取了摘要认诚来实现客户端的认证功能。 1 1 3嵌入戎系统开发襁学者面旗媳难嚣 嵌入式系统都是基于一定的硬件,_ 葶n 常见的x 8 6 结构的处理器不同,他们的处 璞貔力程对较羁,俸积较拳,始嚣稳建一块并发援戒免嵌入式并发乏蔫靛一令难赢。 虽然厂家掇供了很多的汗发板可以选用,但是一块主流的开发扳的价格在千元庭 卷,这个给戆学习嵌入式系统开发的人员设置了个门槛。予是,就出现了 g d b a r m u l a t o r 这一a r mc p u 靛模攮嚣,丽渍肇大学豹麟士螽陈臻叉在 g d b a r a m u l a t o r 的基础上开发了s k y e y e 硬件模拟平台,宝可以模拟众多开发板以及 瞬络劝裁。有了s k y e y e 硬停模羧平台,扔学者就可以在缺乏硬件静馈况下来学习嵌 入溅系统开发,遮客疆上降低了嵌入式稽缴入门的门撩。 然而有了s k y e y e 硬件模拟平台以后,并不是所有的问题都已经解决了。s k y e y e 虽然是一个毙较耋 瓣嵌入式磺l 零豹模拟嚣,毽秘学者遴豢只是基于s k y e y e 硬俘模拟 平静安装运行一魏嵌入式操作系统,使蔫它来进行嵌入斌开发的实黼应用还比较少。 因此,初学者不知道如何基于s k y e y e 来进行嵌入式的系统开发。本文可以为基于 s k y e y e 送行应趱开发提供一个寨爨,可塔为怒学习嵌入式开发恧又缺少开发板戆入 员提供一个借鉴。 第一幸前言 基于s k y e y e 和u c l i n u x 的轻量级w e b 服务器的设计与实现 1 2本文所做的工作和意义 本文基于s k y e y e 硬件模拟平台和u c l i n u x 开发了嵌入式的w e b 服务器,取名叫 p a n d o w d y 。本文的所做的工作和意义在于: ( 1 ) 比较和分析了s k y e y e 模拟的各类主要开发板和目前较为流行的嵌入式操 作系统的优缺点,选出了适合于本文的硬件和操作系统:s k y e y e 硬件模 拟平台模拟的a t 9 1 开发板和u c l i n u x 。 研读和分析了r f c 2 6 1 6 所定义的h t t p1 1 协议,实现了h 丌p 协议的基 本功能。 分析了b o a 、m i n ih t t p d 的代码,提出了在u c l i n u x 下现有的w e b 服务器 中单纯采取基本认证的方法的缺点。在比较分析了客户端认证功能的几 种实现方法以后,提出了用摘要认证来实现客户端的认证功能。通过研 读r f c 2 6 1 7 所规定的 r r r p 认证协议,本文实现了p a n d o w d yw e b 服务 器的摘要认证,并且成功移植到u c l i n u x 中。 分析了w e b 服务器和用户交互的特性,通过阅读c g i 的一些文档和l i n u x 进程间的通信机制,实现了用c g i 来实现服务器端和客户端的交互,从 而扩展了p a n d o w d y w e b 服务器的应用范围。 在s k y e y e 模拟的a t 9 1 开发板中成功运行了u c l i n u x ,并把前期在l i n u x 宿主平台上实现的w e b 服务器,成功移植到了s k y e y e 所模拟的开发板上。 p a n d o w d yw e b 服务器是基于s k y e y e 模拟平台和u c l i n u x 开发的,可以给 想使用s k y e y e 进行嵌入式应用开发的用户提供借鉴。 p a n d o w d yw e b 服务器是遵循g n u g p l 的,可以自由的获得并修改发布 它的源代码。用户可以通过阅读源代码来学习h t t p 协议、摘要认证和 c g i 的实现过程。 通过本项目的使用,可以给s k y e y e 的开发团队提供反馈信息,从而进一 步促进s k y e y e 的完善。 参考p a n d o w d yw e b 服务器在u c l i n u x 下的移植过程,可以根据自己的实 际应用需求移植其他开源软件到u c l i n u x 下。 ) ) ) ) ) ) ) q o 似 g 基于s k y e y e 和u c l i n u x 的轻量级w e b 服务器的设计与实现 第一章前言 1 3 p a n d o w d yw e b 服务器可以应用的场合 本文开发了p a n d o w d y w e b 服务器,它可以应用的场合包括: ( 1 ) 信息家电、网络设备等领域 在信息家电或者网络设备中植入p a n d o w d yw e b 服务器,授权用户就可以在远程 监控设备的运行状态,以及完成一些设置工作。 ( 2 ) 网络视频监控在生产过程管理中的应用 在视频服务器内置p a n d o w d yw e b 服务器,对摄像机传送来的视频信号数字化后 由高效压缩芯片压缩,通过内部总线传送到内置的p a n d o w d y w e b 服务器。用户可以 直接用浏览器观看p a n d o w d yw 曲服务器上的摄像机图像,授权用户还可以控制摄像 机动作或对系统配置进行操作。具有节省费用、即插即看、高性能、独立网络环境和 设备的灵活接入等优点 2 1 。 1 4本文的组织结构 本文余下章节的组织结构如下: 第二章讲述p a n d o w d yw e b 服务器的设计,从项目起源、设计目标入手,讲述 系统的整体构建以及设计原由,最后讲述系统选择的开发平台和采取的开发方法。 第三章本章描述了h t t p 协议在p a n d o w d yw 曲服务器中的实现。 第四章本章讲述p a n d o w d yw e b 服务器的c g i 设计和实现。 第五章对于一些嵌入式系统上的资源,只有特定的用户才可以访问,因此 p a n d o w d yw e b 服务器需要提供认证功能。在分析了b o a 、m i n ih t t p d 采取的基本认证 的缺点后,决定在p a n d o w d yw e b 服务器中实现摘要认证功能。本章主要讲述摘要认 证的原理和实现。 第六章本章详细讲述移植的过程,从如何建立交叉编译环境开始,到如何搭建 s k y e y e 硬件模拟平台和移植u c l i n u x 到s k y e y e 模拟的开发板下,最后讲述了p a n d o w d y w e b 服务器的移植和运行的过程。在这一章的最后,还会给出基于u c l i n u x 进行嵌入 篡一章羲言 基于s 每e y e 和u c l i n u x 轻量投w e b 疆务器的设馥岛窭琨 溅系统开发工作的一些关镳点。 第七章本牵实现了p a n d o w d yw e b 缀务器在家感a d s l 宽带路出器中的一个应 掰实铡。 6 基于s k y c y c u c l i n u x 转轻量簌w e b j 务器祷连计每赛瑗筹= 章暮统骋谩诗 2 。l设计謦标 第二章系统的设计 通常在进行一项课题研究的时候,需簧确立一个旗本原则和研究目标,即课题最 露要秧残季 么。闲撵豹道璞,在送行系统豹其钵设嚣之藩,应该先确立系统设计瓣囊 标和设计的原则,这些和系统最终的用途是相关联的。 2 1 1 单镁务( s i n g l e - t a s k i n g ) 单任务( s i n g l e - t a s k i n g ) 还是多任务( m u l t i t a s k i n g ) 是需要作出的第一个选择。 单任务表示p a n d o w d yw e b 服务器不会为每一个连接请求f o r k 一个新的进程来处理。 擎任务辐对于多任务来说,瓣褥产数蠹懿支持主显褥举定,也蕤楚说一里嚣蘸蠢一夺 h t y p 的连接请求,另外的h t t p 请求将进入一个队列等候。采用多任务技术则可以 阂时并发晌威多子一个的 鞭 请求。识是,因为p a n d o w d yw e b 服务器是主要用在 焱入式翡设餐牵,撵供绘溺户一个设嚣逶行参数和套麓运行获态豹赛蟊。因魏多任务 对于p a n d o w d yw e b 服务器来说不是一个必要的特憔。采用多任舒技术,意味着提高 系统编程的笈杂度以及加火系统资源的淤耗。嚣用户慰设备的访问弗不是一个缀频繁 的操作,逶常廷有在需要修改参数和系统有一些敖障翡时候才需要游闯设备,闲j 魄单 任务完全能满足实际的需辨。 2 。1 2支稔c g l p a n d o w d yw e b 服务器不应该只具有盟示静态页面的能力,它戍该还要具有和用 交互豹能力。举一令箍攀戆穰子,对予一台家雳宽袋a s d l 鼹幽器,在使弱之藩, 廉该设置拨母的用户名和密码,这样路融器才能通过a d s lm o d e m 拨号连入因特麟。 因为每个实隧用户的用户名和密码是不同的,因此不能由厂商固化在路由器中,只能 袋激蠲户设嚣瓣方法。这令靛零要弼产誉饺莰是读取羚态h t m l 炎嚣,嚣虽逐霹毅 向服务器提交信息。c g i 怒公共网关接i 一( c o m m o ng a t e w a yi n t e r f a c e ) 的简称,它是外 部的应用和w e b 服务器之类的信息服务器交互的标凇。一个c g i 程序可以被实时执 第= 幸系境棼竣 基于s k y e y e 和u c l i n u x 妨轻量缎w e b 蔽务器羲设谛岛宴麓 行,因此能产生动态的信息【3 1 。同时c g i 程序还能处理用户提交的数据,例如向配置 文件中写入信息。因此,对c g i 豹支持避必须的。 2 1 3摘要认证 在嵌入戏设备孛,可能育一些资源是需要经j 童认涯才能谤阀的,例如焱使用 p a n d o w d yw e b 服务器的家庭a d s l 宽带路由器中,只有经过认谣的角户才能测览路 由器的状态、设置路由器的运行参数。认证的意思熙:基于一定的原因需要确定用户 豹身傍。这黧艨谤的认透攘的是客户璇鹣诀证。 目前通常采用如下几种方法来实现客户端认证:第一种是在爝户程序中来实现, 这种方法是嗣前广泛采用的方法,如访问邮箱的时候需要输入用户名和密码,对用户 名器密羁豹黢涯是囊疆务嚣上嚣发太爨编写魏程痔突戒豹。第二秘楚镬蘧s s l 熬窖 户端认证功能,主要是客户端通过申请证书来完成。第三种方法怒通过r f c 2 6 1 7 所 定义的h t t p 认证来实现,它提供了用户认证的完熬机制,通过遮个机制,不需要在 藏务器臻编麓程彦魏霹苏辩嚣户送露诀谖。h t t p 谈逐又势鸯嚣张:基本谈逐鞠接要 认证。 采用第糟方法来进行用户认证,错要由程序员来控制程序的逻辑。由于糕序编 篝豹不严密,傻褥系统安众毪苓毫。莠藏,在实舔疲掰静过程审,缀多壤嚣下,羯产 输入的用户名和密码并没肖经过加密,盥接以明文传输,这无疑魑不安全的。 第二种方法采用了s s l 协议来进行骏证。s s l 魁一种通信协议,它概括了使用 凝密技术寒获墩毫缀数攒缳密、数据宠蹙经帮试证瓣标准方法。爽旗上,它逶邋僳护 传输中的数据保护了应用胺。s s l 是目前使用的最流行的安全性协议之一。s s l 内 建在w e b 浏蹩器中,当它同连接另一端的认证服务器建立了连接对,它会创建端对 鞴的数据保密。但是s s l 使用复杂豹数学公式进行数据翔密窝解密,这些公式静复 杂性根据密码的强度不同黼不同。高强度的计算会使多数服务器停顿,导致性能下降。 多数w e b 暇务器在执行s s l 楣关任务孵,吞蛙量会熙箸下降,性能拢在只执行h t t p 1 1 连接时的遽度馒5 0 多倍。两且出于s s l 复杂的认证方案和夯,解密算法,s s l 需 要大量地消耗c p u 资源,从而造成w e b 服务器性能很大的下降”j 。由于运行s s l 需 要谗多代码,这限铡了它在嵌入琢境中的应用【4 】。嘏撼资料,在u c l i n u x 采取静态编 8 基于s k - y e y e 争u c l i n u x 砖轻量缓w e b 艇务器砖设事 毒窦瑰 第- 二幸摹统砖设计 译的方式编译b o aw i t hs s l ,文件大小增大5 0 0 k ,运行时候消耗的内存容爨增大 1 1 0 k 1 5 1 ,这对于嵌入式系绕来说是一个比较大的消耗。如果要在资源有限的嵌入式环 壤牵使蠲s s l ,需要对已缀脊的痒迸行裁减苏满是安众往豹要求,然箍,这警瓣技巧 是不要丢得太多,否则会诚代码变得不徽安全,这是一项很难的工作,需要有专家的 参与1 4 1 。劳鼠使用该方案辩袋申请客户端的证书,代价离而且不方便使用。 第三种方粲是使用h t t p 协议提供酌谈证方案,瀵过该方案骶不需要使用庞大的 s s l 库又可以满足客户端认证的要求。谯p a n d o w d yw e b 服务器的设计中,本文采取 了h t r p 认诞褥没畜采取s s l 。h t t p 认诞分为基本认证鞍摘要认诚,在u c l i n u x 中, b o a 和m i n ih t t p d 都只实现了基本议诞。然而基本认诞非常脆弱,笼箕是对密碣孵保 护。因此,p a n d o w d yw e b 服务器必须能有所增强。综合考虑之下,本文决定实现摘 豢认诞并移棱捌u c t i n u x 下。 2 2总体框架设计 上一小:箨骥定了系统鹣整俸设谤曩撅,嚣蠡薅交毅嚣,藏需要遴髫系统豹夔髂浚 计了。p a n d o w d y w e b 服务器主要分为如下几个模块。 ( 1 )系统参数设置模块 秀了霞餐p a n d o w d yw e b 疆务器瓣运行更热瑟活,囊毒戮侵雳京令参数在 p a n d o w d yw e b 服务器运行的时候对其进行配置,也可以使用配置文件。由于 p a n d o w d yw e b 服务器是逡彳予在嵌入式设螽中的,一般嵌入式设备的程序是在系统启 动戆薅候自动逡霉,莠不是学动翔教赛韵,因藏选择命令行参鼗寒没鬟系统参数楚爨 较简单的设计。 ( 2 )请求监听模块 该模块妻黉完成登褥客户请求静凌链。有h t r p 连接请求的辩候,穗客户请求 放到输入缓冲送中。该模块监听由- p 参数指定的端阴,如果一p 参数没有指定,则默 认监听8 0 端翻。 ( 3 )请求预处理模块 在接收到用户的连接请求后,解析请求的各个字段,放到相应的变量中。按下来 判凝请求的类攫。如果需要认证,则调崩攮要认证模块;如果不需鬃认证,就判酝请 9 第二章系统的设计 基于s k y e y e 和u c l i n u x 的轻量级w e b 服务器的设计与实现 求的类型是页面、目录还是c g i 根据不同的请求调用不同的处理模块。 ( 4 )页面处理模块 根据请求预处理模块传来的参数,到服务器的指定目录中读取客户请求的文件。 根据请求文件的不同类型,生成不同的h t t p 响应的头和内容部分。如果请求的文件 不存在,则返回4 0 4n o tf o u n d 响应。如果请求的文件是摘要认证的密码文件,返回 4 0 3f o r b i d d e n 响应等。 ( 5 )c g i 处理模块 如果是c g i 请求,需要判断提交的方法是g e t 还是p o s t 方法,不同的方法有 不同的处理过程。该模块会f b r k 一个子进程来执行c g i 程序。当予进程执行完成以 后,将执行结果传回到父进程。 ( 6 )目录列表模块 如果请求的是一个目录,则首先去寻找目录中默认的网页文件,如果默认的网页 文件不存在并且不允许目录列表,则返回4 0 3f o r b i d d e n 响应。否则,将该目录中所 有文件信息如文件名、文件大小等以列表的形式返回。 ( 7 )摘要认证模块 如果用户请求的资源是需要认证的,那么摘要认证模块将首先产生摘要认证的 n o n c e 值,然后对测览器第二次传来的请求进行认证。只有通过认证后,才将用户请 求的资源发送给用户。 基于s k y e y e 和u c l i n u x 的轻量扳w e b 服务嚣的设计与实现 第二章系统的设计 请求瓶处理模块1 ( 系一设i 撇 i 接收e j r 蓄臻 1r接慵e 麓蹬模f 播甍认证窑 请柬蚺e 馘l _ 码文件 ,撼i 斌 接收h t t p 连 h 接信息 t 解析h t t p、 t p 浏 请求 输 臻冲区) 览 i , i r 一 景 | c g i 栉il 面辩l i8 淤l 1,1 l 一锩 y t m m r 、+ _ _ _ ”b , 豁盔鬻、 图2 1 系统模块关系图 以上七个模块的关系如图2 i 所示。 2 3 硬件平台的选择 对于嵌入式开发,系统设计完成以后,应该根据系统的特点进行开发板和操作系 统的选择。目前市面上可用的开发板很多,本文没有选择这些可用的开发板而是选择 了s k y e y e 硬件模拟平台。 2 3 1 s k y e y e 项目背景 对于想进行嵌入式系统软件开发和学习或者想研究嵌入式l i n u x 等操作系统和 一些底层系统软件如t c p f i p 的研究人员来说,可能存在如下几个问题【6 】: ( 1 ) 经常苦与经费不足,缺少足够的硬件开发板和软件开发环境,相关的书 籍对些最新软件分析还不够全面,无法深入研究和开发嵌入式软件。 ( 2 ) 高层次的软件设计和开发一般不用太考虑底层硬件的实现细节,如果直 接处于一个具体的硬件环境下,在开发和研究中可能会陷入硬件的具体 j l 第二章乐统的设计 基于s k y e y e 和u c l i n u x 的轻量投w e b 服务器的设计与实现 细节中不能自拔,而不能把精力放在高层的软件设计和开发中。 ( 3 ) 如果硬件开发环境不太稳定( 这种情况经常遇到) ,且对具体的硬件不是 很了解,则可能在排除问题上花费大量不需要的时间。 2 3 2 s k y e y e 模拟的c p u 和开发板 目前s k y e y e 可以模拟的c p u 主要是基于a r m 内核的c p u ,包括a r m 7 t d m i 、 a r m 7 2 0 t 、s t r o n g a r m 、x s c a l e 等。a r m 7 9 1 0 d t m 是a r m 系统c p u 的基本核心 部分,它们不支持m m u c a c h e 和一些扩展指令,是a r mc p u 基本核。s t r o n g a r m 、 x s c a l e 是建立在以上a r mc p u 核上,并扩展了m m u c a c h e 和其他功能。各硬件 开发公司可以根据他们的需求在上述c p u 核上加上特定的扩展,形成基于各种a r m 基本核心的特定c p u ,如a t m e l 9 1 x 4 0 和e p 7 3 2 1 则分别扩展了a r m 7 t d m i 和 a r m 7 2 0 t 的内存控制和各种i o 控制器,简化了开发板的逻辑设计,大大增强了开 发板的功能1 6 】。 目前s k y e y e 模拟的开发板包括基于a t m e l 9 1 x 4 0 c p u 的开发板,基于c r i r u s l o g i c e p 7 3 2 1 的开发板、基于s t r o n g a r mc p u 的a d s b i t s y 开发板。基于x s c a l ep x a 2 5 0 c p u 的l u b b o k 开发板。它主要模拟了对于各个开发板的串口、时钟、r a m 、r o m 等硬件外设吼- f l 虱g js k y e y e 硬件模拟器的硬件模拟结构图叽 图2 2 s k y e y e 模拟的硬件结构图 基于s k 弦y e 和u c l i n u x 镌轻量鳆w e b 疑务器秘最谴毒窭麓 笨= 章表娆孵最曹 2 3 3r t l 8 0 1 9 a s 网络芯片模拟 嚣藜溺终在嵌入式系绕孛应建越来越广泛,逶避强s k y e y e 攒麴攫熬鞋太嬲蕊冀 设备,使s k y e y e 支持以太网络接口模拟。这样在s k y e y e 硬件模拟平台上运行的操作 系统能够与本地l i n u x 主机进行网络通信【8 】。 签予嚣麓嵌入式设蘩孛广泛壤粥n e 2 k1 0 b a s e - t 兼容瓣络芯嚣,蔟中 r t l 8 0 1 9 a s 又是比较具有代表性的一种。因此网络模拟的设计方案完全基于真实的 r t l 8 0 1 9 a s ( n e 2 0 0 0 兼容,简称8 0 1 9 a s ) ,但是做了部分简化l7 i 。 2 3 4 选择s k y e y e 的疆由 目前可用的嵌入式模拟器包括a r m u l a t o r 和s k y e y e 。前者是a r m 公司推出的集 成嚣发环境a d s ( a r md e v e l o p e rs u i t e ) 巾提供熬攒令集模羧器。籍者是一个溺内舞: 放源码的自由软件项目,宗的目标是实现一个基于a r m 处理器的嵌入式仿真和集成 羚发环境。它可以运行在l i n u x 平台秘w i n d o w s 黪c y g w i n 环壤y i g j 。在比较完嚣 个仿真环缓瑶,本文决定逸释s k y e y e 誉为课题静仿冀开发环境,原因如下: ( 1 ) a r _ m u l a t o r 不囊持网络芯片仿真,而p a n d o w d yw e b 服务器是需要网络功 憨支持熬,没蠢隧络仿真,w e b 服务器麴移在毪就没窝意义了。两s k y e y e 凝有完善的鼷络功能仿真,支持t c 瑚【p 协议栈,可以秘主机进行潦信。 ( 2 ) a r m u l a t o r 支持的操作系统只有u c o s - i i ,而本文选择的嵌入式操作系统 燕u c l i n u x 。 ( 3 ) a r m u l a t o r 不开放源代码,开放程度不商,而s k y e y e 愚完全开源的软件, 遵循g p l 协议。 ( 4 ) s k y e y e 嫠麓一个仿真开发霹瀵,毒戳奁缺少疆箨兹情凝下迸雩亍嵌入淡软 件汗发。由于s k y e y e 目前处于一个活跃的开发期,在囡内基于它开发的 成熟的应用很少。因此,选撵s k y e y e ,可以给基于s k y e y e 进行应用开发 瓣缓爱者提挟一令缮鎏。 ( 5 ) s k y e y e 是一个开源项目,禚系统开发期,需要有大量的使用者来反馈软 件的实际运行情况,这正是一个_ 丌源软件能获得成功的保证。 第二章糸统盎设计 基于s k y e y e 和u c t i n u x 辑轻量级w e b 艇务器的设计与窭现 在s k y e y e 可以模拟的开发檄中,本文选择了基于a t m e t 9 1 x 4 0c p u 的开发板。 a t m e l a t 9 1 系到微控制暴是基予a r m 7 国m l 嵌入式微戆壤器戆1 6 3 2 霞徽控割器, 是目前国内市场威用最广泛的a r m 芯片之一。a t 9 1 系列微控制器已成功应用在工 业自动化控制、m p 3 w m a 播放器、数据采集产品、b b 机、p o s 机、医疗设备、 g p s 粒瓣终系绞产品孛。 2 4嵌入式操作系统的选择 疆终模攘乎套选择磐了蔽矮,魏爨了选搔搽维系统戆羚葭。虽然完全爵戳不饺蠲 操作系统而直接对硬件进行编程( 尤其在比较低端的8 位m c u 等设备上一般没有现 成的搽作系统) ,但是基于一个嵌入式的操作系统,可以搽蔽具体的硬件细节。在较 蠢熬麓次主遗露较传秀发,撬离开发效率。 s k y e y e 可以支持u c o s i i 和u c l i n u x ,但是由于u c l i n u x 支持大量的网络协议, 完整的t c p i p 协议棱和通用酶l i n u xa p i ,褥且移植到u c l i n u x 下的应用很多,相对 予u c o s - i i ,熬悉r e dh a tl i n u x 上开发豹入可戳缀饫静熟悉u c l i n u x 下瓣开发。叉潮 为u c l i n u x 采用的u c l i b c 是对g l i b c 的精简,因此在程序a p i 方面相差不多,移植比 较褒爨。基于上述理由,本系统选择u c l i n u x 作为s k y e y e 硬件模接开发平台上的操 作系统。 u c l i n u x 是基于l i n u x 内核的应用于微控制领域的一种嵌入式l i n u x 操作系统, 其最大的特征就怒没有m m u ( i 鸯存管理单元模块) ,它缀逑奈那些没鸯m m u 的处趱 器,铡如摩托梦控公司的m 6 8 e z 3 2 8 ,a t m e l 公司的a t m e l 9 1 x 4 0 等。u c i i m l x 不 支持虚拟内存,它采用一种不同予标准l i n u x 的内存模型。在l i n u x 中的进程,具脊 取鸯照瘫存空阕,这个内存空阙孛依次毒代码段,嚣态数攥段,堆段秘栈段。在堆段 和棱段之间存在一个空隙。当稷序使用m a l l o c 分配内存的时候,实际上是使用了系 统调用b r k 来动态调整堆段的大小,然后将分配的内存返回给使用者。而u c l i n u x 则 不阏,为了避免滚赞宝责毂走存窆闻,系统为逶疆势配鹣遗j = l 筝区域是连续懿,饩玛段、 数据段和栈段之间没有任何空隙。为了节省内存空间,进程的私有的堆也被取消,代 以一个共享的堆空间。因此m a l l o c 的实现方法不是使用b r k 系统调用,而是采用了 m m a p 柬实现。实鞭上,u c l i n u x 是没套b r k 系统诱矮熬”“。 1 4 基于s k y c y e 和u c l i n u x 的轻量级w e b 服务器的设计与实现 第二章系统的设计 针对u c l i n u x 的内核的二进制代码和源代码都进行了重新编写,以紧缩和裁剪基 本的代码,这就使得u c l i n u x 的内核非常小,仅有5 1 2k b ,加上相关的工具还不到 9 0 0k b ,但却仍然保持了l i n u x 操作系统的主要优点,如稳定性好、有强大的网络功 能和出色的文件系统支持等能力。而且其使用的库u c l i b c 是对g l i b c 的裁减,但是 保留了大部分常用的g l i b c 库函数,在宿主机器是l i n u x 上开发的源代码,只要做很 少的修改就可以移植到u c l i n u x 下。 从上文可以知道,u c l i n u x 程序员在编程的时候,需要参与系统内存空间的分配 j i l l ,需要估算出程序所需要内存的大小。虽然这导致程序员对内存的控制权力增加, 但是也给程序开发带来了不便。在进行程序移植的时候,笔者发现了由于使用m a l l o c 分配内存和没有注意到程序运行需要空间大小而带来的一系列问题。这个都是开发人 员从标准l i n u x 下转移到u c l i n u x 下开发要注意的地方。 2 5 系统开发流程 硬件和操作系统选饕l 后,就应该转入系统的开发。同一般p c 上基于l i n u x 的系 统开发不同,嵌入式系统开发有其自身特点。进行嵌入式开发首先需要弄清楚的一个 概念就是交叉编译。简单的说,交叉编译就是在一个平台上( 宿主平台) 使用交叉编 译器编译生成能在另外一个平台( 客户平台) 上运行的二进制文件。这里的平台指的 是硬件平台和软件平台两个方面。如,人们通常使用的平台是i n t e lx 8 6 硬件上运行 视窗操作系统,这是宿主平台。客户平台如a r m 核c p u 上运行u c l i n u x 。由于本 文的开发平台是r e dh a tl i n u x ,而最终运行的硬件是a r m 核的c p u ( s k y e y e 模拟) , 因此需要在r e dh a tl i n u x 下面使用交叉编译器来对源代码进行交叉编译。 本文选型的宿主开发平台是r e d h a t l i n u x ,而且p a n d o w d y w e b 服务器相对较小, 可以先在r e dh a tl i n u x 下完成所有的功能模块后,再将程序移植到u c l i n u x 下面。 这样,整个开发就变成了两个阶段:第一阶段是在r e dh a tl i n u x 下的开发,第二阶 段是移植。接下来的第三章、第四章和第五章将重点讲述系统实现部分,即在r e dh a t l i n u x 下是如何实现p a n d o w d yw e b 服务器的。第六章讲述如何将p a n d o w d yw e b 服 务器从r e dh a tl i n u x 下面移植到u c l i n u x 下。 第三章h t l 甲协议原理与实现 基于s k y e y e 和u c l i n u x 的轻量级w e b 服务器的设计与实现 第三章h t t p 协议原理与实现 3 1 h t t p 协议概述 在本章中,主要介绍h t t p 协议原理以及h r r p 协议在p a n d o w d yw e b 服务器中 的实现。本章首先会介绍h t t p 协议,包括h t t p 的请求和响应,然后讲述h t t p 请 求和响应在p a n d o w d yw e b 服务器中的实现。 h 1

温馨提示

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

评论

0/150

提交评论