论文部分内容阅读
[提 要] 随着嵌入式系统的发展和Internet的普及,嵌入式系统接入网络已经成为嵌入式系统应用的一个重要方向和必然结果,嵌入式Web服务器是嵌入式系统网络化应用的重要方面。本文简要介绍了Web服务器的基本原理,阐述了嵌入式Web服务器的实现方法与技术,论述了实现嵌入式Web服务器的关键技术———HTTP协议和通用网关接口CGI,对TCP/ IP协议族进行了一定的选择和精简。
[关键词] Linux;嵌入式;Web服务器; HTTP协议; TCP/ IP协议栈
[作者简介]祝继华(1983—),男,江西先锋软件职业技术学院网络工程系教师;熊 炎(1982—),男,江西先锋软件职业技术学院网络工程系教师。(江西南昌 330041)
随着计算机的日益普及,互联网的迅猛发展,信息共享程度的不断提高, Browser/Server方式已成为一种趋势和时尚,大部分网络应用系统都是以这种方式与网络用户交换信息。B/S的基础是客户端要有一个浏览器程序,服务器端要有一个与之对应的Web服务器。显然,Web服务器在B/S方式下起着决定性的作用,一般互联网站都采用功能强大的通用Web服务器,如Apache等。但是,对于一般的管理信息系统或中小型应用系统,所需的Web服务功能比较简单,若仍采用大型的通用Web服务器,将是一种资源的浪费,并且,在某些专用嵌入式系统内,由于内存容量有限,对实时性要求高,通用的Web服务器同样不能适应。此时,使用功能相对简单、体积更小、消耗资源更少、可便携的简单嵌入式Web服务器将更具优势。
一、嵌入式Web服务器的设计思想
嵌入式Web服务器不同于一般Web服务器。首先,在嵌入式系统中,由于存储器容量和处理器能力等外部条件的制约,嵌入式Web服务器不能对系统资源占用量很大的程序(如Java应用程序)提供支持,也不需处理外部很大流量的访问,但要能够为远程访问、管理和监控设备提供服务支持,并且嵌入式的Web服务器要做到尽可能的小。其次,为达到远程管理和监控设备的目的,必须使客户机能同本地系统进行交互,这种交互可使用很多种方法来实现,如SSI、Java、Serverlet等,但最适合嵌入式系统的方法是通用网关接口CGI。再次,嵌入式系统对安全性能有较高的要求,对动态应用内容的安全和验证是它必须要解决的问题。最后,嵌入式设备一般都没有硬盘,为实现基于文件的HTTP协议带来很多困难,嵌入式的Web服务器必须用辅助的软件来实现文件的映射问题。基于以上种种考虑,嵌入式Web服务器必须能在嵌入式系统的制约条件下,满足管理和监控嵌入式系统的需要。因此,它应该实现HTTP1.1协议的标准功能,实现HTTP认证协议中的相关内容,并实现对通用网关接口CGI的支持。
二、嵌入式Web服务器技术
1.嵌入式Web服务器体系结构。嵌入式Web服务器为基于3层B/S结构的瘦Web服务器。其中,Web服务器和客户端之间的通信协议采用HTTP 1.1,嵌入式实时多任务操作系统提供TCP/IP协议支持,编程接口为Berkerly Sockets4.3,Web服务器与数据库服务器间的交互接口为CGI(Common Gateway Interface)。
2.嵌入式Web服务器实现原理。从功能上讲,Web服务器监听客户端的服务请求,并根据客户请求的类型提供相应服务。嵌入式Web服务器是指将Web服务器引入到现场嵌入式设备中并驻留其中有限的代码空间内。与传统的Web应用相比简化了系统结构,在相应的软硬件平台支持下,利用标准的接口形式和通信协议,内嵌于嵌入式设备的Web服务器可以向任何接入它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面。用户端使用Web浏览器与Web服务器进行通信。客户端与服务器交换数据之前,首先用TCP/IP建立连接,客户端向服务器请求数据,服务器在接收到用户端的请求后,处理用户请求并返回需要的数据。这些数据可来自静态主页和文件,也可以根据请求动态产生。它是一种请求/响应协议,使用可靠的TCP连接,通常采用端口80。客户端和服务器间是以HTTP协议进行请求和响应。服务器和客户端只能为一次事务处理建立并维持连接,完成一次事务处理后便结束连接。由此可见,接收客户端请求、解析客户端请求、响应客户端请求、向客户端回送请求的结果是Web服务器所需完成的主要任务。
3.嵌入式Web服务器的主要设计技术与实现。嵌入式Web服务器的主要设计技术与实现与传统的Web服务器不同,嵌入式Web服务器是运行在资源有限的嵌入式系统上的,同时嵌入式领域一般仅要求提供必要的信息交互手段,因此,在设计中应尽可能使代码精简高效。采用的主要技术为:
(1)超文本传输协议HTTP。可持续连接HTTP协议是一个面向事务的、无状态的应用层协议,使用TCP作为传输层协议,知名的HTTP服务器端口是TCP的80端口。HTTP1.0不支持持续连接,由客户进程发起建立一条同服务器进程的TCP连接,然后发出请求并读取服务器进程的响应,服务器进程关闭连接表示本次响应结束。这样,对每一次请求和响应,都要通过TCP的3次握手建立连接,造成对网络资源的浪费。HTTP1.1对HTTP1.0最大的改进就是支持了持续连接,只用建立一次TCP连接而重复地使用它传送一系列的请求/响应消息,减少了额外开销。
(2)通用网关接口CGICGI。通用网关接口CGICGI是在Web服务器上运行外部程序的接口,它允许将其输出结果经HTTP服务器传送给Web浏览器。如果没有CGI,Web服务器就只能提供静态的文档和到其它页面或服务器的链接,有了CGI,程序就可以在后台进行各种动态的操作。CGI的主要功能是在Web环境下,从客户端传送一些信息给Web服务器,Web服务器把接收到的有关信息放入环境变量,然后再去启动所指定的CGI脚本以完成特定的工作。CGI脚本从环境变量中获取相关信息来运行,最后使用STDOUT输出HTML形式的结果文件,经Web服务器送回浏览器显示给用户。
(3)多进程服务器结构。采用多进程服务器结构从服务器响应用户请求的方式来看,有循环方式、多线程方式、多进程方式等多种模式。一般来说,在Windows操作系统下比较适用多线程方式。考虑到Linux操作系统的特点和Web服务器的特点,采用多进程方式来设计嵌入式Web服务器。对于每一个客户连接,服务器首先创建一个子进程,然后将连接套接字转向子进程的标准输入、标准输出。在子进程中服务器完成相应的HTTP服务,服务结束后终止了进程。
(4)TCP/IP协议栈。TCP/IP协议栈的实现主程序的循环包括:对接收到的TCP/IP数据帧进行解包,供应用程序使用;对欲发送的数据进行打包,将TCP/IP数据帧的格式发送出去两大部分。结合嵌入式系统的实际,本TCP/IP协议栈主要是实现ARP协议、IP协议、ICMP协议、TCP协议。
(5)实现虚拟下载。从Web服务器下载文件是客户端的重要需求,Web服务器响应下载请求最简单的办法就是直接将用户请求的数据文件从服务器磁盘上读出然后传给客户端。但有时需要调用一个CGI程序,由CGI程序读取数据,然后经过CGI程序加工后传给客户机。这就带来一个问题,即URL的文件名是所调用的CGI程序名而不是实际的数据文件名,这为用户在客户端存盘选择文件名带来极大不便。嵌入式Web服务器采用URL内部转向的方法,为用户提供虚拟下载文件名,较好地解决了这一问题。
三、结束语
嵌入式Web服务器是实现嵌入式系统通过Web方式与Internet互联的关键组成部分,直接影响网络应用系统的运行质量与效率,对其进行研究对嵌入式Internet技术的发展有重要意义。实践证明,在各种基于客户机/服务器模式的In-ternet应用中使用这种嵌入式Web服务器,可节省系统资源,提高运行效率,其功耗低、体积小、性能高、成本低廉、可便携、易于布置实施等特点,在应用环境灵活多变、任务响应实时性强、系统可靠性高等复杂应用领域中必将得到广泛应用,具有良好的发展前景。
[参考文献]
[1]曲波,吴兆芝.Linux环境下面向Web服务器的设计与实现[J].小型微型计算机系统,2002.
[2]符意德.嵌入式系统设计原理及应用[M].北京:清华大学出版社,2001.
[3] Jeremy Bentham.嵌入式系统Web服务器——TCP/IP Lean,陈向群等译[M] .北京:机械工业出版社,2003.
[责任编辑:李丽娜]
[关键词] Linux;嵌入式;Web服务器; HTTP协议; TCP/ IP协议栈
[作者简介]祝继华(1983—),男,江西先锋软件职业技术学院网络工程系教师;熊 炎(1982—),男,江西先锋软件职业技术学院网络工程系教师。(江西南昌 330041)
随着计算机的日益普及,互联网的迅猛发展,信息共享程度的不断提高, Browser/Server方式已成为一种趋势和时尚,大部分网络应用系统都是以这种方式与网络用户交换信息。B/S的基础是客户端要有一个浏览器程序,服务器端要有一个与之对应的Web服务器。显然,Web服务器在B/S方式下起着决定性的作用,一般互联网站都采用功能强大的通用Web服务器,如Apache等。但是,对于一般的管理信息系统或中小型应用系统,所需的Web服务功能比较简单,若仍采用大型的通用Web服务器,将是一种资源的浪费,并且,在某些专用嵌入式系统内,由于内存容量有限,对实时性要求高,通用的Web服务器同样不能适应。此时,使用功能相对简单、体积更小、消耗资源更少、可便携的简单嵌入式Web服务器将更具优势。
一、嵌入式Web服务器的设计思想
嵌入式Web服务器不同于一般Web服务器。首先,在嵌入式系统中,由于存储器容量和处理器能力等外部条件的制约,嵌入式Web服务器不能对系统资源占用量很大的程序(如Java应用程序)提供支持,也不需处理外部很大流量的访问,但要能够为远程访问、管理和监控设备提供服务支持,并且嵌入式的Web服务器要做到尽可能的小。其次,为达到远程管理和监控设备的目的,必须使客户机能同本地系统进行交互,这种交互可使用很多种方法来实现,如SSI、Java、Serverlet等,但最适合嵌入式系统的方法是通用网关接口CGI。再次,嵌入式系统对安全性能有较高的要求,对动态应用内容的安全和验证是它必须要解决的问题。最后,嵌入式设备一般都没有硬盘,为实现基于文件的HTTP协议带来很多困难,嵌入式的Web服务器必须用辅助的软件来实现文件的映射问题。基于以上种种考虑,嵌入式Web服务器必须能在嵌入式系统的制约条件下,满足管理和监控嵌入式系统的需要。因此,它应该实现HTTP1.1协议的标准功能,实现HTTP认证协议中的相关内容,并实现对通用网关接口CGI的支持。
二、嵌入式Web服务器技术
1.嵌入式Web服务器体系结构。嵌入式Web服务器为基于3层B/S结构的瘦Web服务器。其中,Web服务器和客户端之间的通信协议采用HTTP 1.1,嵌入式实时多任务操作系统提供TCP/IP协议支持,编程接口为Berkerly Sockets4.3,Web服务器与数据库服务器间的交互接口为CGI(Common Gateway Interface)。
2.嵌入式Web服务器实现原理。从功能上讲,Web服务器监听客户端的服务请求,并根据客户请求的类型提供相应服务。嵌入式Web服务器是指将Web服务器引入到现场嵌入式设备中并驻留其中有限的代码空间内。与传统的Web应用相比简化了系统结构,在相应的软硬件平台支持下,利用标准的接口形式和通信协议,内嵌于嵌入式设备的Web服务器可以向任何接入它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面。用户端使用Web浏览器与Web服务器进行通信。客户端与服务器交换数据之前,首先用TCP/IP建立连接,客户端向服务器请求数据,服务器在接收到用户端的请求后,处理用户请求并返回需要的数据。这些数据可来自静态主页和文件,也可以根据请求动态产生。它是一种请求/响应协议,使用可靠的TCP连接,通常采用端口80。客户端和服务器间是以HTTP协议进行请求和响应。服务器和客户端只能为一次事务处理建立并维持连接,完成一次事务处理后便结束连接。由此可见,接收客户端请求、解析客户端请求、响应客户端请求、向客户端回送请求的结果是Web服务器所需完成的主要任务。
3.嵌入式Web服务器的主要设计技术与实现。嵌入式Web服务器的主要设计技术与实现与传统的Web服务器不同,嵌入式Web服务器是运行在资源有限的嵌入式系统上的,同时嵌入式领域一般仅要求提供必要的信息交互手段,因此,在设计中应尽可能使代码精简高效。采用的主要技术为:
(1)超文本传输协议HTTP。可持续连接HTTP协议是一个面向事务的、无状态的应用层协议,使用TCP作为传输层协议,知名的HTTP服务器端口是TCP的80端口。HTTP1.0不支持持续连接,由客户进程发起建立一条同服务器进程的TCP连接,然后发出请求并读取服务器进程的响应,服务器进程关闭连接表示本次响应结束。这样,对每一次请求和响应,都要通过TCP的3次握手建立连接,造成对网络资源的浪费。HTTP1.1对HTTP1.0最大的改进就是支持了持续连接,只用建立一次TCP连接而重复地使用它传送一系列的请求/响应消息,减少了额外开销。
(2)通用网关接口CGICGI。通用网关接口CGICGI是在Web服务器上运行外部程序的接口,它允许将其输出结果经HTTP服务器传送给Web浏览器。如果没有CGI,Web服务器就只能提供静态的文档和到其它页面或服务器的链接,有了CGI,程序就可以在后台进行各种动态的操作。CGI的主要功能是在Web环境下,从客户端传送一些信息给Web服务器,Web服务器把接收到的有关信息放入环境变量,然后再去启动所指定的CGI脚本以完成特定的工作。CGI脚本从环境变量中获取相关信息来运行,最后使用STDOUT输出HTML形式的结果文件,经Web服务器送回浏览器显示给用户。
(3)多进程服务器结构。采用多进程服务器结构从服务器响应用户请求的方式来看,有循环方式、多线程方式、多进程方式等多种模式。一般来说,在Windows操作系统下比较适用多线程方式。考虑到Linux操作系统的特点和Web服务器的特点,采用多进程方式来设计嵌入式Web服务器。对于每一个客户连接,服务器首先创建一个子进程,然后将连接套接字转向子进程的标准输入、标准输出。在子进程中服务器完成相应的HTTP服务,服务结束后终止了进程。
(4)TCP/IP协议栈。TCP/IP协议栈的实现主程序的循环包括:对接收到的TCP/IP数据帧进行解包,供应用程序使用;对欲发送的数据进行打包,将TCP/IP数据帧的格式发送出去两大部分。结合嵌入式系统的实际,本TCP/IP协议栈主要是实现ARP协议、IP协议、ICMP协议、TCP协议。
(5)实现虚拟下载。从Web服务器下载文件是客户端的重要需求,Web服务器响应下载请求最简单的办法就是直接将用户请求的数据文件从服务器磁盘上读出然后传给客户端。但有时需要调用一个CGI程序,由CGI程序读取数据,然后经过CGI程序加工后传给客户机。这就带来一个问题,即URL的文件名是所调用的CGI程序名而不是实际的数据文件名,这为用户在客户端存盘选择文件名带来极大不便。嵌入式Web服务器采用URL内部转向的方法,为用户提供虚拟下载文件名,较好地解决了这一问题。
三、结束语
嵌入式Web服务器是实现嵌入式系统通过Web方式与Internet互联的关键组成部分,直接影响网络应用系统的运行质量与效率,对其进行研究对嵌入式Internet技术的发展有重要意义。实践证明,在各种基于客户机/服务器模式的In-ternet应用中使用这种嵌入式Web服务器,可节省系统资源,提高运行效率,其功耗低、体积小、性能高、成本低廉、可便携、易于布置实施等特点,在应用环境灵活多变、任务响应实时性强、系统可靠性高等复杂应用领域中必将得到广泛应用,具有良好的发展前景。
[参考文献]
[1]曲波,吴兆芝.Linux环境下面向Web服务器的设计与实现[J].小型微型计算机系统,2002.
[2]符意德.嵌入式系统设计原理及应用[M].北京:清华大学出版社,2001.
[3] Jeremy Bentham.嵌入式系统Web服务器——TCP/IP Lean,陈向群等译[M] .北京:机械工业出版社,2003.
[责任编辑:李丽娜]