《(毕业设计)嵌入式系统的网络服务器.doc》由会员分享,可在线阅读,更多相关《(毕业设计)嵌入式系统的网络服务器.doc(6页珍藏版)》请在三一办公上搜索。
1、嵌入式系统的网络服务器在“每个人都处在互联网的浪潮中”之后,现在很明显随之而来的是“每件事都处在互联网的浪潮中”。大多数售卖咖啡的机器仍然不能提供全世界的联网。然而嵌入式远程维护和诊断的网络集成就像所谓的M2M通信一样以一种相当快的速度增长。对很多发展工程来说,仅仅是通过网络浏览器经Internet,或是经过局域网进行组成和系统的远程维护和诊断,负担非常之重。在许多部门中,人们对于嵌入式系统配置和服务的工作完全地基于网络。剩余的时间用前面的面板和一些功能键组成一个小的LC显示结束经典用户界面的制作。随着移动互联网领域将来的发展,可以预期,基于蓝牙技术的个人区域网和快速发展的M2M通信会出现长足
2、的进步。经过网络浏览器获得进入一个嵌入式系统最主要的功能单元是网络服务器。这种网络服务器给网络浏览器带来全球互联网或局域网上理想的HTML页(HTML Hypertext Markup Language, 超文本链接标示语言)和图片。这样发生了基于HTTP(HTTP Hypertext Transfer Protocol, WWW服务程序所用的协议)。一个TCP/IP协议层,意味着基于这个已制定的标准,来管理整个通信。网络服务器(HTTP服务器端)和浏览器(HTTP客户端)构建了TCP/IP的应用软件。HTTP在去年达到了一个显著的区分。其间全世界数以百万计的用户在广域网中使用基于HTTP进行
3、冲浪。今天几乎每一台个人电脑都对这个协议提供了必要的支持。这种状况在嵌入式系统中也越来越多。HTTP在以极快的速度伸展。1 基于TCP/IP的HTTP作为通信平台HTTP是一个基于TCP/IP协议层之上的简单的协议。HTTP使用TCP(TCPTransfer Control Protocol, 传输控制协议)。TCP是一个通过下属的IP(IP Internet Protocol, 网际协议)协议传输数据的相对复杂和高质量的协议。TCP本身经过一个广泛的三方握手程序,始终保证两个通信伙伴之间安全的连接。因此经过HTTP的数据传输可以始终被保护。由于广泛的TCP协议机制,HTTP只表现出一种低级别
4、的性能。Figure 1: TCP/IP stack and HTTP programming modelHTTP基于一种简单的客户/服务器的概念。HTTP服务器和客户端经过一个TCP连接进行通信。默认的端口号是80。服务器完全被动地工作。他等待客户端的请求。这种请求通常指明确的HTML文件的传输。这种HTML文件可能不得不由CGI(CGICommon Gateway Interface , 公共网关接口)动态产生。请求的结果,服务器通常将包含的需要的HTML文件通过响应回答(Picture 1.B)。HTTP的请求通常由几行文本组成,通过TCP传送到服务器。Listing 1.A给出了一个例
5、子。第一行表明了请求类型(GET),请求对象(/test1.htm)以及使用HTTP的版本(HTTP/1.1)。请求的第二行客户端告诉服务器能够接收什么类型的文件。第三行包括了关于客户端软件的信息。请求的第四行也是最后一行通知服务器客户端的IP地址。依照请求的类型以及应用的客户端软件可以写出更多行。可以用一个空行作为请求的结尾。GET /test.htm HTTP/1.1Accept: image/gif, image/jpeg, */* User selling agent: Mozilla/4.0Host: 192.168.0.1Listing 1.A: HTTP GET-requestH
6、TTP/1.1 200 OKDate: Mon, 06 Dec 1999 20:55:12 GMT Server: Apache/1.3.6 (Linux)Content-length: 82Content-type: text/htmlTest-SeiteTest-SeiteListing 1.B: HTTP response as result of the GET-request from listing 1.A作为对HTTP请求的回答主要由两部分组成。首先有一个个别文本行的标题。跟着又一个内容对象(可选择)。这个内容对象大概由一些文本行组成,假设是一个HTML文件或者二进制文件,这时候
7、可以传送GIF或JPEG格式的图像。标题的第一行特别重要。它起着报告状态和错误信息的作用。如果发生错误,只传送标题或标题的一部分作为回答。2 网络服务器的功能原理简单化一个网络服务器可以被设想成像一个特殊类型的文件服务器。Picture 2.A展示出了总体结构。网络服务器从网络浏览器接收了一个HTTP的GET请求。通过这个请求,必须有一个明确的文件作为回答(见Picture 2.A中的Step1)。之后,网络服务器尝试进入被请求电脑的文件系统。然后尝试找到一个需要的文件(Step2)。在成功搜寻之后,网络服务器读取整个文件(Step3),作为一个回答传送回网络浏览器(HTTP响应由标题和内容对
8、象组成)。如果网络服务器不能在文件系统中找到合适的文件,一个错误信息(只包含标题的HTTP响应)简单地作为响应发送到客户端。Figure 2: Functional principle from Web server and browser网络的内容由单独的文件构建。它的基础是用HTML页的静态文件构建的。在这些HTML文件里涉及到远程文件的嵌入。这些文件是GIF或JPEG格式的这些有代表性地图片。然而也涉及到其它一些对象,例如可能有JAVA程序。在网络浏览器接收到网络服务器的HTML文件之后,这个文件将被评价然后为外部参考搜索。现在Picture 2.A的14步将为每一个外部参考再一次运行,
9、为了从相应的网络服务器中请求各自的文件。请注意,这样一个参考由网络服务器的名字或IP地址组成(例如“”),需要文件的名字也是如此(例如“picture1.gif”)。所以事实上每一个参考都能够查阅另一个服务器。换句话说,一个HTML文件能够定位在服务器“ssvembedded.de”上,但通过这个HTML文件外部涉及到的需要的图像定位在网络服务器“”上。最后这个分离对象的网络是万维网(WWW)得名的原因。所有通过网络服务器的必须得文件被浏览器请求,就像Picture 2.A中展示的那样。通常这些文件被存储在网络服务器的文件系统中,网络管理员有时会更新它们。网络服务器更进一步的基本功能是我们前面
10、提到的公共网关接口(CGICommon Gateway Interface , 公共网关接口)。最初这项技术只应用于简单的嵌入HTML页的窗体。作为窗体填料结果的数据将经HTTPGET或POSTrequest被传送到网络服务器(见Picture 2.B的Step1)。在这样一个GET或POST的请求中,CGI需要被窗体赋值的程序名已经被包括进去。这个程序需要放在网络服务器上。通常存储在“/cgibin”目录中。GET或POST请求的结果是网络服务器启动位于“/cgibin”目录中的CGI程序,根据参数传递标准的数据(Step2)。一个CGI程序的输出导向到网络服务器(Step3)。然后网络服务
11、器把数据全部传送到网络浏览器作为响应(Step4)。3 动态产生HTML页与一个公司通过静态页面和图片告诉人们有关产品计划和服务的网页相反,一个嵌入式的网络服务器能够提供动态产生的内容。它将在首先通过浏览器进入的时候产生动态页面。如何另外通过Internet检查系统的实际温度?静态HTML文件对一个嵌入式的网络服务器来说没有什么意思。最多关于固件的版本和服务的信息是通过HTML格式存储的。另外所有其它的任务通常都是由动态产生HTML完成的。在请求的时刻有两种产生HTML页的不同技术:第一种是所谓的服务器方脚本,第二种是CGI设计。在服务器方脚本中,脚本代码嵌入到HTML页中。如果需要,这些代码
12、将在服务器方被执行。因此,有许多种可以提供的脚本语言,这些语言在HTML页中都可用。在Linux团体中主要使用PHP(PHP:一种新型的CGI网络程序编写语言。)。微软中意的是VBScript。在HTML页中插入JAVA同样可能。美国的Sun公司将这种技术命名为JSP。用脚本代码编写的网页静态地存储在网络服务器的文件系统之中。在服务器的文件被传送到客户端之前,一段特殊的程序用动态产生的标准HTML取代整个脚本代码。而网络浏览器在脚本语言中将什么也看不到。待添加的隐藏文字内容2Figure 3: Single steps of the Server-Side-ScriptingPicture 3
13、展示了服务器方脚本的简单步骤。第一步中网络浏览器经HTTP的GETrequest请求一个明确的HTML文件。网络服务器认可需要文件的明确的扩展名(例如用*.ASP或*.PHP代替*.HTM或*.HTML),然后启动一个脚本引擎(见Step2)。这段程序得到需要的包括文件系统得到的脚本代码在内的HTML文件(Step3),执行脚本代码,制造一个新的不用脚本代码的HTML文件(Step4)。包括的脚本代码将被动态产生的HTML所代替。这个新的HTML文件将被网络服务器读入(Step5),然后发送给网络浏览器(Step6)。如果服务器方脚本被期望用于嵌入式网络服务器,那么你不得不考虑必要的附加资源。
14、一个简单的例子:为了执行在一个网页中嵌入PHP代码,必须为服务器附加程序模块。一个脚本引擎和嵌入式网络服务器被存储在嵌入式系统的闪存芯片中。有了这些,执行期间需要更多的内存。4 Linux下网络服务器的运行一旦谈起关于网络服务器在和Linux连接中的问题,大部分人马上想到了Apache。在Netcraft Survey的调查之后,全世界的网络服务器主要使用了这种程序。Apache是对传说中的NCSA服务器的增进。Apache(Apache美洲印第安人的一种族)的名字与印第安人无关。它是从“A Patchy Server”构造而来,因为第一个版本由不同的代码和补丁文件装配起来。此外还有许多其它的
15、网络服务器甚至是对于Linux的。这些服务器的大多数固定在GPL(类似Apache)之下,可以免费使用。更为广泛的内容可以参见“http:/对一个嵌入式网络服务器来说最重要的事情是实际资源的需求。有时嵌入式系统只提供最小的资源,主要与Linux共享。其间有许多高性能的32位386/486微控制器或基于ARM的拥有8M RAM和2M FlashROM的嵌入式系统(Picture 4)。从这个ROM(只读存储器,例如闪存芯片)将被导入一个完全的Linux,它基于2.2或2.4的内核,有TCP/IP协议层和网络服务器。HTML页和程序同样存在ROM中用来产生网页。一个嵌入式系统的空间需求与一张小的大
16、邮票相似。很好理解它没有位置给一个像Apache一样强大的网络服务器。Figure 4: Embedded Web Server Module with StrongARM and Linux一个Apache的容量几乎同样如此。它不需要通过网络服务器和浏览器形象化一个影印机的计数器或一个过滤器的状态。在许多情况下一个单一的网络服务器就足够了。两个典型的代表是boa和thttpd。起初,两个网络服务器都用于和运行在Linux下的嵌入式系统连接。boa和thttpd的结构设置比较简陋,但却足够了。顺便说一下,它们的源代码对用户是开放的。这些服务器上可执行的二进制文件总是小于80k,能够没有问题的整
17、合到大多数嵌入式系统中。对于网页的动态产生,两个服务器都只提供了CGI作为增补。更高的技术,像SSI则没有提供。嵌入式网络服务器和Apache很大的差别在于,相对有限构造设置,同时发生请求数量的最大可能。高性能的服务器像Apache立即为每一个引入的客户端请求制造一个自己的过程。在这个过程里所有进一步的步骤都将被执行。这需要在运行期间拥有一个非常好的规划和大量的空余内存资源。但是另一方面,许多网络浏览器能够同时进入这样一个网络服务器中。嵌入式网络服务器像boa和thttpd只工作于一个单一的过程。如果两个用户同时需要进入一个嵌入式网络服务器,其中之一则不得不等待片刻。但是在嵌入式系统的环境中这是完全有理由的。这种情况首先是一个远程保持、远程配置和相似任务的问题。想来也不会有那么多同时的请求吧。图的明细表:图一:TCP/IP层和HTTP设计模型图二:来自网络服务器和浏览器的功能原理图三:服务器方脚本的单步图四:以强大的ARM和Linux的嵌入式网络服务器清单列表:1 A:HTTP的GET请求1 B:HTTP对来自1.A的GET请求的响应利用嵌入式Linux的数字集成逻辑(DIL)/网络计算机(NetPCs)DNP/1110
链接地址:https://www.31ppt.com/p-2397621.html