發布日期:2022-07-14 點擊率:31
1信息家電遠程控制系統的中用IPv4協議棧實現與IPV6進程的通信方法
1.1信息家電遠程控制系統的結構
其中上半部分分別是IPv4信息家電遠程控制系統的結構和IPv6信息家電遠程控制系統的結構,下半部分是兩者兼容系統的結構。在IPv4和IPv6信息家電遠程控制系統中信息家電通過無線網絡接入點組成家電局域網,并接入Internet,而“家電控制中心”具有中心控制地位。
在IPv4的家電局域網中,“家電控制中心”實質上是一個應用網關,其功能是組織家電局域網、進行數據格式的轉換、管理用戶和家電等,實現信息家電通過一個公有IP地址接入Internet,并配置有WWW服務器、Sendmail服務器、防火墻等。其中,WWW服務器中有訪問各個家電的Web頁,可以使用戶通過Web瀏覽器遠程訪問應用網關,實現對家電的遠程監控。
在IPv6的家電局域網中,“家電控制中心”與網絡家電具有同等的地位,其功能是對家電局域網的用戶和網絡家電的地址進行管理,同時對家電的電源開啟進行管理,也可以將它看成是一個具有網管功能的網絡家電。結合IPv6協議和網絡家電的特點,考慮到嵌入式系統的功能不斷增強,處理能力和存儲容量也有了很大的提高,同時,也為了使家庭網絡用戶使用信息家電的更方便和更實用,在信息家電的嵌入式控制系統中直接配置WWW服務器、Sendmail服務器、防火墻等網絡服務。其中,WWW服務器中包含有家電自身管理和控制的Web頁,使用戶可以通過Web瀏覽器實現對家電的遠程監控,并能隨時與廠家互動。
在兩種信息家電都有的兼容系統中,“家電控制中心”具有IPv4家電局域網和IPv6家電局域網“家電控制中心”的雙重功能,并具有IPv4/IPv6雙協議棧和IPv4/IPv6地址識別功能,能根據用戶訪問的目的IP地址自動調用IPv4或IPv6的協議棧和信息家電控制系統。在此家電局域網中,IPv4、IPv6的信息家電與“家電控制中心”的關系和獨立的IPv4、IPv6家電局域網中的關系是一致的,單獨來看,沒有改變原來IPv4、IPv6家電局域網的結構。
協議棧與IPV6的Web服務器通信的原理和方法
IPv4的Web瀏覽器無法訪問基于IPv6的網頁是因為IPv4應用程序都使用structsockaddr_in結構體存儲服務器的IPv4地址(32位),在調用connect函數或者sendto函數的時候,如果指定了一個IPv6地址,而結構體中in_addr僅僅有4個字節,無法容納IPv6的128位地址,所以不可能通過客戶端IPv4協議棧與IPv6服務進程通信。如果在IPv4的Web瀏覽器中設置代理端口,相當于在瀏覽器和Internet之間增加了一層轉發機制,代理一方面成為了瀏覽器發出請求的“服務器”端,另一方面又作為客戶端向遠端的服務器轉發請求,既代理服務器一方面要接受來自瀏覽器的TCP連接請求,另一方面又必須能夠向Web服務器發出TCP連接請求。
雖然IPv4的Web瀏覽器無法訪問基于IPv6的網頁,但是瀏覽器在使用socket函數建立本地套接口時,都使用AF_INET參數指定使用本地IPv4協議棧,如果在具有IPv4/IPv6雙協議棧的主機上,使用socket函數建立本地接口的時,能夠使用AF_INET6標志指定使用IPV6協議棧,則通過這個協議棧就可以實現與IPV6服務進程的通信。一旦connect函數建立連接后,網絡通信都簡化成了文件的讀寫操作,此時與具體的協議棧和IP地址都沒有關系。但是現在使用的客戶端基本上都是IPv4的單協議棧,而且改寫瀏覽器本身的代碼是不現實的。
這樣,可以在“家電控制中心”增加一項“IPv4/IPv6雙協議棧的代理服務”功能,瀏覽器通過代理端口的設置,將請求交給“家電控制中心”處理,通過編程處理讓“家電控制中心”根據客戶端請求的目的地址的不同調用系統的IPv4或IPV6協議棧,分別實現客戶端與IPv4或IPV6進程的通信。
2信息家電遠程控制中IPv4/IPv6兼容的實現
2.1信息家電控制中心中代理功能的設置和瀏覽器的選擇
在基于IPv4技術的家電遠程控制系統中,一般家電用戶可以直接輸入“家電控制中心”的IP地址,直接訪問到信息家電及其控制/狀態頁面。但在基于IPv6的信息家電中,每個家電都可具有自己的一個或多個IP地址,當然也可以具有域名。這樣,在考慮信息家電遠程控制IPv4/IPv6兼容問題時,不但要考慮用戶的URL請求直接是IP地址,還要考慮用戶對信息家電應用的域名。因此,在“家電控制中心”中首先要添加IPv4/IPv6雙協議棧,并使之成為Web代理服務器,同時也要具有請求域名解析的功能,最后,判斷地址的格式,根據不同協議地址調用對應的協議棧。
網絡中客戶端Web瀏覽器的代理端口設置為“家電控制中心”的對應端口,瀏覽器將URL中輸入的內容交給“家電控制中心”處理,經過域名解析,如果是IPv4地址,則“家電控制中心”的代理不進行處理,按照原來的模式發送請求;如果是IPv6的地址,則“家電控制中心”的代理將請求交給IPv6處理模塊,調用系統的IPV6協議棧,實現與IPV6的通信。圖2是“家電控制中心”對IPv4客戶端的URL處理流程圖。
2.2瀏覽器的選擇和多URL同時請求的解決方案
在客戶端選擇使用Netscape瀏覽器,因為在通過手動設置代理聯入Internet的時,IE要對其URL中輸入的內容進行語法檢查,而Netscape則完全不作任何檢查,把從域名解析到數據轉發的任務都交給“家電控制中心”,這樣無論在URL中輸入的是域名還是IPv4或IPv6地址,Netscape都會不加任何檢查地送入“家電控制中心”,所以,客戶端Web服務的接入和瀏覽工具選擇Netscape。
由于“家電控制中心”要對一個瀏覽器的多個請求或者多個瀏覽器的多個請求同時作出反應,在具體實現時,使用“家電控制中心”的daemon偵聽端口,使“家電控制中心”遇到請求就產生子進程進行處理,即通過socket函數創建監聽套接字listenfd,并調用bind和listen函數將其變成一個監聽套接口,使系統內核接收來自客戶的連接請求。“家電控制中心”調用accept函數等待客戶端的連接。當客戶端Web瀏覽器發起的TCP連接請求轉發到“家電控制中心”處理時,TCP使用三次握手建立連接,當握手完畢時,accept函數返回,其返回值是一個稱為已連接描述字(connetcteddescriptor)的新描述字connfd?!凹译娍刂浦行摹庇胒ork函數為這個描述字開啟一個子進程,并用此子進程處理連接和通信,同時父進程仍保持監聽狀態。
另外,在實現“家電控制中心”的IPv4/IPv6雙協議棧代理功能時,在處理監聽套接口的同時,又要處理已連接套接口,還要處理多個描述字,在解決這個問題時用到了I/O復用技術。在I/O復用中,系統阻塞于select調用,等待數據報套接口可讀,當select返回套接口可讀時,系統調用readline函數將數據報讀到緩沖區中。在連接建立和傳輸過程中,“家電控制中心”為每一幅圖片和每一個文本文件建立一個描述字,因此,在select的參數設置中要保證每一個描述字都是可讀取的。
3測試和結論
在測試環境中,家電局域網由“家電控制中心”、基于IPv4的信息家電和基于IPv6的信息家電?!凹译娍刂浦行摹背哂杏脩艄芾怼⒓译姽芾怼⑿畔⒏袷睫D換等模塊外,具有IPv4/IPv6雙協議棧、Web代理服務、域名解析、IPv4/IPv6地址識別等功能?;贗Pv4的信息家電和基于IPv6的信息家電都具有Web服務的功能,并有對應的控制/狀態頁面。客戶端計算機是IPv4協議棧,Web瀏覽器使用Netscape,并將代理設置為“家電控制中心”。由于使用Netscape作為Web瀏覽器,操作系統均選用了Linux。在測試中,通過客戶端實現了對兩類家電的訪問和控制。