茅勝榮,肖家文,喬東海
(蘇州大學 電子信息學院,蘇州215006)
?
茅勝榮,肖家文,喬東海
(蘇州大學 電子信息學院,蘇州215006)
在HTML5的時代下,隨著Web服務器的數量與日俱增,B/S(Browser/Server)模型得到了更加廣泛的應用。在嵌入式領域,客戶端可以實現遠程監(jiān)控服務器的功能,這不僅需要服務器解析用戶請求,而且需要對用戶指令作出快速準確的響應。本文在OSI互聯參考模型的基礎上,深入研究HTTP通信機制,拋棄了現有復雜的Web服務器框架,自主搭建了一個在單片機上運行的Web服務器,它能即時響應HTML網頁、JavaScript腳本和CSS樣式的請求,且具有占用資源少、運行效率高、安全性好、低功耗、低成本的特點。
Web服務器;W5500;嵌入式以太網;DHCP協議;HTTP協議
在PC上搭建Web服務器的主流做法是LAMP(Linux+Apache+MySQL+PHP)或者LNMP(Linux+Nginx+MySQL+PHP),這兩種方式都需要底層操作系統(tǒng)的支持。而在一些點對點通信的物聯網情境中,如果用戶想通過瀏覽器或者App向節(jié)點發(fā)送請求,那么前面兩種框架就顯得冗余、復雜且成本高。本文通過對HTTP通信機制的研究,在MSP430單片機和W5500以太網芯片上搭建了一個精簡、安全的Web服務器。
傳統(tǒng)的以太網芯片例如ENC28J60、DM9000,僅封裝了PHY(物理層)和MAC(介質訪問控制層),從網絡層開始都需要軟件實現,如LwIP協議棧。軟件協議棧占用的系統(tǒng)資源是非常可觀的,如果運行在低性能的處理器上,處理器將無法及時響應用戶的請求。而本文采用的W5500芯片不僅集成了PHY和MAC層,內部的邏輯門電路還實現了TCP/IP協議棧里的傳輸層和網絡層,如TCP、UDP、ICMP、IPv4、IGMP等協議[1],這樣主控芯片只需要承擔TCP/IP應用層控制信息的邏輯任務,大大提高了系統(tǒng)效率。此外硬件TCP/IP的不可攻擊性,保證了在此基礎上搭建的Web服務器的安全性。W5500對外接口為通用的80 MHz高速SPI,但是高速信號在受電磁串擾和長信號線的影響下會失真,所以本文采用具有穩(wěn)定波形的10 MHz同步時鐘。圖1展示了W5500內部結構圖。
圖1 W5500內部結構圖
1.1PHY
W5500的物理層支持全/半雙工的10BaseT和100BaseTX的標準,支持自動協商,不支持Auto MDI/MDIX(自動極性變換),因此用戶需要使用直通線與交換機或路由器連接,使用交叉線與終端設備相連接,如果對方設備支持自動極性變換,則可選用任何一種網線。配置W5500的PHYCFGR寄存器來設置網卡的工作模式,在默認情況下,W5500執(zhí)行100BaseTX標準的全雙工通信。
1.2MAC
數據鏈路層實際上由兩個獨立的部分組成:介質存取控制(MAC)和邏輯鏈路控制(LLC)。其中MAC確保信息跨鏈路的可靠傳輸、同步數據傳輸、識別錯誤和控制數據流方向。以太網數據幀必須獲取接收方的MAC地址才能成功發(fā)送,通過讀/寫W5500的SHAR寄存器,可以獲取/修改MAC地址信息。W5500內部集成MAC,能夠自動實現以太網數據幀的解析和打包并以廣播的方式發(fā)送幀,數據鏈路層便能在多個網絡節(jié)點間傳送數據。
1.3網絡層
網絡層負責在源和終點之間建立連接、網絡尋址、流量控制、錯誤檢查等。相同MAC標準的不同網段之間的數據傳輸一般只涉及到數據鏈路層,而不同的MAC標準之間的數據傳輸則涉及到網絡層。W5500內部集成IPv4,其中GAR、SUBR、SIPR寄存器分別用來配置網關、子網掩碼和本地IP地址的信息。
1.4傳輸層
傳輸層向高層提供可靠的端到端網絡數據流服務,包括流控、多路傳輸、虛電路管理以及差錯校驗和恢復。數據包中必須包含端口信息才能實現端到端的通信,典型的傳輸層協議有UDP和TCP協議。UDP是最簡單的傳輸層協議,綁定端口號便能發(fā)送請求,而TCP需要經過三次握手后才能建立可靠穩(wěn)定的連接。W5500內部集成了這兩種傳輸層協議,可以通過配置Sn_MR寄存器來進行選擇。不同的上層應用需要綁定不同的端口號,配置W5500的Sn_PORT和Sn_DPORT寄存器可以分別指定源與目標的端口號。
基于W5500的Web服務器的硬件電路圖略——編者注。為了降低系統(tǒng)功耗,本文采用低功耗主控芯片MSP430。RJ45插座需要連接以太網變壓器,但是實際采用的HR911105A已經將兩者封裝在一起。W5500與MSP430采用四線制的SPI通信,同步時鐘速率為10 MHz。
為了實現即插即用,物聯網中每個節(jié)點的IP地址是動態(tài)分配的,即節(jié)點需要實現DHCP協議的功能。DHCP是建立在UDP協議之上的應用層協議,客戶端與服務器的端口號分別是68和67,協議的具體細節(jié)參考RCF2131[2]。W5500作為DHCP的客戶端,向DHCP服務器發(fā)出請求,請求的過程主要分4個階段:發(fā)現階段、提供階段、選擇階段和確認階段。圖2為W5500上電后通過DHCP協議獲取IP地址的軟件流程圖。
圖2 DHCP軟件流程圖
W5500廣播發(fā)送DHCPDISCOVER消息(IP地址租賃申請),DHCP服務器收到后廣播回應DHCPOFFER消息(IP地址租賃提供),W5500接收后向該服務器發(fā)送DHCPREQUEST消息以確認分配到的IP地址,最后DHCP服務器將會發(fā)送DHCPACK消息來通知客戶端可以使用該IP地址。
Web服務器是遵循HTTP協議標準的上層應用軟件,傳輸層采用TCP協議,可靠性高,通信端口為80。
4.1報文格式
HTTP消息是由客戶端請求和服務器響應組成的,圖3為HTTP報文的格式。其中,請求方法主要有兩種:GET和POST。GET是向服務器索取數據的一種請求,POST是向服務器提交數據的一種請求,提交的數據位于請求頭后面的數據實體中。報文中具體字段的含義與取值參考RFC2616[3]。
4.2HTTP Server軟件流程
HTTP Server軟件流程略——編者注。主程序首先為HTTP Server分配socket,socket數越多,服務器處理并發(fā)情況的能力越強,W5500最多支持8個socket同時運行。而后服務器端底層的操作(如軟件重啟、關看門狗等)將以回調函數的形式注冊在HTTP Server中。請求訪問的網頁數據以字符串的形式保存在Flash中,并把地址注冊至服務器。啟動某一個HTTP Server進程,監(jiān)聽客戶端對80端口的TCP連接請求,經過“三次握手”,服務器與客戶端建立可靠的端到端連接。當服務器接收到來自客戶端的數據請求后,會根據URI地址信息判斷請求內容的類型,并解析出其請求方式,主要可以分為GET方式的CGI請求、POST方式的CGI請求和GET方式的其他請求。
服務器若收到GET方式的CGI請求,則返回一段包含服務器當前的信息的JavaScript代碼。若收到GET方式的普通請求,則返回客戶端請求的文本內容。若收到POST方式的CGI請求,其請求中通常包含客戶端提交的表單數據,服務器須接收、解析并保存用戶提交的信息。
4.3網頁設計
在網頁三要素中,HTML用來構建網頁的框架,CSS樣式表在框架的基礎上豐富網頁的表現力,JavaScript腳本讓整個網頁實現了動態(tài)的效果[4]。本文設計的網頁能夠動態(tài)顯示W5500服務器的基本信息,并能夠對服務器進行一些簡單的配置。在index.html中,為body注冊onload監(jiān)聽函數,指向getNetinfo()函數:"
"。getNetinfo函數創(chuàng)建一個AJAX(Asynchronous JavaScript And XML)對象,設置好該對象的監(jiān)聽事件以及監(jiān)聽函數,然后以GET的方式發(fā)送請求:"oUpdate=new AJAX('get_netinfo.cgi', function (responseText))”,"oUpdate.doGet();"。由function去執(zhí)行AJAX對象接收到的JavaScript腳本:"eval(responseText) "。AJAX能夠讓阻塞UI的任務在后臺運行,提高了網頁瀏覽的流暢度。Mao Shengrong,Xiao Jiawen,Qiao Donghai
(School of Electronic Information,Soochow University,Suzhou 215006,China)
In the era of HTML5,the B/S(Browser/Server) model has been applied in many applications with the number of Web server increasing.In the embedded field,if the client wants to realize the function of the remote monitoring server,the Web server not only need to parse the user requests,but also need to make a quick and accurate response to the commands.Based on the OSI reference model and the HTTP communication,a Web server is established,which can run in a microcontroller,without any complex web server framework.It can give a real-time response to the traditional requests like HTML,JavaScript and CSS,and has the characteristics such as low resource consumption,high efficiency,good security,low power consumption and low cost.
Web server;W5500;embedded Ethernet;DHCP protocol;HTTP protocol
圖3 HTTP報文格式
TP393.1
A