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