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