隨著物聯網技術與移動互聯網的發展,基于Web的應用正逐漸成為個人業務的主流選擇。隨著嵌入式芯片的處理能力不斷提升,移動嵌入式Web服務器占據了一定的市場,在中小型系統方面,傳統的基于PC端的Web服務器在成本及網絡架構上遜于嵌人式Web服務器,利用嵌入式設備的硬件資源,在嵌入式設備上建立HTTP服務器及Web頁面,遠程用戶通過瀏覽器實現對嵌入式設備的遠程查看、管理和控制。
目前移動嵌入式Web服務器應用廣泛,特別是家庭網絡、環境監測、物聯網農業,甚至是電力行業,例如Web服務器在光伏發電監控系統中的應用¨1,基于嵌入式處理器的Web服務器在網絡監控系統中的應用舊1。除此之外,移動嵌入式Web服務器特別適合以個人輕量級業務為主的應用場景,大型業務系統可以考慮使用分布式的移動嵌入式Web服務器系統。
用戶訪問Web服務器,一般都會直接輸入服務器域名進行站點訪問,而根據移動嵌入式Web服務器應用場景的特點,接人Internet的IP地址大多不是固定的,而是采用撥號方式連接上網,特別是以3G通信方式接人Internet網絡,均采用撥號方式接入公網,而每次撥號,電信運營商分配的IP地址都有變化,因此公網中原來的IP地址與域名對應的關系應及時更新,否則用戶無法通過域名訪問Web服務器,將新的IP地址與域名進行更新則是由DDNS模塊來完成。DDNS模塊將更新請求發送至DDNS服務器,DDNS服務器將最新的IP地址與域名映射關系發送給DNS更新,如此新的IP地址與域名對應關系便在公網登記,以便公網用戶時刻都能通過域名訪問Web服務器。
目前,移動嵌入式Web服務器方面的研究更偏向于Web實現及服務器數據處理,文獻[3]就是對Web實現所做的研究,而對Web服務器接入網絡方面所做研究甚少。本文研究DDNS在移動嵌入式Web服務器中的應用,解決遠程用戶訪問動態IP移動嵌入式Web服務器的問題。
1、移動嵌入式Web服務器優勢
1.1移動嵌入式Web服務器優勢
移動嵌入式Web服務器相比于PC端服務器,充分利用嵌入式設備的硬件條件,建立Web服務器,節省了硬件成本,不必再為建立Web服務器準備硬件資源。優化網絡結構,傳統的嵌入式設備只是作為數據匯聚和轉發的功能,起著網關作用,上層建立了專門的服務器系統,嵌入式設備需將數據上傳至服務器供服務器管理,而訪問者不直接訪問嵌入式設備,而是直接訪問服務器獲取數據信息。現采用移動嵌人式Web服務器,訪問者直接高效可靠地通過嵌人式設備上的Web服務器實現遠程網管信息的傳送、控制、展示和管理。在很大程度上簡化了網絡結構”。
移動嵌入式Web服務的便捷性更高,應用更加廣泛,嵌入式網絡結構靈活,靜態移動嵌入式Web服務器在一定程度上限制了嵌入式網絡的組建與擴展。
當嵌入式網絡結構改變時,服務器節點有可能變動,此時不需要知道服務器IP地址,只需要采用DDNS服務器將域名與新IP更新。又比如搭建個人智能家居系統,一般而言,運營商分配個人的是動態IP地址,用戶在遠程無法通過域名訪問建立智能家居Web服務器,而需要采用DDNS服務器來完成定期的動態域名與IP更新。
1.2 DDNS技術在移動嵌入式Web服務器的優勢
移動嵌入式Web服務器、DDNS服務器、DNS服務器及用戶端具體網絡結構圖如圖1所示。
用戶端通過域名訪問移動嵌人式Web服務器,域名通過DNS服務器解析得到IP地址,實際上用戶是根據IP地址實現對Web服務器的訪問,通信流程如圖1實線所示。當域名與IP地址對應關系保持不變時,公網的DNS服務器一直保存著這對映射關系,用戶可以輕松實現通過域名訪問移動嵌入式Web服務器,但若IP地址有變化時,而DNS服務器不對最新IP與域名映射關系進行更新,用戶便無法通過域名訪問服務器,解決這一關鍵問題就是DDNS,通信流程參考圖1虛線所示。
利用DDNS技術來保證域名與IP地址映射關系正確比使用靜態IP地址服務器具有明顯的優勢。IP地址有限,而且電信運營商分配靜態IP地址的數目特別少,大多是分配的動態IP地址,設備的每一次撥號都可能分配到一個不同的IP地址,因此采用DDNS技術很好地解決了IP地址數目有限的問題。
從成本方面來說,分配靜態IP地址比撥號動態分配IP地址價格要昂貴得多,擁有靜態IP地址不適合輕量級業務的嵌人式應用場合。
目前,DDNS技術越來越成熟,國內外的DDNS服務供應商也層出不窮,比如國外的DynDNS.org和國內的花生殼等,都能很好地滿足中小企業在DDNS上的需求。
2、移動嵌入式Web服務器接入方案設計
2.1 擴展DDNS的嵌入式服務器架構
對于移動嵌入式Web服務器而言,與不具有Web服務器嵌入式模塊最大的區別就是包含HTTP服務器,HTTP服務器作為嵌入式設備的擴展模塊,可根據需求來定制,這也是嵌入式系統的優點之一,方便模塊定制和裁剪。HTTP服務器模塊主要負責自身任務管理,同時提供HTTP對Web頁面請求做出響應,并且接受遠程訪問者的數據請求,這主要是完成HTTP協議的解析,即將遠程訪問者的HTTP報文解析并做出相應的回復。
如圖2所示,嵌入式設備軟件根據功能需求各有區別,尤其是擴展模塊,都是量體裁衣,圖2描述了保護DDNS功能的移動嵌入式Web服務器共有的模塊,主要有Web頁面、HTTP服務器、網絡通信模塊、數據存儲區,網絡通信模塊既包括有線通信也包括3G或者WiFi等無線通信,本文擴展了DDNS模塊,其他通用模塊未在圖2中列出。
Web界面將請求發至HTTP服務器,HTTP服務器Hand request接收到請求,一方面將數據存儲,另一方面將消息發送至主控軟件采取相應動作完成功能。將請求數據存儲的目的是為了保證各進程模塊共享數據內存,采用開鎖、存取、關鎖的機制,保證數據能在不同進程之間共享。比如界面有一條配置溫度傳感器告警閾值的請求,HTTP服務器將閾值存人數據存儲區,同時又發消息至主控軟件中的控制溫度傳感器進程,提示有閾值更新,告訴該進程讀取最新閾值判斷是否超過閾值,有溫度告警。HTTP服務器與主控軟件及數據存儲區均是雙向通信。HTTP服務器與網絡通信模塊之間的雙向通信是遠程客戶通過網絡通信模塊訪問Web頁面,并產生Web請求,同時HTTP服務器將響應通過Web頁面反饋給客戶。DDNS守護進程根據IP地址的變動發送DNS更新消息至通信模塊到DNS服務器,更新現在的IP,服務商將新IP地址及域名更新后,回復給DDNS。DDNS采用客戶端/服務器模式,在此,DDNS客戶端即嵌入式設備,最主要的作用即向DDNS服務器發送更新域名和IP地址對應關系的DDNS更新請求,當服務器的IP地址發生變化時,它們將作為DDNS客戶端,需要動態更新域名和IP地址對應關系的設備。DDNS服務器負責通知DNS服務器動態更新域名和IP地址之間的對應關系。接收到DDNS客戶端的更新請求后,DDNS服務器通知DNS服務器重新建立域名和IP地址之間的對應關系。從而保證即使DDNS客戶端的IP地址改變,Internet用戶仍然可以通過同樣的域名訪問DDNS客戶端。
通過DDNS技術,嵌入式設備將撥號上網獲得的IP與自己的域名綁定,從而保證遠端用戶能夠通過域名訪問移動嵌入式Web服務器。
2.2 DDNS工作流程
DDNS的主要職責是將網絡撥號電信運營商分配的新IP地址與域名發送給遠端DDNS服務器,DDNS服務器將IP與域名對應關系更新后傳送給DNS服務器,這樣域名與新IP地址映射關系就在公網中進行了登記,遠程用戶就可以根據域名訪問擁有新IP地址的移動嵌入式Web服務器。DDNS工作流程如圖3所示。
當移動嵌入式Web服務器上電后,系統先進行硬件初始化及主控軟件初始化,然后開啟DDNS模塊的守護進程,在守護進程中開啟一條線程監控網絡撥號狀態,如果有網絡撥號動作發生,則取得最新口地址與原IP地址進行判斷;若發現電信運營商分配的IP地址有改變,則將DDNS緩沖區初始化,并在time_to_quit時間內與第一個DDNS服務器發起連接請求,time_to_quit為移動嵌入式Web服務器與DDNS服務器連接成功的最大時間,否則連接超時;連接成功后調用更新程序,根據供應商提供的報文格式填充報文并用socket發送出去;等待服務器回應,DDNS服務器若將新的IP地址與域名更新成功,返回request successful。若返回失敗,則依次選擇第2個DDNS服務器發起連接請求直至新的IP地址與域名在公網登記成功。
2.3報文結構分析
2.3.1發送報文填充
發送報文的填充格式與DDNS服務供應商有直接關系,每個DDNS服務供應商都有不同的DDNS請求報文格式,但就Linux平臺來說,大體格式基本一致,都需要填充服務器域名地址、主機設備用戶名及密碼、用戶代碼等信息。
本文主要使用3個DDNS供應商,分別是DynDNS.org、3322服務器和oray服務器。
DynDNS.org的報文格式為:
GET /nic/update? system=statDNS&hostname = XXX.dynDNS.orgdmaylP=1.1.1.1&wildeard=ON HTTP/1.0
Authorization:Basic usemme&password
User-Agent:bcm-daemon-0.1[Linux]
Host:members.dynDNS.org
members.3322.org的報文格式為:
GET/dynDNS/update?system=dynDNS&hostname=XXX.3322.org&mylP=1.1.1.1&wildeard=OFF&mx=mail.icg.com&backmx=NO&off]ine=NO HTTP/1.1 \r
Host:members.3322.org
Authorization:Basic username&password
User-Agent:icg gw DDNS client 1.0
花生殼oray服務器供應商DDNS.oray.COB供應商報文格式為:
GET/ph/update? Hostname=yourhostname&myIP=1.1.1.1 HTTP/1.0
Host:DDNS.oray.com
Authorization:Basic base -64- authorization
User-Agent:Oray
發送消息之間,嚴格按照報文格式組建報文,否則報文在DDNS服務器端將不被識別。
2.3.2返回代碼解析
DDNS更新請求發送至DDNS服務器后,等待從DDNS服務器響應的返回值及返回代碼,根據返回值與返回代碼,判斷新IP地址與域名更新情況。
代碼返回值為-1,且會返回strange server response,are you connecting to the right server表示服務器域名不正確。返回401表示認證失敗,花生殼DDNS服務供應商返回401表示未付費用戶訪問了付費DDNS服務器供應商。返回值為200表示發送至服務器成功,且服務器返回相應代碼,具體代碼列表如表1所示。
3、功能驗證
打開嵌入式網關,連接好設備,在串口設備里可以看到DDNS模塊所發報文信息,嵌入式網關設備串口為COM9,打開串口設備,可以查看到DDNS發送報文。如圖4所示。
報文結構如圖4所示,返回成功后,收到request successful,表示花生殼域名服務器已經將目前的IP地址更新,域名ht825.oicp.net對應的IP地址是124.42.77.160,這樣直接訪問域名ht825.oicp.net就可以直接訪問124.42.77.160了。如果由于網絡重新撥號,運營商分配的IP地址不是固定的,分配的IP地址有了變化,此時DDNS模塊便會將新的IP地址填進報文并發送至花生殼服務器,服務器更新域名與IP地址映射,保證外網用戶可以根據域名訪問服務器。
驗證返回200,同時返回request success。能根據域名ht825.oicp.net解析到IP地址,但免費的花生殼服務器出現了偶爾不穩定的情況。
驗證方法可以通過ping域名的方式驗證,也可以通過HTTP的方式驗證,如圖5所示。
在瀏覽器中輸入:http://ht825:raisecomht825@ddns.oray.com/ph/update?hostname=ht825.oicp.net&myip=,即輸入用戶名和密碼、域名服務器、域名,就可以更新網絡上的域名及IP最新的映射關系,上文訪問域名ht825.oicp.net返回的是本主機入公網的IP地址。
本文的研究重點并不是建立Web服務器,而是在討論DDNS的應用,做了一個簡單網頁,作為Web服務器來驗證DDNS功能,在遠程任意一臺可以連入Internet的計算機訪問ht825.oicp.net便可以訪問所建的Web瀏覽器。如圖6所示。
遠程用戶在瀏覽器輸入Web服務器域名后,就可以訪問移動嵌入式Web服務器,該服務器的主頁顯示是一個登錄頁面,輸入用戶名和密碼登錄即可。本文所建Web網站僅為遠程訪問嵌入式Web實驗測試,并沒有太多的功能,在實際的應用中,應根據嵌人式模塊的功能需求來建立嵌入式web頁面,比如智能家居嵌入式Web頁面、環境監測嵌入式Web頁面等。
4、小結
本文將DDNS技術運用于移動嵌入式Web服務器,解決了遠程用戶訪問動態IP移動嵌入式Web服務器的問題,將DDNS模塊作為獨立模塊可加載到任何需要使用Web服務器的嵌入式設備上,具有一定的通用性。物聯網技術的快速發展,傳感器節點的增多,移動嵌入式Web服務器將有更多的用武之地,DDNS技術將在移動嵌入式Web服務器的搭建中起到重要作用。
下一步研究應重點考慮建立通用的DDNS模塊,可以獨立配置加載,這樣只需要在嵌入式系統整個軟件編譯的時候,將DDNS模塊加載進去即可,增加了DDNS模塊的配置性及適用性;同時應當增加更多的DDNS服務器供應商,增強DDNS模塊解析功能,保證DDNS模塊解析的速度。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://m.vmgcyvh.cn/