摘要:隨著數(shù)字家電的普及,家庭網(wǎng)絡(luò)技術(shù)呈現(xiàn)出越來越廣闊的市場應(yīng)用前景。為了實(shí)現(xiàn)家庭網(wǎng)絡(luò)互聯(lián)設(shè)備的操作控制和信息共享,需要采用通用即插即用(UPnP)技術(shù)。UPnP充分重用包括IP、傳輸控制協(xié)議(TCP)、數(shù)據(jù)報協(xié)議(UDP)、超文本傳輸協(xié)議(HTTP) 和可擴(kuò)展標(biāo)記語言(XML)在內(nèi)的互聯(lián)網(wǎng)技術(shù)標(biāo)準(zhǔn),提供服務(wù)的跨平臺自動發(fā)現(xiàn)和遠(yuǎn)程控制。采用UPnP可實(shí)現(xiàn)靈活而強(qiáng)大的業(yè)務(wù)發(fā)現(xiàn)能力,能將復(fù)雜的網(wǎng)絡(luò)設(shè)備驅(qū)動變?yōu)楹唵蔚倪h(yuǎn)程網(wǎng)絡(luò)控制,同時還能提供互聯(lián)設(shè)備的操作控制和信息共享。
關(guān)鍵詞:通用即插即用;服務(wù)發(fā)現(xiàn);服務(wù)描述
Abstract: Along with the popularization of digital home appliances, the home networking technologies have the prospects for a broader market application. It requires the Universal Plug and Play (UPnP) technology to fulfill control and data transfer of interconnected devices in a home network. The UPnP technology makes full use of the multiple Internet technology standards including Internet Protocol (IP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), Hypertext Transfer Protocol (HTTP) and Extensible Markup Language (XML) to provide cross-platform automatic service discovery and remote control. UPnP helps implement the flexible and powerful service discovery capability and change complex network device driving into simple remote network control. Moreover, it enables control and data transfer of networked devices.
Key words: UPnP; service discovery; service description
通用即插即用(UPnP)是針對局部網(wǎng)絡(luò)范圍內(nèi)對等互聯(lián)而設(shè)計的一種應(yīng)用層技術(shù)標(biāo)準(zhǔn),目的是為家庭、小型企業(yè)、公共場所提供基于IP技術(shù)、易于使用的網(wǎng)絡(luò)服務(wù)自動發(fā)現(xiàn)機(jī)制。
UPnP充分利用傳輸控制協(xié)議/網(wǎng)間協(xié)議(TCP/IP)和Web技術(shù)的開放式分布網(wǎng)絡(luò)體系結(jié)構(gòu),其顯著特色在于具有靈活而強(qiáng)大的業(yè)務(wù)發(fā)現(xiàn)能力,能將復(fù)雜的網(wǎng)絡(luò)設(shè)備驅(qū)動變?yōu)楹唵蔚倪h(yuǎn)程網(wǎng)絡(luò)控制,同時還提供互聯(lián)設(shè)備的操作控制和信息共享。
UPnP標(biāo)準(zhǔn)由UPnP論壇[1]制訂,該論壇于1999年10月由微軟、Intel等公司發(fā)起創(chuàng)建,尋求制訂基于可擴(kuò)展標(biāo)記語言(XML)的通用設(shè)備描述標(biāo)準(zhǔn),以便在一個可擴(kuò)展的網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)設(shè)備的互操作,使不同廠商生產(chǎn)的設(shè)備所提供的服務(wù)和內(nèi)容能為網(wǎng)絡(luò)上的所有計算設(shè)施使用。目前,UPnP論壇已有700多個成員單位,包括聯(lián)想、海信、中興、華為等在內(nèi)的眾多中國IT和通信業(yè)著名公司都是該論壇的成員。
UPnP論壇于2001年11月建立了UPnP技術(shù)開發(fā)公司(UIC)[2],這是一個開展UPnP設(shè)備認(rèn)證和UPnP商標(biāo)特許工作的非贏利性組織,有近40家公司加盟,在全球24個國家開展了UPnP注冊商標(biāo)的申報工作,很多跨國公司都把取得UIC認(rèn)證作為其產(chǎn)品發(fā)展的一個里程碑。
UPnP技術(shù)最有力的競爭者是Sun公司提出的Java智能網(wǎng)絡(luò)基礎(chǔ)設(shè)施(Jini),其基本思想是將Java應(yīng)用環(huán)境從單一主機(jī)的虛擬機(jī)向網(wǎng)絡(luò)化方向擴(kuò)展。
UPnP和Jini的體系結(jié)構(gòu)非常類似,功能上各有千秋。和UPnP直接使用底層TCP/IP協(xié)議不同的是,Jini主要通過由Java語言定義的接口來實(shí)現(xiàn)功能調(diào)用,在邏輯層次上看,Jini更接近于一種分布式的應(yīng)用程序接口/對象共用環(huán)境。其好處是可提供更高層次的安全機(jī)制,編程更方便且易于和已有Java應(yīng)用結(jié)合,局限性在于效率上會有些犧牲,而且必需使用Java技術(shù)。而UPnP則以開放的互聯(lián)網(wǎng)作為其技術(shù)基礎(chǔ),可以支持基于任何語言、任何應(yīng)用環(huán)境的設(shè)備的自動發(fā)現(xiàn)和連接,因而為業(yè)界廣泛接受,成為家庭網(wǎng)絡(luò)重要的支撐技術(shù)。
1 UPnP系統(tǒng)結(jié)構(gòu)
1.1 UPnP基本構(gòu)件
UPnP系統(tǒng)的基本網(wǎng)絡(luò)構(gòu)件包括:設(shè)備、服務(wù)和控制點(diǎn)。
UPnP設(shè)備是提供服務(wù)的網(wǎng)絡(luò)實(shí)體。對于具有多種功能的綜合信息設(shè)備,可以在邏輯上分解為一個根設(shè)備和若干個嵌入式設(shè)備,其中,根設(shè)備提供核心功能,嵌入式設(shè)備提供附加功能。例如,一臺包含打印功能的掃描儀,整個掃描儀可以被稱為根設(shè)備,提供掃描服務(wù),內(nèi)置于掃描儀中的打印機(jī)就被稱為嵌入式設(shè)備,提供打印服務(wù)。
服務(wù)是UPnP系統(tǒng)中最小的可控制單元,它包括一系列可控制的動作和一組記錄該服務(wù)目前進(jìn)展情況的狀態(tài)。
控制點(diǎn)就是控制UPnP設(shè)備工作的網(wǎng)絡(luò)終端,主要功能包括:獲取設(shè)備描述和相關(guān)服務(wù)列表;獲取感興趣的服務(wù)描述;發(fā)出控制消息控制設(shè)備動作;向感興趣的服務(wù)發(fā)出訂閱消息,以便當(dāng)服務(wù)狀態(tài)改變時,自動獲得事件通知。例如,當(dāng)通過PC機(jī)選臺收看電視時,電視機(jī)就是設(shè)備,PC機(jī)就是控制點(diǎn)。
1.2 UPnP協(xié)議棧
UPnP系統(tǒng)的協(xié)議棧如圖1所示??梢钥闯觯琔PnP遵從Internet設(shè)計的基本原則,利用很多Internet標(biāo)準(zhǔn)協(xié)議,具有很好的兼容性和可擴(kuò)展性,易于設(shè)計和快速開發(fā)。
應(yīng)用層傳送的核心內(nèi)容就是遠(yuǎn)程服務(wù)調(diào)用指令和相應(yīng)的交互信息,其格式遵從UPnP論壇定義的UPnP設(shè)備架構(gòu)(UDA)[3]標(biāo)準(zhǔn),論壇已標(biāo)準(zhǔn)化13種典型信息終端設(shè)備的UDA描述。除此以外,應(yīng)用層消息還可包括由UPnP論壇工作委員會定義的補(bǔ)充信息以及由UPnP設(shè)備廠商定義的特定信息。
上述應(yīng)用層的服務(wù)控制過程都通過遠(yuǎn)程對象調(diào)用實(shí)現(xiàn),對象描述和調(diào)用指令通過簡單對象訪問協(xié)議(SOAP)[4]傳送。服務(wù)狀態(tài)信息的變化被抽象為事件,其訂閱和通知通過通用事件通知結(jié)構(gòu)(GENA)[5]協(xié)議實(shí)現(xiàn)。服務(wù)發(fā)現(xiàn)機(jī)制和Web Services類似,通過定義一個專門的發(fā)現(xiàn)協(xié)議實(shí)現(xiàn),只是該協(xié)議較為簡單,稱之為簡單服務(wù)發(fā)現(xiàn)協(xié)議(SSDP)[6]。這些協(xié)議消息都封裝在互聯(lián)網(wǎng)上廣為使用的超文本傳輸協(xié)議(HTTP)[7]中,其中HTTPU和HTTPMU分別支持單播和多播應(yīng)用環(huán)境,整個協(xié)議棧建立在公共的TCP/UDP/IP協(xié)議基礎(chǔ)之上。下面具體討論SSDP、SOAP和GENA 3個UPnP核心協(xié)議。
2 UPnP核心協(xié)議
2.1 SSDP協(xié)議
SSDP用于服務(wù)發(fā)現(xiàn),控制點(diǎn)通過它定位其感興趣的資源在網(wǎng)絡(luò)中的位置,設(shè)備通過它告之它們的可用性。SSDP客戶(控制點(diǎn))可往本地保留的多播地址的SSDP端口(如239.255.255.250:1900)發(fā)送“發(fā)現(xiàn)”(Discovery)消息來尋找SSDP服務(wù);SSDP服務(wù)(設(shè)備)也可以同樣的方式發(fā)送SSDP指示來宣示它的存在。
SSDP消息由4個部分組成:
·服務(wù)類型,如掃描、時鐘等。
·唯一的客戶服務(wù)名(USN),用于區(qū)分同一服務(wù)類型的不同的具體服務(wù)。
·有效期,指明SSDP客戶在其緩存中保存該服務(wù)信息的時間。
·位置信息,指示服務(wù)所在的具體位置。
表1表示了一個SSDP消息示例。
消息宣示了一個類型為upnp:NetworkCamera的服務(wù)存在,其有效期為3天,從地址10.10.9.200/NC可以取得其服務(wù)描述文件。
2.2 SOAP協(xié)議
SOAP用于服務(wù)控制調(diào)用,它以XML形式提供了一個簡單、輕型的可在分散或分布式環(huán)境中交換結(jié)構(gòu)化信息的機(jī)制。SOAP消息是一個XML文檔,包括一個必備的SOAP封裝、一個可選的SOAP頭和一個必備的SOAP體。SOAP本身并沒有定義任何應(yīng)用層語義。
2.3 GENA協(xié)議
GENA協(xié)議被用于事件訂閱和通知。訂戶向它的訂閱仲裁者發(fā)送訂閱請求,仲裁者將會向訂戶轉(zhuǎn)發(fā)它收到的符合訂戶訂閱要求的通知。訂戶也可以和事件源直接發(fā)生通信,此時,通知源同時又扮演了訂閱仲裁者的角色。
3 基于UPnP的服務(wù)發(fā)現(xiàn)
基于UPnP的服務(wù)自動發(fā)現(xiàn)和調(diào)用過程包括6個功能:尋址、發(fā)現(xiàn)、描述、控制、事件、展示,如圖2所示。
3.1 尋址
尋址功能實(shí)現(xiàn)設(shè)備如何獲得IP地址,這是基于IP網(wǎng)絡(luò)技術(shù)的UPnP系統(tǒng)首先必需解決的問題。UPnP首選采用動態(tài)主機(jī)配置協(xié)議(DHCP)尋址機(jī)制。每個設(shè)備應(yīng)配備一個DHCP客戶端,在首次與網(wǎng)絡(luò)相連時自動搜索網(wǎng)絡(luò)中的DHCP服務(wù)器,通過信息交互使用服務(wù)器分配給它的IP地址。如果網(wǎng)絡(luò)中沒有可用的DHCP服務(wù)器,即網(wǎng)絡(luò)處于未管理狀態(tài),則設(shè)備通過自動IP尋址(Auto-IP)[8]確定其地址,并保證其地址和其他設(shè)備沒有沖突。
3.2 發(fā)現(xiàn)
發(fā)現(xiàn)功能實(shí)現(xiàn)控制點(diǎn)搜索網(wǎng)絡(luò)上的UPnP設(shè)備,同時UPnP設(shè)備也要宣告自己的存在。當(dāng)一個新設(shè)備被添加到網(wǎng)絡(luò)后,會通過標(biāo)準(zhǔn)的本地多播地址多播發(fā)現(xiàn)消息宣告其根設(shè)備和嵌入式設(shè)備服務(wù)。所有控制點(diǎn)將監(jiān)聽該多播地址,獲取設(shè)備所宣布的新能力可用信息。同樣,當(dāng)一個新控制點(diǎn)被添加到網(wǎng)絡(luò)后,它會多播一條發(fā)現(xiàn)消息來搜索感興趣的設(shè)備或服務(wù),或同時搜索兩者。所有設(shè)備均必須監(jiān)聽該多播地址。
NOTIFY(宣告)消息使用SSDP的NT(宣告類型)方法,包含4個主要組成部分:
·在NT標(biāo)頭中發(fā)送的潛在搜索目標(biāo)(例如設(shè)備類型)
·在USN標(biāo)頭中發(fā)送的宣告復(fù)合標(biāo)識符
·在LOCATION(位置)標(biāo)頭中發(fā)送的關(guān)于設(shè)備更多信息的統(tǒng)一資源定位(URL)地址
·在CACHE-CONTROL(緩存控制字段)標(biāo)頭中發(fā)送的宣告消息合法持續(xù)時間
搜索消息使用SSDP的M-SEARCH(SSDP定義的一種搜索請求方法),其主要內(nèi)容為ST(搜索類型)標(biāo)頭中的搜索目標(biāo)。
3.3 描述
描述功能實(shí)現(xiàn)UPnP設(shè)備/服務(wù)的形式化描述??刂泣c(diǎn)在發(fā)現(xiàn)了一個設(shè)備之后,為了更多地了解設(shè)備及其功能,并與設(shè)備交互,必須從發(fā)現(xiàn)消息中得到設(shè)備描述的統(tǒng)一資源定位信息,并通過URL取得設(shè)備/服務(wù)的描述信息。
基于XML[9]的UPnP設(shè)備/服務(wù)描述是實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)、資源共享的基礎(chǔ)。UPnP論壇制訂了設(shè)備描述模板,各廠商在設(shè)計新的UPnP設(shè)備時必需遵從此模板標(biāo)準(zhǔn),并給出其XML描述文檔。
設(shè)備的UPnP描述一般分成兩個邏輯部分:設(shè)備描述以及服務(wù)描述。
UPnP設(shè)備描述包括特定廠商、制造商信息,如模塊名稱和編號、序列號、制造商名稱、特定廠商網(wǎng)站URL等。對于設(shè)備中的每種服務(wù),設(shè)備描述都包含服務(wù)類型、名稱、服務(wù)描述URL、控制URL以及事件URL。
UPnP服務(wù)描述定義了動作及其參數(shù)、狀態(tài)變量及其數(shù)據(jù)類型、范圍和事件特征。
一個完整的UPnP設(shè)備描述包括根設(shè)備描述文件和嵌入式設(shè)備描述文件,兩者是嵌套的關(guān)系,嵌入式設(shè)備描述文件整體是根設(shè)備描述文件中
取得UPnP設(shè)備描述非常簡單:控制點(diǎn)在發(fā)現(xiàn)消息的URL上發(fā)出HTTP GET(HTTP定義的一種獲取數(shù)據(jù)的方法)請求,然后設(shè)備返回設(shè)備描述。取得UPnP服務(wù)描述也是一個相似的流程,需要使用設(shè)備描述中的URL。
3.4 控制
控制功能實(shí)現(xiàn)控制點(diǎn)向UPnP設(shè)備發(fā)出動作指令。在接收設(shè)備和服務(wù)描述之后,控制點(diǎn)就可以根據(jù)描述向這些服務(wù)發(fā)出動作指令,同時控制點(diǎn)也可以接收關(guān)于動作執(zhí)行結(jié)果的響應(yīng)。發(fā)出動作指令實(shí)質(zhì)上就是一種遠(yuǎn)程過程調(diào)用,控制點(diǎn)將動作對象調(diào)用發(fā)送到設(shè)備服務(wù),當(dāng)動作完成(或執(zhí)行失敗)后,服務(wù)返回相應(yīng)的結(jié)果或出錯信息。
在UPnP中,上述控制過程是由控制點(diǎn)向服務(wù)的控制統(tǒng)一資源定位地址(在設(shè)備描述的服務(wù)元素controlURL子元素部分提供)發(fā)送一個SOAP消息實(shí)現(xiàn)的。
3.5 事件
如果控制點(diǎn)訂閱了事件,那么當(dāng)相關(guān)服務(wù)狀態(tài)改變時,UPnP設(shè)備將向控制點(diǎn)發(fā)出通知消息??刂泣c(diǎn)發(fā)現(xiàn)該設(shè)備和取得該設(shè)備及其服務(wù)的描述之后,就可配置事件觸發(fā)功能。一個UPnP服務(wù)描述包括服務(wù)響應(yīng)的動作列表和運(yùn)行時描述服務(wù)狀態(tài)的變量列表,如果一個或多個狀態(tài)變量可以被事件觸發(fā),服務(wù)將會在這些變量發(fā)生變化時發(fā)布更新,控制點(diǎn)可以訂閱以獲得此信息。
訂閱者可采用GENA的SUBSCRIBE(訂閱)方法發(fā)送訂閱消息。服務(wù)收到訂閱消息后,返回的響應(yīng)中包括:唯一的訂閱標(biāo)識符、事件消息交付URL、事件編號、訂閱持續(xù)時間。
服務(wù)通過發(fā)送事件消息來發(fā)布其狀態(tài)變量的變更,這些消息包含一個或多個狀態(tài)變量名以及這些變量的當(dāng)前值。
3.6 展示
展示是UPnP的任選功能,利用此功能,控制點(diǎn)可以方便地監(jiān)視或控制UPnP設(shè)備。當(dāng)控制點(diǎn)發(fā)現(xiàn)設(shè)備并取得設(shè)備描述之后,如果描述中包含展示URL,控制點(diǎn)就可以通過此URL獲得一個頁面,并在瀏覽器中加載該頁面。根據(jù)頁面功能,用戶可以控制設(shè)備和/或?yàn)g覽設(shè)備狀態(tài)。展示URL包含在設(shè)備描述的presentationURL元素中,取得展示頁面通過一個基于HTTP的過程完成。
4 應(yīng)用實(shí)例分析
以一個簡單的遠(yuǎn)程可控網(wǎng)絡(luò)攝像機(jī)設(shè)備為例分析說明UPnP的工作過程。
該攝像機(jī)不但可以作為網(wǎng)絡(luò)公共設(shè)備供聯(lián)網(wǎng)用戶控制使用,提供拍攝的視頻監(jiān)視信號,而且安裝在一個可旋轉(zhuǎn)的云臺上,可以在用戶的控制下上下左右旋轉(zhuǎn),以調(diào)整到用戶想要監(jiān)視的視角。定義設(shè)備類型為urn:schemas-upnp-org:device:NetworkCamera:1,其服務(wù)包括調(diào)節(jié)分辨率、壓縮比等圖像相關(guān)服務(wù)和設(shè)備的旋轉(zhuǎn)控制服務(wù)。將這兩種服務(wù)分別定義為urn:schemas-upnp-org:service:NetworkCameraPicture:1和urn:schemas-upnp-org:servi ce:Rotation:1。圖3示出利用UPnP自動發(fā)現(xiàn)該攝像機(jī)服務(wù)的流程圖,具體過程為:
(1)假設(shè)網(wǎng)絡(luò)有可用的DHCP服務(wù)器,網(wǎng)絡(luò)攝像機(jī)分配到的IP地址為10.10.9.200。獲得地址后,攝像機(jī)使用SSDP的NOTIFY方法向網(wǎng)絡(luò)中的所有控制點(diǎn)宣告其服務(wù)。
(2)控制點(diǎn)從發(fā)現(xiàn)消息中得到設(shè)備描述的URL,使用HTTP的GET方法取得UPnP設(shè)備描述文件:Network_camera.xml。然后,控制點(diǎn)對設(shè)備描述文件進(jìn)行解析,獲取其中的服務(wù)描述文件URL,分兩次使用HTTP的GET方法取得兩個服務(wù)描述文件:CameraPictureSCPD.xml和RotationSCPD.xml,通過對服務(wù)描述文件的解析可以知道其提供的功能和控制方法。為了表述簡潔,圖3所示的消息流程中只給出一個HTTP消息交互過程,HTTP響應(yīng)消息的消息體即為UPnP設(shè)備描述/服務(wù)描述。
(3)對服務(wù)描述文件進(jìn)行解析后,控制點(diǎn)使用SUBSCRIBE方法對其感興趣的變量(圖像分辨率)發(fā)出訂閱請求,這樣服務(wù)會在分辨率發(fā)生變化時向控制點(diǎn)發(fā)送事件消息。
(4)對服務(wù)描述文件解析后,控制點(diǎn)向旋轉(zhuǎn)控制服務(wù)發(fā)出動作消息,該消息發(fā)往的地址為設(shè)備描述文件中的controlURL字段。旋轉(zhuǎn)控制服務(wù)收到此消息后,將按照消息中給出的參數(shù)控制云臺旋轉(zhuǎn),并返回200 OK消息。
(5)假設(shè)網(wǎng)絡(luò)中的其他控制點(diǎn)(控制點(diǎn)Y)改變了攝像機(jī)的分辨率,由于控制點(diǎn)X已訂閱此事件通知,因此網(wǎng)絡(luò)攝像機(jī)將會把這一事件消息報告給控制點(diǎn)X。
5 結(jié)束語
作為家庭網(wǎng)絡(luò)的核心技術(shù)之一,UPnP充分重用互聯(lián)網(wǎng)技術(shù)標(biāo)準(zhǔn),提供服務(wù)的跨平臺自動發(fā)現(xiàn)和遠(yuǎn)程控制?;赨PnP技術(shù)的設(shè)計應(yīng)用程序?qū)⒎浅:唵危壳霸S多國家在制訂家庭網(wǎng)絡(luò)體系結(jié)構(gòu)時都采用了該項(xiàng)技術(shù),因此UPnP有良好的應(yīng)用前景,中國設(shè)備制造商應(yīng)當(dāng)積極研究開發(fā)基于UPnP的應(yīng)用和設(shè)備規(guī)范。
6 參考文獻(xiàn)
[1] UPnP Forum[EB/OL]. [2004-06-20].
http://www.UPnP.org.
[2] UPnP Implementers Corp. (UIC)[EB/OL]. [2005-05-20]. http://www.UPnP-ic.org/.
[3] UPnP Device Architecture 1.0, Version 1.0.1[S]. UpnP Forum.2003.
[4] GUDGIN M, HADLEY M, MENDELSOHN N, et al. SOAP Version 1.2[EB/OL]. [2003-06-24].
http://www.w3.org/TR/soap12/.
[5] COHEN S, AGGARWAL Y, GOLAND Y. General event notification architecture base GENA[S]. draft-cohen-gena-client. 2000 .
[6] GOLAND Y Y, CAI T, LEACH P, et al. Simple service discovery protocol/1.0[S]. draft-cai-ssdp-v1-03. 1999.
[7] FIELDING R, GETTYS J, MOGUL J, et al. Hypertext transfer protocol——HTTP/1.1[S]. RFC 2616. 1999.
[8] TROLL R. Automatically choosing an IP address in an Ad-Hoc IPv4 network[EB/OL]. [2000-03-02]. http://search.ietf.org/internet-drafts/draft-ietf-dhc-ipv4-autoconfig-05.txt.
[9] Extensible markup language[EB/OL]. [2000-10-06]. http://www.w3.org/XML/.
收稿日期:2006-05-25
作 者 簡 介
曾輝,南京郵電大學(xué)通信與信息工程學(xué)院在讀碩士研究生,主要研究方向?yàn)镮P與寬帶網(wǎng)絡(luò)技術(shù)。
費(fèi)云,南京郵電大學(xué)通信與信息工程學(xué)院在讀碩士研究生,主要研究方向?yàn)镮P與寬帶網(wǎng)絡(luò)技術(shù)。
唐亮,南京郵電大學(xué)通信與信息工程學(xué)院在讀碩士研究生,主要研究方向?yàn)镮P與寬帶網(wǎng)絡(luò)技術(shù)。