UPnP是什么
UPnP是各種各樣的智能設(shè)備、無(wú)線設(shè)備和個(gè)人電腦等實(shí)現(xiàn)遍布全球的對(duì)等網(wǎng)絡(luò)連接(P2P)的結(jié)構(gòu)。UPnP 是一種分布式的,開放的網(wǎng)絡(luò)架構(gòu)。UPnP 是獨(dú)立的媒介。在任何操作系統(tǒng)中,利用任何編程語(yǔ)言都可以使用 UPnP 設(shè)備。
中文譯名:通用即插即用
UPnP協(xié)議統(tǒng)一即插即用英文是Universal Plug and Play,縮寫為UPnP。要說(shuō)計(jì)算機(jī)外設(shè)的即插即用(Plug and Play(縮寫PnP)),大家可能很熟悉,但對(duì)通用即插即用,多數(shù)人會(huì)感到是一頭霧水。由于windows xp加入對(duì)UPnP的支持,并且被查出存在很嚴(yán)重的安全問題,所以,一時(shí)間,使得UPnP名聲大噪。巧的是,本人原來(lái)查閱過(guò)關(guān)于UPnP的技術(shù)白皮書,而且也較為詳細(xì)地看了關(guān)于此次發(fā)現(xiàn)的安全缺陷的介紹。因此,趁著這個(gè)機(jī)會(huì),將UPnP以及引起安全缺陷的詳情披露出來(lái)。
UPnP 的應(yīng)用范圍非常大,以致足夠可以實(shí)現(xiàn)許多現(xiàn)成的、新的及令人興奮的方案,包括家庭自動(dòng)化、打印、圖片處理、音頻 / 視頻娛樂、廚房設(shè)備、汽車網(wǎng)絡(luò)和公共集會(huì)場(chǎng)所的類似網(wǎng)絡(luò)。它可以充分發(fā)揮 TCP/IP 和網(wǎng)絡(luò)技術(shù)的功能,不但能對(duì)類似網(wǎng)絡(luò)進(jìn)行無(wú)縫連接,而且還能夠控制網(wǎng)絡(luò)設(shè)備及在它們之間傳輸信息。在 UPnP 架構(gòu)中沒有設(shè)備驅(qū)動(dòng)程序,取而代之的是普通協(xié)議。
UPnP 并不是周邊設(shè)備即插即用模型的簡(jiǎn)單擴(kuò)展。在設(shè)計(jì)上,它支持0設(shè)置、網(wǎng)絡(luò)連接過(guò)程“不可見”和自動(dòng)查找眾多供應(yīng)商提供的多如繁星的設(shè)備的類型。換言之,一個(gè) UPnP 設(shè)備能夠自動(dòng)跟一個(gè)網(wǎng)絡(luò)連接上、并自動(dòng)獲得一個(gè) IP 地址、傳送出自己的權(quán)能并獲悉其它已經(jīng)連接上的設(shè)備及其權(quán)能。最后,此設(shè)備能自動(dòng)順利地切斷網(wǎng)絡(luò)連接,并且不會(huì)引起意想不到的問題。
UPnP 推動(dòng)了因特網(wǎng)技術(shù)的發(fā)展,包括 IP、TCP、UDP、HTTP、SSDP和 XML 等技術(shù)。在因特網(wǎng)上契約以有線應(yīng)用協(xié)議為基礎(chǔ),而該協(xié)議是說(shuō)明性的、利用 XML 進(jìn)行表述和 HTTP 進(jìn)行傳輸?shù)?。與此相同的是,UPnP 的明確設(shè)計(jì)目標(biāo)就是提供這樣的環(huán)境。再者,當(dāng)成本、技術(shù)或經(jīng)費(fèi)等方面的因素阻止了在某種媒介里或接入其中的設(shè)備上運(yùn)用 IP 時(shí),UPnP 能夠通過(guò)橋接的方式提供非 IP 協(xié)議的媒體通道。UPnP 不會(huì)為應(yīng)用程序指定 API,因此供應(yīng)商們就可以自己創(chuàng)建 API 來(lái)滿足客戶的需求。
經(jīng)典應(yīng)用
網(wǎng)絡(luò)地址轉(zhuǎn)換
在數(shù)量以百萬(wàn)計(jì)而且數(shù)目仍然在繼續(xù)增長(zhǎng)的家庭網(wǎng)絡(luò)出現(xiàn)很久以前,Internet上的尋址系統(tǒng)就已經(jīng)開發(fā)出來(lái)了。實(shí)際上,在Internet尚處于幼年的時(shí)候所開發(fā)的這個(gè)尋址系統(tǒng)到目前為止仍然能夠正常工作真可以說(shuō)是一個(gè)奇跡。
因?yàn)镮nternet地址資源正在迅速被耗盡,大多數(shù)的家庭網(wǎng)絡(luò)都使用網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)技術(shù)建立了一個(gè)網(wǎng)關(guān)。NAT是Internet工程任務(wù)組(IETF)制訂的一種標(biāo)準(zhǔn),它允許私有網(wǎng)絡(luò)中的多臺(tái)PC或設(shè)備共享一個(gè)全球唯一的公共地址(所使用私有地址的范圍為10.0.0.0/8、192.168.0.0/16和172.0.0.0/11)。作為對(duì)IP地址短缺的一種臨時(shí)補(bǔ)救措施,NAT可以很好地完成很多工作--例如Windows XP的Internet連接共享就使用NAT,就像很多網(wǎng)關(guān)設(shè)備(例如DSL和線纜調(diào)制解調(diào)器)所做的一樣。
但問題是:NAT希望所有的網(wǎng)絡(luò)應(yīng)用程序都以一種標(biāo)準(zhǔn)方式(即在數(shù)據(jù)包頭中使用IP地址)進(jìn)行通信,但是有些網(wǎng)絡(luò)程序預(yù)計(jì)到NAT的存在。他們使用了NAT無(wú)法轉(zhuǎn)換的嵌入式IP地址。
NAT 穿越技術(shù)
NAT穿越技術(shù)允許網(wǎng)絡(luò)應(yīng)用程序?qū)λ鼈兪欠裎挥谝粋€(gè)具有UPnP能力的NAT設(shè)備之后進(jìn)行檢測(cè)。然后,這些程序?qū)@得共享的全球可路由IP地址,并且配置端口映射以將來(lái)自NAT外部端口的數(shù)據(jù)包轉(zhuǎn)發(fā)到應(yīng)用程序使用的內(nèi)部端口上--所有這一切都是自動(dòng)完成的,用戶無(wú)需手動(dòng)映射端口或者進(jìn)行其它工作。NAT穿越技術(shù)允許網(wǎng)絡(luò)設(shè)備或者點(diǎn)對(duì)點(diǎn)應(yīng)用程序通過(guò)動(dòng)態(tài)開啟和閉合與外部服務(wù)之間的通信端口穿過(guò)NAT網(wǎng)關(guān)與外界通信。
實(shí)際應(yīng)用
網(wǎng)絡(luò)發(fā)展到現(xiàn)在,我們已經(jīng)實(shí)現(xiàn)的有很多,但還有許多目標(biāo)沒有達(dá)到。例如在網(wǎng)絡(luò)上,像平時(shí)用遙控器那樣,操作家用電器或網(wǎng)絡(luò)遠(yuǎn)端的電器設(shè)備等等。實(shí)現(xiàn)諸如此類的效果,將是有巨大需求的應(yīng)用技術(shù)。如果實(shí)現(xiàn)通過(guò)網(wǎng)絡(luò)用UPnP控制家用設(shè)備,將給我們的生活帶來(lái)很大的方便和很多新的體驗(yàn)。所以windows系統(tǒng)也加入了UPnP協(xié)議,因?yàn)閁PnP是一個(gè)協(xié)議,UPnP的使用可跨越各種操作系統(tǒng)平臺(tái),開發(fā)應(yīng)用程序也沒有開發(fā)語(yǔ)言的局限。可工作于各種形式的網(wǎng)絡(luò)結(jié)構(gòu)。且僅以現(xiàn)在的網(wǎng)絡(luò)設(shè)施為基礎(chǔ),僅僅加上這個(gè)UPnP協(xié)議,既不用添加新的設(shè)施,也不用重新架設(shè)網(wǎng)絡(luò)介質(zhì)就可以投入使用!
僅現(xiàn)在而言,UPnP已經(jīng)可以實(shí)現(xiàn)好多看似科學(xué)幻想的操作了,只是這些操作還未普及而已。
1.在下班之前,或在回去的路上,就可以先打開家里的空調(diào)器和廚房設(shè)備,等進(jìn)入家門,立刻就是一個(gè)溫度宜人的環(huán)境――廚房里的飯也做好了。房間溫度的高低和廚房?jī)?nèi)煮飯的過(guò)程,都是根據(jù)事先設(shè)計(jì)好的“腳本”程序進(jìn)行的,絕對(duì)可靠。
2.使用上UPnP,將根據(jù)用戶習(xí)慣調(diào)整音響音量、燈光亮度、音箱的高度等等,以你認(rèn)為最佳的參數(shù)寫到執(zhí)行腳本中,以后可以都以此為準(zhǔn)。
3.當(dāng)用戶在公司用上UPnP,只要在家里安裝攝像頭,建立好與網(wǎng)絡(luò)的連接。在辦公室內(nèi),啟用桌面電腦的WEBTV,連通網(wǎng)絡(luò)后,可以即時(shí)看到家里的一舉一動(dòng)。
4.UPnP是因特網(wǎng)及LAN中使用的以TCP/IP協(xié)議為基礎(chǔ)的技術(shù)。通過(guò)無(wú)線網(wǎng)絡(luò)上網(wǎng)的用戶都是處于內(nèi)網(wǎng),為了保證像BT這樣的P2P軟件正常工作,開啟UPnP是必須的,而目前大多數(shù)無(wú)線路由器都具有此功能。(大多數(shù)無(wú)線路由器的UPnP默認(rèn)為關(guān)閉,用戶可手動(dòng)開啟該功能,重啟路由器后即可生效)
特色
1. 以網(wǎng)絡(luò)為應(yīng)用環(huán)境,不考慮“孤島”中的計(jì)算機(jī)。
2. 以TCP/IP和整個(gè)Internet為基礎(chǔ)。這樣是“中立”的,不依附于任何操作系統(tǒng)或應(yīng)用程序,不使用特定的API函數(shù),不受程序設(shè)計(jì)語(yǔ)言的局限??梢詿o(wú)縫地接入傳統(tǒng)網(wǎng)絡(luò)。
3. 設(shè)備可以動(dòng)態(tài)地進(jìn)入網(wǎng)絡(luò)中,隨后獲得IP地址,“學(xué)習(xí)” 或查找自己應(yīng)當(dāng)進(jìn)行的操作和服務(wù)的信息;“感知”別的設(shè)備是否存在以及它們的作用和當(dāng)前的狀態(tài) 。所有這些,都應(yīng)當(dāng)是可自動(dòng)完成的。
4. 每個(gè)設(shè)備都可讀取屬于自己的、特定的狀態(tài)和參數(shù);完成控制操作后應(yīng)當(dāng)發(fā)出“操作完成”的響應(yīng)信號(hào)。如果失敗,則應(yīng)發(fā)出控制失敗的信號(hào)。
設(shè)置
如何設(shè)置UPnP支持
UPNP的英文全稱是Universal Plug and Play,即通用即插即用協(xié)議,是為了實(shí)現(xiàn)電腦與智能的電器設(shè)備對(duì)等網(wǎng)絡(luò)連接的體系結(jié)構(gòu)。而內(nèi)網(wǎng)地址與網(wǎng)絡(luò)地址的轉(zhuǎn)換就是基于此協(xié)議的,因此只要我們的路由器支持upnp,并且我們使用支持此協(xié)議的xp操作系統(tǒng),那么我們就可以借此提高點(diǎn)對(duì)點(diǎn)傳輸速度。
進(jìn)入路由器的設(shè)置界面,如果你的路由器支持upnp的話那么在轉(zhuǎn)發(fā)規(guī)則選項(xiàng)卡下就會(huì)看到upnp設(shè)置選項(xiàng)(不同路由器可能會(huì)有不同),在此選項(xiàng)中,我們選擇啟用upnp,然后我們重啟一下路由器。這樣我們就完成了路由器的設(shè)置。
啟用UPnP用戶界面
在某些情況下,Windows XP可以發(fā)現(xiàn)UPnP設(shè)備,并且提供它自己的用戶界面控制這些設(shè)備。一個(gè)很好的例子便是"網(wǎng)絡(luò)連接"文件夾中UPnP住宅網(wǎng)關(guān)設(shè)備的用戶界面(UI)。市場(chǎng)上流行的Linksys BEFSR41W無(wú)線路由器在安裝完畢后,會(huì)自動(dòng)顯示在"網(wǎng)絡(luò)連接"文件夾中,因?yàn)閃indows XP已經(jīng)內(nèi)置了一個(gè)相關(guān)的應(yīng)用程序。
除此之外,你可以使用以下步驟安裝可選的UI組件。該UI組件會(huì)在系統(tǒng)發(fā)現(xiàn)新的設(shè)備后顯示一個(gè)"氣球"通知,并且在"網(wǎng)上鄰居"文件夾中為每個(gè)設(shè)備防止一個(gè)圖標(biāo)。為了啟用UPnP UI,請(qǐng)按照以下步驟操作:
1.點(diǎn)擊"開始",點(diǎn)擊"控制面板",然后點(diǎn)擊"添加或刪除程序"。
2.在"添加或刪除程序"對(duì)話框中,點(diǎn)擊"添加/刪除Windows組件"。
3.在"Windows組件向?qū)?中,點(diǎn)擊"網(wǎng)絡(luò)服務(wù)",點(diǎn)擊"詳細(xì)",然后選擇"通用即插即用"復(fù)選框。
4.點(diǎn)擊"確定",然后點(diǎn)擊"Windows組件向?qū)?對(duì)話框中的"下一步"。您可能需要提供您的Windows XP安裝CD。
UPnP映射失敗的原因
1.系統(tǒng)服務(wù)中禁止了SSDP服務(wù)(用于尋找upnp設(shè)備)
2.開啟了XP下的SP1的ICF(網(wǎng)絡(luò)連接防火墻)。(XP的ICF與UPnP設(shè)備發(fā)現(xiàn)有沖突,SP2修復(fù)了這個(gè)問題,但是仍然需要在防火墻設(shè)置中允許例外:UPnP 框架。)
3.路由器不支持UPnP,請(qǐng)向制造商詢問。
工作過(guò)程
UPnP在控制指針和被控制設(shè)備之間提供通訊功能。而網(wǎng)絡(luò)介質(zhì)、TCP/IP協(xié)議、HTTP僅提供基本的連接和IP地址分配。整個(gè)工作過(guò)程需要處理六個(gè)方面的內(nèi)容,即設(shè)備尋址、發(fā)現(xiàn)設(shè)備、對(duì)設(shè)備的描述、設(shè)備控制、設(shè)備事件、設(shè)備表達(dá)。
設(shè)備尋址:
地址是整個(gè)UPnP系統(tǒng)工作的基礎(chǔ)條件,每個(gè)設(shè)備都應(yīng)當(dāng)是DHCP(Dynamic Host Configuration Protocol動(dòng)態(tài)主機(jī)配置協(xié)議)的客戶。當(dāng)設(shè)備首次與網(wǎng)絡(luò)建立連接后,利用DHCP服務(wù),使設(shè)備得到一個(gè)IP地址。這個(gè)IP地址可以是DHCP系統(tǒng)指定的,也可以是由設(shè)備選擇的。當(dāng)局域網(wǎng)內(nèi)沒有提供DHCP服務(wù)時(shí),UPnP設(shè)備將按照Auto-IP的協(xié)議,從169.254/169.16地址范圍獲取一個(gè)局域網(wǎng)內(nèi)唯一的IP地址。設(shè)備還能使用昵稱(friendly name),這就需要域名解析服務(wù)(DNS)來(lái)解決。
發(fā)現(xiàn)設(shè)備:
可分成兩種情況,一種是在有控制請(qǐng)求之后,在當(dāng)前的網(wǎng)絡(luò)中查找有無(wú)對(duì)應(yīng)的可用設(shè)備;另一種情況是某一設(shè)備接入網(wǎng)絡(luò)、取得IP地址之后,就開始向網(wǎng)絡(luò)“廣播”自己已經(jīng)進(jìn)入網(wǎng)絡(luò),即尋找控制請(qǐng)求。
設(shè)備的描述:
簡(jiǎn)單說(shuō),這是聲明“自己”是什么樣的設(shè)備,例如名稱、制造廠商、序列號(hào)碼等等。剛開始“發(fā)現(xiàn)”設(shè)備后,控制指針對(duì)這個(gè)設(shè)備的“了解”還很少,需要依據(jù)URL找到該設(shè)備的描述文件,從這些文件中讀取更多的描述信息。描述信息的范圍很廣,一般都是由設(shè)備的制造廠商提供的。主要的描述項(xiàng)目有:控制的模式名稱和模式號(hào)碼、設(shè)備序列號(hào)、制造廠商名稱、廠商的WEB的URL……等等。這些一般都存放在特定的XML文件中。
設(shè)備控制:
控制指針找到設(shè)備描述之后,會(huì)從描述中“提煉”出要進(jìn)行的操作并獲悉所有的服務(wù);對(duì)每個(gè)UPnP設(shè)備來(lái)說(shuō),這些描述必須是很確切、很詳細(xì)的,描述中可能包含有命令或行為列表、服務(wù)響應(yīng)信息、用到的參數(shù)等等。對(duì)于服務(wù)的每個(gè)行為,也伴有描述信息:主要是整個(gè)服務(wù)進(jìn)行期間的變量、變量的數(shù)據(jù)類型、可用的取值范圍和事件的特征。
要控制某個(gè)設(shè)備,控制點(diǎn)必須先發(fā)送一個(gè)控制行為請(qǐng)求,要求設(shè)備開始服務(wù),然后再按設(shè)備的URL發(fā)送相應(yīng)的控制消息,控制消息就是放置在XML文件中的那些SOAP格式的信息。最后,服務(wù)會(huì)返回響應(yīng)信息,指出服務(wù)是成功或是失敗。
設(shè)備事件:
在服務(wù)進(jìn)行的整個(gè)時(shí)間內(nèi),只要變量值發(fā)生了變化或者模式的狀態(tài)發(fā)生了改變,就產(chǎn)生了一個(gè)事件,系統(tǒng)將修改上述提到的事件列表的內(nèi)容。隨之,事件服務(wù)器把事件向整個(gè)網(wǎng)絡(luò)進(jìn)行廣播。另一方面,控制點(diǎn)也可以事先向事件服務(wù)器訂閱事件信息,保證將該控制點(diǎn)感興趣的事件及時(shí)準(zhǔn)確地傳送過(guò)來(lái)。
廣播或訂閱事件,傳送的都是事件消息,事件消息也放在XML文件中,使用的格式是GENA。
設(shè)備投入工作之前的準(zhǔn)備―――初始化過(guò)程,也是一個(gè)事件,初始化需要的各種信息也是用事件消息傳送的。包括的內(nèi)容主要是:變量初始值,模式的初始狀態(tài)等等。
設(shè)備表達(dá):
只要得到了設(shè)備的URL,就可以取得該設(shè)備表達(dá)的URL,然后可以將此表達(dá)納入用戶的本地瀏覽器上。這部分還包括與用戶對(duì)話的界面,以及與用戶進(jìn)行會(huì)話的處理。
簡(jiǎn)要介紹下UPnP的工作流程:設(shè)備加入網(wǎng)絡(luò)后通過(guò)設(shè)備尋址就可自動(dòng)獲得IP地址,通過(guò)設(shè)備發(fā)現(xiàn),控制點(diǎn)就可知道網(wǎng)絡(luò)上存在哪些設(shè)備,通過(guò)設(shè)備描述控制點(diǎn)就可知道設(shè)備詳細(xì)信息以及設(shè)備提供哪些服務(wù),通過(guò)設(shè)備控制控制點(diǎn)可以使用設(shè)備的服務(wù),通過(guò)設(shè)備事件設(shè)備就可以將其狀態(tài)變化及時(shí)告訴給感興趣的控制點(diǎn),通過(guò)設(shè)備表達(dá)控制點(diǎn)可以用瀏覽器察看設(shè)備狀態(tài)和控制設(shè)備。通過(guò)上述的六個(gè)方面,UPnP設(shè)備可以做到在“零配置”的前提下提供了聯(lián)網(wǎng)設(shè)備之間的自動(dòng)發(fā)現(xiàn)、自動(dòng)聲明、“直接”信息交換和互操作等功能,真正實(shí)現(xiàn)“設(shè)備即插即用”。
UPnP所用到的主要協(xié)議還有:SSDP(Simple Service Discovery Protocol 簡(jiǎn)單服務(wù)發(fā)現(xiàn)協(xié)議)、GENA(Generic Event Notification Architecture 通用事件通知結(jié)構(gòu))、SOAP(Simple Object Access Protocol 簡(jiǎn)單對(duì)象訪問協(xié)議)、XML(Extensible Markup Language 可擴(kuò)張標(biāo)記語(yǔ)言)。采用IP協(xié)議來(lái)保證UPnP獨(dú)立與網(wǎng)絡(luò)傳輸?shù)奈锢斫橘|(zhì),SOAP協(xié)議來(lái)保證UPnP設(shè)備具有互操作能力,XML來(lái)對(duì)設(shè)備和服務(wù)進(jìn)行統(tǒng)一的描述,HTTP協(xié)議來(lái)進(jìn)行UPnP設(shè)備的信息交互。采用這些現(xiàn)存的、廣泛應(yīng)用的協(xié)議能減少開發(fā)UPnP設(shè)備的工作量,使UPnP設(shè)備更好地融入現(xiàn)有網(wǎng)絡(luò)。
電子發(fā)燒友App













評(píng)論