通信工程专业毕业论文35257.doc
《通信工程专业毕业论文35257.doc》由会员分享,可在线阅读,更多相关《通信工程专业毕业论文35257.doc(23页珍藏版)》请在三一办公上搜索。
1、 本科生毕业论文(设计)过程管理手册 论文(设计)题目: 构建嵌入式Linux Web动态服务器 目 录内容摘要1关键词11.绪论21.1Linux系统的介绍21.1.1Linux的诞生和发展21.1.2Linux系统构架21.2嵌入式系统21.2.1嵌入式系统介绍21.2.2Web服务器在嵌入式系统的发展31.3课题的提出31.4系统章节安排32.Web服务器系统设计42.1 系统指标42.1.1 系统设计功能42.1.2 关键技术指标42.1.3 可行性分析42.2 服务器模型选择52.2.1 单循环服务器52.2.2 简单并发服务器52.2.3 高级服务器52.2.4I/O复用服务器62
2、.2.5 系统流程73.Web服务器模块实现93.1 服务器参数解析103.1.1 文件配置103.1.2 命令行解析103.2CGI 支持模块113.3URI解析分发功能模块123.4LISTDIR模块143.5接口模块153.5.1 动态动态加载库模块154.服务器系统测试与结论184.1 服务器测试184.1.1 服务器运行环境184.1.2 各功能调试实现184.1.3 课题设计结论204.1.4 系统展望21致谢22参考文献23Abstract24Key Words24构建嵌入式Linux Web动态服务器专业:通信工程 学号:200810801170 学生姓名:陈文斌 指导老师姓名
3、:黄一平【内容摘要】随着Internet和物联网的迅速发展、人们经济条件的改善,嵌入式设备的网络化需求越来越显重要。嵌入式Web服务器的质量以及速度自然要求相当的高,单进程的服务器很难满足人们高质量的生活要求。本文主要研究和实现了基于PC机Linux系统下模拟采用线程池的模块化的嵌入式Web动态服务器。可根据用户需求,通过服务器的配置文件进行模块以及服务器各种参数的动态配置以及Linux下具备的命令行参数配置。不仅可正常显示静态网页还可通过CGI(Common Gateway Interface)动态生成页面,根据用户配置是否listing directory。提供消息转发机制,对于本服务器不
4、支持的python以及PHP服务器将转发至本地进行处理,然后返回服务器。同时还支持Websocket的功能。使用动态库加载模块的方式,方便其他开发人员进行二次开发。【关键词】:Linux;WEB;CGI;动态服务器;线程池1. 绪论随着物联网的发展,嵌入式设备的网络化愈发重要,嵌入式Web服务器的功能、速度质量需要跟上网络化的发展。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正未来。目前70%以上的服务器是运行于Linux系统下,Linux系
5、统下的Web服务器成熟稳定发展。1本章主要对Linux以及嵌入式作简要介绍。1.1 Linux系统的介绍1.1.1 Linux的诞生和发展Linux操作系统诞生于1991年,目前已经成为主流的操作系统之一。Linux操作系统是UNIX的一种典型的克隆系统,在Linux诞生之后,借助于Internet网络,在全世界计算机爱好者的共同努力下,成为目前使用者最多的一种类似UNIX的操作系统。UNIX操作系统于1969年在Bell实验室诞生,它是美国贝尔实验室的Ken.Thmopson和Dennis Titchie在DEC PEP-7小型计算机系统上可发的一种分时操作系统。虽然Linux操作系统不同于
6、UNIX的源代码,但在外观以及性能上Linux都与UNIX相同或者更好。21.1.2 Linux系统构架Linux系统从应用角度来看,分为内核空间和用户空间两个部分。内核空间是Linux操作系统的主要部分,但是只有内核的操作系统是不能完成用户任务的。丰富并且功能强大的应用程序包是一个操作系统成功的必要条件。Linux的内核主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。Linux是在Internet飞速发展的时期成长起来的,所以Linux支持多种网络接口和协议。网络接口又分为网络协议和驱动程序,网络协议是一种网络传输的通信标准,而网络驱动则是对硬件设备的驱动程序。
7、Linux支持的网络设备多种多样,几乎目前的所有网络设备都有驱动程序。31.2 嵌入式系统1.2.1 嵌入式系统介绍嵌入式系统从广义讲,是带有微处理器的专用的软硬件系统的统称,是电脑软件与硬件的综合体,它是以应用为中心,以计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它是由嵌入式设备及系统中的软件所构成的。如今Linux已成功移植成为最热门的嵌入式系统之一。1.2.2 Web服务器在嵌入式系统的发展嵌入式Internet技术随着Web技术的发展,几乎改变了现在的信息表达形式,很多应用都是基于Web技术的,由于HTML语言的标准统一性,只要在嵌入式设
8、备中有一个微型服务器,就可以使用任意一种Web浏览器接收和发送信息。所以如何设计这种特别的Web服务器,如何在嵌入式设备中安置Web服务器,就成了嵌入式Web服务器的发展和研究方向。嵌入式Web服务器技术的特点就是在TCP/IP标准协议的基础上,实现了网络技术和智能仪器的集成,可以远程监测和控制。41.3 课题的提出综上所述,对于嵌入式Web服务器的研究和应用,其意义是重大的。它为我们管理、控制和监测各种各样的设备提供了一个很好的途径。服务器能动态生成页面满足嵌入式设备的监控等功能。5现有的很多嵌入式Web服务器性能稳定,功能比较强大,但很难用于二次开发增加其他功能。因此本次课题的任务和目标是
9、构建嵌入式Web动态服务器,同时预留模块接口可供开发人员进行二次开发。1.4 系统章节安排本论文主要从以下五部分内容展开,具体描述如下:第一部分:绪论。主要介绍课题来源,开发背景及意义等。第二部分:服务器系统总体设计。主要介绍系统指标、嵌入式服务器的各种模型。第三部分:服务器各模块设计与实现。主要详细介绍各个功能模块的设计原理与实现。第四部分:服务器系统测试与结论。主要介绍运行平台、软件要求和各模块实现效果等。第五部分:致谢。主要对在本次课题设计和论文撰写过程中给予帮助的老师、同学和朋友表示感谢。2. Web服务器系统设计本次课题设计是设计能运行于PC机Linux操作系统下的Web动态服务器。
10、可通过修改配置文件或者命令行参数进行服务器常用参数和模块参数的配置。使用面向对象的C+高级编程语言进行编写设计以及动态加载模块的方式,从而更加方便其他的开发人员在此基础做二次开发。2.1 系统指标2.1.1 系统设计功能u 能够访问指定主机的默认静态网页;u 能够正确的通过CGI访问CGI程序动态生成网页;u 能够同时支持GET/POST的请求方法;u 能够提供开发人员进行再次开发;u 可通过配置确定是否Listing Directory;u 可通过配置文件或者命令行参数对服务器进行配置;u 支持WebSocket协议,即时性强;u 支持消息转发机制,对于服务器不支持的请求类型,可转发给系统处
11、理。2.1.2 关键技术指标1) 客户端和服务器端TCP的连接;2) 静态文件以及动态页面的区分;3) CGI程序的处理以及数据的传输;4) HTTP请求方法的提取;5) GET/POST请求方法的处理;6) 自定义扩展接口的处理。2.1.3 可行性分析1) 通过套接字的建立对服务器端和客户端的连接;2) 通过对客户端请求目录提取获得静态或者动态请求;3) 利用IO复用循环服务器建立两个线程分别用于接受客户端连接和处理客户端请求;4) 浏览器的输入触发CGI程序的运行并返回结果;65) 分别对不同的请求方法进行各自的处理;6) 根据配置确定是否显示请求目录内容。2.2 服务器模型选择嵌入式We
12、b服务器模型主要有以下几种:72.2.1 单循环服务器单循环服等待服务器是对于客户端的请求和连接,服务器在处理完毕一个之后再处理另外一个,即进行串行处理客户端请求。该类服务器构架简单,编程容易,但处理速度缓慢,当一个客户端占用服务器时其他客户端请求则无法响应。2.2.2 简单并发服务器与单循环等待服务器不同,并发服务器对客户端的服务请求进行并发的处理。当多个客户端同时发送请求的话,服务器可以同时进行处理。此类并发服务器的难点是如何确定进程池中子进程的数量以为该类服务器需提前构建多个子进程,一旦构建完成则不能进行扩展,不能调节网络负载。2.2.3 高级服务器高级并发服务器主要有一下三种:1、单客
13、户端单进程,统一accept()该类型的并发服务器模型并不预先分叉子进程,而是由主进程统一处理客户端的连接,当客户端的连接请求到来时,临时有函数fork()进程,有子进程处理客户端的请求。该类模型将客户端连接请求和业务处理进行了分离,条理相对比较清晰。但使用fork()进程,每个进程拥有自己独立的空间,占用内存大,消耗资源多。2、单客户端单线程,统一accept()该类型并发服务器是建立一个线程在等待客户端连接,当有客户端到来时,若当前建立线程数小于预定最大线程数则建立线程用于处理客户端请求,否则继续等待。相对于单进程并发服务器,单线程并发服务器速度比较快、占用资源少、数据类型可以共享等。3、
14、单客户端单线程,各线程独自accept()该类型并发服务器是在主进程中建立一个线程,在该线程中创建预定最大线程数,在个线程中分别等待客户端连接请求。也不方便线程扩展。这几种并发服务器有一个比较重大的缺陷,它需要建立多个并行的处理单元。当客户端增加时,随着处理单元的增加,系统的负载会逐渐地转移到并行单元的现场切换上,这在嵌入式系统特别明显。为了降低系统切换的不必要开支,将主要的系统处理能力集中在核心的业务上,需降低并发处理单元的数量,I/O复用服务器正是此类型的。2.2.4 I/O复用服务器IO服用循环服务器在系统开始的时候,建立多个不同工作类型的处理单元,例如处理连接的单元、处理业务的单元等。
15、在客户端的连接到来时,将客户端的连接放到一个状态池中,对所有客户端的连接状态在一个处理单元进行轮询处理。如此降低了系统切换的不必要开支,将系统处理能力集中放在业务处理上。该类型服务器的缺点是结构复杂、编程比较困难。综合以上各类型的服务器模型,最后决定使用I/O复用服务器类型。I/O复用服务器流程图如下图 1:图 1 服务器模型图2.2.5 系统流程本次设计的系统流程从上图 1 可以清晰看出。Web动态服务器是基于TCP/IP协议的,服务器模型的程序设计流程主要分为:81、套接字初始化socket()套接字初始化过程中,根据用户对套接字的需求来确定套接字的选项。这个过程中的函数为socket()
16、,它按照用户定义的网络类型、协议类型和具体的协议标号等参数来定义。系统根据用户的需求生成一个套接字文件描述符供程序中使用。2、套接字与端口绑定bind()套接字与端口绑定过程中,将套接字与一个地址结构进行绑定。绑定之后,在进行网络程序设计的时候,套接字所代表的IP地址和端口地址及协议类型等参数按照绑定值进行操作。3、侦听连接listen()按照一个服务器需要满足多少个客户端的连接请求,而服务器在某个时间仅能处理有限个数的连接请求,所以服务器设置服务器端排队队列的长度。服务器侦听连接会设置这个参数,限制客户端中等待服务器处理连接请求的队列长度。套接字建立到侦听封装在函数int open_list
17、enfd(int port),函数返回建立的套接字文件描述符,端口号为port。 4、客户端连接在套接字侦听完成之后,服务器等待客户端连接,当客户端请求到来时,服务器进行连接然后进行其他的处理。5、收发数据服务器连接客户端之后,从套接字文件描述符中读取数据或者向文件描述符发送数据。接收数据后服务器按照定义的规则进行对数据处理,并将结果返回给客户端。服务器处理完数据之后,将结束与客户端的连接,关闭套接字。本课题的程序设计是创建两个线程thread_do2:pthread_create(&thread_do0, NULL, handle_connect, (void*)&sockfd); pthr
18、ead_create(&thread_do1, NULL, handle_request, (void*)&globalcontext);thread_do0的线程函数名为handle_connect,传入参数套接字文件描述符sockfd,该线程用于处理客户端的连接,将获得的套接字描述符放入套接字文件描述符集中。线程thread_do1函数名为handle_request,传入参数为globalcontext的引用,globalcontext是用于存储配置文件和命令行参数中服务器的相关参数,在该线程中使用select()函数监视文件描述符集,判断是否存在有效的文件描述符,有则对其进行处理。按照
19、服务器的参数以及客户端请求调用相应模块函数。对其处理完毕之后将该文件描述符设置为-1,用于存储其他接受描述符,同时客户端连接线程数减1。该Web动态服务器的系统主流程设计即以上内容,下面将介绍各子模块的设计实现。3. Web服务器模块实现前面一章已经介绍了本系统的主流程程序设计,主流程只是树的主干,只有主干的树是没有价值意义的,自然要生长出众多的分支。服务器的功能决定了该服务器具有的模块数量,在设计中,几乎每个模块就是用一个类进行设计实现。系统的各功能模块图如下图 2:图 2 系统模块图根据该模块图可知,课题的主要功能模块有服务器监听模块,该模块已包含在系统设计中、参数配置解析模块、URL解析
20、模块(解析完毕进行相应分发)、CGI模块、接口模块。设计的类图如下图 3:图 3 系统设计类图下面将详细介绍各模块内容。3.1 服务器参数解析服务器的参数,如侦听端口、默认连接客户端最大线程数等都需要使用户能对其进行设置。服务器的相关参数可以在配置文件中进行设置,也可以在启动服务器时使用命令行进行设置。3.1.1 文件配置在服务器启动时对该文件内容进行解析,获取各参数,单个参数存储于类Context globalcontext的map容器9map attributes中,而对于模块的参数信息则存储于map容器mapstring,map extensives中。服务器单个参数的形式为变量名=变量
21、值、模块参数形式为模块名变量名1=变量值1 空一行 变量名2=变量值2。3.1.2 命令行解析Linux系统下命令行是其一大特点,运行于Linux操作系统的软件大多要求可以使用命令行参数进行配置。若启动服务器时使用了命令行参数,那么服务器同样先解析配置文件获取服务器参数,然后对命令行解析,命令行中设置的参数会覆盖配置文件中参数值,命令行中没有的则默认使用配置文件中参数。解析命令行使用Linux下getopt_long()函数,该函数可以用短选项进行配置亦可用长选项对其配置。103.2 CGI 支持模块通用网关接口CGI(Common Gateway Interface),一种基于浏览器的输入、
22、在Web服务器上运行的程序方法。CGI脚本使浏览器与用户能交互,为了在数据库中寻找一个名词,提供你写入的评论,或者从一个表单中选择几个条目并且能得到一个明确的回答。CGI脚本是任何运行在Web服务器上的程序。CGI脚本是用下列两种方法使用的:作为一个表单的ACTION或作为一个页中的直接link。CGI脚本有服务器调用,基于浏览器的数据输入。1) 一个URL指向一个CGI脚本。一个CGI脚本的URL能如普通的URL一样在任何地方出现;2) 服务器接收请求,按照那个URL指向的脚本文件(注意文件的位置和扩展名),执行脚本;3) 脚本执行基于输入数据的操作,包括查询数据库、计算数值或调用系统中其他
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信工程 专业 毕业论文 35257

链接地址:https://www.31ppt.com/p-4069295.html