世界微动态丨基于Linux的WEB服务器的设计原理是什么?如何实现的?
在生活中,很多人都不知道基于Linux的WEB服务器的设计与实现是什么意思,其实他的意思是非常简单的,下面就是小编搜索到的基于Linux的WEB服务器的设计与实现相关的一些知识,我们一起来学习下吧!
嵌入式WEB服务器的主要设计思想就是将嵌入式系统和 WEB技术结合起来,将 WEB技术引入到现场测量和控制设备中,从而实现基于嵌入式 WEB服务器的控制系统。用户可以通过现有的公共通信网络,使用标准的 Web浏览器作为接口直接对现场的控制设备进行访问,监控和维护等操作,实现了异构设备之间的跨平台互访。 1嵌入式 Web服务器总体设计
系统硬件设计如图 1所示。嵌入式 WEB服务器由网络模块、接口模块和存储模块三个部分组成。网络模块是整个嵌入式 WEB服务器的核心,负责完成服务器的初始化,并且在 80端口等待用户的连接请求。根据用户请求的类型提供相应的服务。此外还要实现电子邮件功能,用来完成自动报警和数据的保存,此外通过选择以太网或者电话线进入 Internet。
(资料图片仅供参考)
接口模块及存储模块。为了使 WEB服务器具有更好的通用性,在系统提供了一些通用接口,如 RS-232、RS-485、CAN、Modem、Ethernet。可以和不同接口的控制设备进行连接;系统提供了一个建立在外部串行 Flash芯片上的小型文件系统,主要用来存放操作系统,嵌入式 Web服务器需要发布的网页和运行的程序。而各个接口采集的数据暂时存放在 1 M的 RAM里,每隔一定的时间就将数据通过电子邮件发送到指定的邮箱,然后覆盖原有的数据。
1.1 LX972ALC网络通讯接口电路电路设计
DS80C400网络微控制器是目前集成度最高的 8 0 5 1器件。集成外设包括 1 0/1 0 0M以太网控制器,三个串行端口,一个 CAN 2.0B控制器, 1-Wire主机和 64个 I/O引脚。能够通过以太网 M AC提供高达 5Mbps的吞吐率。24位寻址方式简化了对于大容量程序或数据存储器的访问,支持高达 1 6 M B的连续存储空间。 LXT972ALC是 Intel公司推出的遵循正 IEEE标准的网络通讯接口电路,支持 10M/100M的双绞线应用,同时也支持 100Mb/s的光纤接口;该电路提供的 MII口能很好的符合 10/100MACs。
其主要完成的是 IEEE802.3标准定义的物理编码子层 (PCS)、物理媒体附加子层 (PMA)和物理媒体独立子层 (PMD)的主要功能。单片机与芯片的电路如图 2所示:
当合法的数据出现在 RXD上的时候, LXT972ALC使 RX_DV有效,当合法的数据出现在 TXD上的时候,DSS0C400使 TX_EN有效;当 LXT972ALC检测到帧中有错误时,它使 RX_ER有效;当 DSSOC400缓冲器没有准备好时,它使 TX_ER有效;当发送或者接收没有处于空闲状态时,LX972ALC使 CRS有效;当 LXT972AL检测到冲突时,它使 COL有效,
并且在冲突期间一直保持高电平,如果 COL失效,那么 RX进入跟踪模式。MDIO是 PHY管理数据的时钟,MDIO是 PHY和 MAC之间控制信息的接口。 MDIO是通过软件实现高级控制,因此必须通过并行口来实现。
1.2 Modem接口设计
本系统利用主控制器的 UART2进行模拟 Modem通信的基本过程:DS80C400先把准备写入串行设备的数据发送到 UART的寄存器中,再通过 FIFO传送到串行设备。 Modem接口电路我们采用芯片 MAX213EAI。MAXZ13EAI是 5V工作电源的 RS-232电平转换芯片。它集成了 4个输入和 5个输出的 RS-232电平转换口,可以很好的满足 Modem接口标准传输的需要。接口电路如图 3所示。
2 嵌入式
WEB服务器软件设计从设计角度,则可将嵌入式软件分为 4个模块:网络通讯模块、接口管理模块、人机交互模块和远程加载模块。
2.1 网络通讯模块设计
2.1.1 以太网接入 Internet的实现
嵌入式 WEB服务器是沟通客户和控制现场的重要桥梁,客户通过认 Web浏览器来实现远程监控的功能。本 WEB服务是以 TCP/IP协议来传输数据,以 HTTP协议来进行客户端与服务器之间的请求和响应,其体系结构如图 4所示。
当客户在界面上进行操作时,如点击复选框或在文本框中输入数据。 Applet根据用户的操作进行响应,从而构造出新的命令字,向嵌入式 WEB服务器发出请求,服务器根据新的命令字驱动控制系统中相应的执行机构,并将新的状态信息和数据信息返回到客户端,客户端解析返回的数据,并进行实时显示。
2.1.2公用电话网接入 Internet的实现
为保证能在无以太网环境的情况下进行通信,系统还采用了串口外接调制解调器通过电话网来实现与远程客户机的通信。网络建立的实现就要用到 PPP协议(Point to Point Protocol点对点协议)。在程序运行的时候先要读取 PPP通信的控制信息,判断是否使用 PPP进行通信,否则默认使用 Ethernet来进行数据的传输。而不是同时开启这两种模式。
由于 PPP通信并不区分客户端和服务器,把负责认证和 IP分配的端认为是服务器,而不需要认证和使用服务器提供 IP的端认为是客户端。设计了 LinkManger类、PPPDaemon类、PPPModemLink类、ModemCommand类、PPPException类,用来实现 PPP通信。其中 LinkManger类:用于管理 PPP连接,启动经由网络接到远端服务器的出站连接,生成一个 PPPDaemon实例用来设置 IP,验证用户名和密码。并实现接收 PPP事务。
PPPModemLink类首先打开一个串口并进行初始化,初始化完成后,把一个串口的对象传递给 PPP,然后创建 ModemCommand对象来控制与调制解调器的串行通信,并通过 SerialPortEvenlistener接口监视 CD以检测调制解调器是否挂起。其定义了 Modem的初始化和复位方法:initializeLink()和 resetModem()。
ModemCommand类负责和 modem具体的串行通信,其分别定义了 sendcommand()、 waitFoResponse()和 receiveCommand()方法。分别用来发送、等待和接收命令。当操作超时,则抛出 DataLinkException;waitforMatc()主要用来供 sendCommand()和 receiveCommand()进行调用,用来判断接收到的字符串是否和匹配字符串一致。当相应操作超时,则抛出 DataLinkException。