UPnP

UPnP:通用即插即用 

UPnP:Universal Plug and Play

UPnP 是各種各樣的智能設備、無線設備和個人電腦等實現遍佈全球的對等(P2P)網絡連接的結構。UPnP 的應用範圍非常大,以致足夠可以實現許多現成的、新的及令人興奮的方案,包括家庭自動化、打印、圖片處理、音頻 / 視頻娛樂、廚房設備、汽車網絡和公共集會場所的類似網絡。UPnP 是一種分佈式的,開放的網絡架構,它可以充分發揮 TCP/IP 和網絡技術的功能,不但能對類似網絡進行無縫連接,而且還能夠控制網絡設備及在它們之間傳輸信息。在 UPnP 架構中沒有設備驅動程序,取而代之的是普通協議。UPnP 是獨立的媒介。在任何操作系統中,利用任何編程語言都可以使用 UPnP 設備。

UPnP 並不是周邊設備即插即用模型的簡單擴展。在設計上,它支持0設置、網絡連接過程“不可見”和自動查找衆多供應商提供的多如繁星的設備的類型。換言之,一個 UPnP 設備能夠自動跟一個網絡連接上、並自動獲得一個 IP 地址、傳送出自己的權能並獲悉其它已經連接上的設備及其權能。最後,此設備能自動順利地切斷網絡連接,並且不會引起意想不到的問題。

UPnP 推動了英特網技術的發展,包括 IP、TCP、UDP、HTTP、SSDP 和 XML 等技術。在英特網上契約以有線應用協議爲基礎,而該協議是說明性的、利用 XML 進行表述和 HTTP 進行傳輸的。與此相同的是,UPnP 的明確設計目標就是提供這樣的環境。再者,當成本、技術或經費等方面的因素阻止了在某種媒介裏或接入其中的設備上運用 IP 時,UPnP 能夠通過橋接的方式提供非 IP 協議的媒體通道。UPnP 不會爲應用程序指定 API,因此供應商們就可以自己創建 API 來滿足客戶的需求。 


以下是微軟官方網站對UPnP的解釋:

問:什麼是 UPnP? 
答:通用即插即用 (UPnP) 是一種用於 PC 機和智能設備(或儀器)的常見對等網絡連接的體系結構,尤其是在家庭中。UPnP 以 Internet 標準和技術(例如 TCP/IP、HTTP 和 XML)爲基礎,使這樣的設備彼此可自動連接和協同工作,從而使網絡(尤其是家庭網絡)對更多的人成爲可能。 

問:UPnP 對消費者意味着什麼? 
答:簡單、更多選擇和更新穎的體驗。包含通用即插即用技術的網絡產品只需實際連到網絡上,即可開始正常工作。實際上,UPnP 可以和任何網絡媒體技術(有線或無線)協同使用。舉例來說,這包括:Category 5 以太網電纜、Wi-Fi 或 802.11B 無線網絡、IEEE 1394("Firewire")、電話線網絡或電源線網絡。當這些設備與 PC 互連時,用戶即可充分利用各種具有創新性的服務和應用程序。

以下是BC官方網站對UPnP的解釋:

UPnP(Universal Plug and Play),通用即插即用,是一組協議的統稱,不能簡單理解爲UPnP=“自動端口映射”。在BitComet下載中,UPnP包含了2層意思: 
1、對於一臺內網電腦,BitComet的UPnP功能可以使網關或路由器的NAT模塊做自動端口映射,將BitComet監聽的端口從網關或路由器映射到內網電腦上。 
2、網關或路由器的網絡防火牆模塊開始對Internet上其他電腦開放這個端口。

二、哪些用戶需要用UPnP功能?

1、只有在需要使用一些支持UPnP功能的P2P軟件的時候,如BT、電騾eMule、MSN等,我們才需要考慮UPnP這個東東。如果你根本就不用這些軟件,僅僅是上網瀏覽的話,下文就沒必要看了;

2、如果你需要使用這些P2P軟件,但你是外網用戶,那麼下文也可以不看了,因爲你不需要做什麼UPnP就可以正常使用這些P2P軟件了;

3、如果你是內網用戶,但你已經手動爲這些P2P軟件進行了端口映射,如在使用BC下載時,在“用戶列表”中已經看到“遠程”,或者是使用電騾eMule連接服務器成功後,已經顯示爲高ID,那麼下文也可以不看了。

但需要注意的是,手動做的端口映射只是針對某個P2P軟件起作用,如果再使用新的P2P軟件的話,仍然需要針對新的P2P軟件做相應的端口映射纔可以;

4、如果你是內網用戶,需要使用這些P2P軟件,而且並未進行手動端口映射,比如在使用BC進行下載時,“用戶列表”中只有“本地”而沒有“遠程”,在使用電騾eMule的時候,顯示的也是低ID,那麼此時我們才需要考慮端口映射的問題!

這時我們可以有兩種選擇:

1、進行手動端口映射,方法參見上面第3點的鏈接文章;
2、打開UPnP功能,進行自動端口映射,也就是我們下面所講的內容;

小結:UPnP自動端口映射的目的:

以BC爲例,手動端口映射和自動UPnP端口映射都是爲了獲得遠程連接,因此凡是在“用戶列表”裏看見了“遠程”的用戶,都不需要進行端口映射或是UPnP!UPnP和端口映射只需要取其一,他們相當於達到目的的2種不同的方法而已。

因此如果你的系統或者硬件不支持UPnP功能,大可不必傷心,按照第3點的鏈接文章中的方法手動做端口映射就可以了,效果是一樣的;

三、實現UPnP必須滿足哪些條件:

必須同時滿足3個條件:

1、Modem必須支持UPnP功能:是否具備此功能可查閱說明書或者直接諮詢廠家。一般來講,Modem還必須同時支持路由功能,除非你配備了單獨的路由器;

2、操作系統的支持:文章開頭提到的那篇介紹UPnP的文章中,提到只有windows xp系統才支持UPnP功能,但微軟的官方網站聲稱從Windows Me開始就已經支持UPnP功能了。但Windows Me這個操作系統我也沒有用過,大家可以自行測試;

3、軟件必須支持UPnP功能:如BC、電騾eMule、MSN等軟件都支持UPnP功能;

四、如何打開UPnP功能

1、在Modem或者ROUTE中啓用UPnP功能

2、在操作系統中打開UPnP功能

如果你使用的是XP SP2系統,則首先進入:控制面板->添加或刪除程序->添加/刪除windows組件中,在“網絡服務”中勾選“UPnP用戶界面”,

3、在windows中打開相應的UPnP服務:

進入“控制面板->管理工具->服務”,找到SSDP Discovery Service和Universal Plug and Play Device Host兩項服務



問:我剛上寬帶網,我聽說如果運用好“UPNP”協議可以提高上網速度,請問“UPNP”協議是什麼含義?具體如何應用?

  答:UPNP的全稱是Universal Plug and Play。UPnP規範基於TCP/IP協議和針對設備彼此間通訊而制訂的新的Internet協議。事實上,UPNP的制定正是希望未來所有聯入Internet中的設備能夠不受網關阻礙的相互通信。比如用MSN Messager傳輸文件將更加快捷方便了 
,那到底如何如何利用UPNP呢?

  首先我們需要進入路由器的Web控制界面中打開路由器的UPNP功能。在瀏覽器中輸入路由器的地址,進入路由器的管理頁面之後,找到UPNP功能,並將其設置爲Enable。

  然後我們便可以進入Windows XP的設置。在Windows XP中,UPNP支持模塊並不是默認安裝的,因此我們需要按照以下步驟對其進行手動安裝:

  在“添加或刪除程序”對話框中,點擊“添加/刪除Windows組件”。在“Windows組件嚮導”中,點擊“網絡服務”,點擊“詳細”,然後選擇“通用即插即用”複選框。重新啓動之後,Windows XP提示找到新硬件,進入網上鄰居後你會發現路由器,說明UNNP功能就打開了。現今市場上幾乎所有的寬帶路由器都提供UPNP功能的支持,通過我們的合理配置,可以讓我們在點對點文件傳輸等方面獲得更好的體驗和更快的速度。(GSF)  
 統一即插即用英文是Universal Plug and Play,縮寫爲UPnP。要說計算機外設的即插即用(Plug and Play(縮寫PnP)),大家可能很熟悉,但對統一即插即用,多數人會感到是一頭霧水。由於windows xp加入對UPnP的支持,並且被查出存在很嚴重的安全問題,所以,一時間,使得UPnP名聲大噪。巧的是,本人原來查閱過關於UPnP的技術白皮書,而且也較爲詳細地看了關於此次發現的安全缺陷的介紹。因此,趁着這個機會,將UPnP以及引起安全缺陷的詳情披露出來。

一、 UPnP是用來幹什麼的?

  網絡發展到現在,已經可以使我們在網上衝浪、收發郵件、聽到遠方傳送來的聲音、搜索感興趣的內容、下載軟件、點播節目、即時聊天等等、等等……實現的功能好像已經不少,但,人的慾望無止境,享福人還想更享福,還有許多目標沒有達到:例如,怎樣才能使我們在網絡上,像平時用遙控器那樣,操作空調器、電風扇、廚房電器,或網絡遠端的電器設備呢?如何利用網絡上的計算機資源,使這種“遙控”更具智能化?甚至,將一系列相關的控制寫到一個腳本中,以便用戶定製自己所喜愛的控制流程?……等等。實現諸如此類的效果,將是有巨大需求的應用技術。如果實現通過網絡用UPnP控制家用設備,將給我們的生活帶來很大的方便和很多新的體驗。例如:

  1.你在下班之前,或在回去的路上,就可以先打開家裏的空調器和廚房設備,等進入家門,立刻就是一個溫度宜人的環境――廚房裏的飯也做好了。房間溫度的高低和廚房內煮飯的過程,都是根據事先設計好的“腳本”程序進行的,絕對可靠。
  2.你若是一位上檔次的音樂發燒者,肯定對聆聽音樂的環境要求很嚴:音箱位置高低、音量大小、燈光明暗、窗簾拉不拉上都有講究。手動控制隨好,畢竟不方便。你要使用上UPnP,一切都會爲你代勞。還能將你習慣的音響音量、燈光亮度、音箱的高度等等,以你認爲最佳的參數寫到執行腳本中,以後可以都以此爲準。如果你擁有自己的專門聽音室,只要你打開聽音室的門,上述的環境就會立刻設置好。曲終人散,只管放心離開好了,UPnP系統會自己關閉音響,熄滅電燈,拉上窗簾。
  3.你人在辦公室,心裏卻放不下家裏的孩子。用上UPnP,只要在家裏安裝攝像頭,建立好與網絡的連接。在辦公室內,啓用桌面電腦的WEBTV,連通網絡後,可以即時監視孩子在家裏的一舉一動。

  凡此種種的方便和誘人之處還很多,不勝枚舉。

  其實,這已經不是科學幻想、也不是專家預言。目前用UPnP協議就可以實現這些操作!這正是windows xp系統急於加入UPnP的原因。正因爲UPnP是一個協議,UPnP的使用可跨越各種操作系統平臺,開發應用程序也沒有開發語言的侷限。可工作於各種形式的網絡結構。且僅以現在的網絡設施爲基礎,僅僅加上這個UPnP協議,既不用添加新的設施,也不用重新架設網絡介質就可以投入使用! 

  UPnP協議具有下述特色:

  1. 以網絡爲應用環境,不考慮“孤島”中的計算機。
  2. 以TCP/IP和整個Internet爲基礎。這樣是“中立”的,不依附於任何操作系統或應用程序,不使用特定的API函數,不受程序設計語言的侷限。可以無縫地接入傳統網絡。
  3. 設備可以動態地進入網絡中,隨後獲得IP地址,“學習” 或查找自己應當進行的操作和服務的信息;“感知”別的設備是否存在以及它們的作用和當前的狀態 。所有這些,都應當是可自動完成的。
  4. 每個設備都可讀取屬於自己的、特定的狀態和參數;完成控制操作後應當發出“操作完成”的響應信號。如果失敗,則應發出控制失敗的信號。

二、UPnP協議的層:

  UPnP協議的最終目的,是建立一個可用的設備模型, 因篇幅這裏不對整個結構進行詳細的分析,但你應當記住下面的主要特徵:

  1. UPnP是一個多層協議構成的框架體系,每一層都以相鄰的下層爲基礎,同時又是相鄰上層的基礎。直至達到應用層爲止。該圖中的最下面是就是IP和TCP,共兩層,負責設備的IP地址。
  2. 三層是HTTP、HTTPU、HTTPMU,這一層,大家應當是熟悉的,屬於傳送協議層。傳送的是內容都經過“封裝”後,存放在特定的XML文件中的。對應的SSDP、GENA、SOAP指的是保存在XML文件中的數據格式。到這一層,已經解決了UPnP設備的IP地址和傳送信息問題。
  3. 第四層是UPnP設備體系定義,僅僅是一個抽象的、公用的設備模型。任何UPnP設備都必須使用這一層。
  4. 第五層是UPnP論壇的各個專業委員會的設備定義層,在這個論壇中,不同電器設備由不同的專業委員會定義,例如:電視委員會只負責定義網絡電視設備部分,空調器委員會只負責定義網絡空調設備部分……,依此類推。所有的不同類型的設備都被定義成一個專門的架構或者模板,供建立設備的時候使用。可以推知,進入這一層,設備已經被指定了明確用途。當然,這些都必須遵守標準化的規範。從目前看,UPnP已經可以支持大部分的設備:從電腦、電腦外設,移動設備和家用消費類電子設備等等,無所不包,隨着這個體系的普及,將可能有更多的廠家承認這一標準,最終,可能演化爲公認的行業標準。
  5. 最上層,也就是應用層,由UPnP設備製造廠商定義的部分。這一層的信息是由設備製造廠商來“填充” 的,這部分一般有設備廠商提供的、對設備控制和操作的底層代碼,然後,就是名稱序列號呀,廠商信息之類的東西。  
三、協議內部的詳細情況

  僅僅有這樣五層UPnP協議,也只不過有了一個共同遵守的框架,實際的UPnP系統究竟是如何構成的呢?

  完整的UPnP服務系統由支持UPnP的網絡和符合UPnP規範的設備共同構成的。

  整個系統是由設備、服務、和控制指針三部分所構成。

  設備:
  這裏是指符合UPnP規範的設備。一個UPnP設備可以看成一個包含服務並嵌套了常規設備的“容器” 。例如,一個UPnP的VCR(錄像機)設備可以包含磁帶傳送服務、調諧服務和時鐘服務。就是說,UPnP之下的設備不能僅僅理解爲硬件意義上的設備,而應當包括服務功能。

  不同種類的UPnP設備將關聯不同的設置、服務和嵌入設備。如打印機和VCR屬於不同用途的設備,服務就不可能定義成一樣的。

  服務:
  設備執行用戶請求的控制過程,可劃分成一個個很小的階段或單位,每個單位就稱爲一個服務。每一個服務,對外都表現爲具體的行爲和模式,而行爲和模式又可以用狀態和變量值進行描述。只要可以用數值描述,在計算機裏面就容易處理了。例如,模仿一個時鐘,它只有一個工作模式:這個模式就是模擬並顯示當前的時間。而一個時鐘的行爲共有兩種(也只有兩種):

  1. 設置時間(用來“即平時說的對錶”).
  2. 得到時間(用於顯示時間)。

  其它設備服務,也是用這樣思路來描述和定義的,一個設備也可以被定義多個服務。不論是設備的定義信息和服務的描述信息,都保存在一個XML文件中,這個文件也是UPnP協議構成的一部分。當設備建立和使用服務的時候,XML文件可以與它們進行關聯。

  XML文件中還有一個很關鍵的“狀態表”,狀態表可進一步分爲“服務狀態表”和“事件狀態表”。整個UPnP設備運行的全過程內,狀態表貫穿始終,當設備狀態改變的時候,例如發生參數變化或狀態刷新的時候,立即就在“狀態表”中反映出來。如控制服務器在接收到設置時間的行爲請求時,就立即執行請求(對時操作),並給出響應,同時更新狀態表中的有關數據。相應地,事件服務器負責向對此事件感興趣的設備公佈所發生的狀態改變。例如,一個火災事件發生後,事件服務器就向火災報警器發佈這個事件,導致報警器動作產生報警信號。  
  控制指針:
  在UPnP網絡中,用戶請求設備執行的控制是通過控制指針實現的,控制指針首先是一個有能力控制別的設備的控制者,還要具有在網絡中 “發現”控制目標的能力。在發現(控制目標)之後,控制指針應當:

  ①取得設備的描述信息並得到所關聯的服務列表。
  ②取得相關服務的描述。
  ③調用控制服務行爲。
  ④確定服務的事件 “源”,不論何時,只要服務狀態發生改變,事件服務器會立即向控制指針發送一個事件信息。

  從上面說到的各種信息,都保存在XML文件中,不同用途的信息,格式不同。保證可以各取所需,不會混淆。

  那麼,UPnP的完整工作過程是怎樣的呢?

  UPnP在控制指針和被控制設備之間提供通訊功能。而網絡介質、TCP/IP協議、HTTP僅提供基本的連接和IP地址分配。整個工作過程需要處理六個方面的內容,即地址分配、發現設備、對設備的描述、設備控制、設備事件、設備表達。

  地址問題:
  地址是整個UPnP系統工作的基礎條件,每個設備都應當是DHCP(Dynamic Host Configuration Protocol 動態主機配置協議)的客戶。當設備首次與網絡建立連接後,利用DHCP服務,使設備得到一個IP地址。這個IP地址可以是DHCP系統指定的,也可以是由設備選擇的,當然,有能力自己選擇IP地址的設備,必然是那些“聰明”的設備才行!這也就是所謂的“自動”IP地址。

  如果遇到本地DHCP管理範圍之外的IP地址請求,還需要解決“友好設備”

  的地址分配問題,這個問題通常由域名服務器來解決。

  發現設備:
  可分成兩種情況,一種是在有控制請求之後,在當前的網絡中查找有無對應的可用設備;另一種情況是某一設備接入網絡、取得IP地址之後,就開始向網絡“廣播”自己已經進入網絡,即尋找控制請求。

  設備的描述:
  簡單說,這是聲明“自己”是什麼樣的設備,例如名稱、製造廠商、序列號碼等等。剛開始“發現”設備後,控制指針對這個設備的“瞭解”還很少,需要依據ULR找到該設備的描述文件,從這些文件中讀取更多的描述信息。描述信息的範圍很廣,一般都是由設備的製造廠商提供的。主要的描述項目有:控制的模式名稱和模式號碼、設備序列號、製造廠商名稱、廠商的WEB的ULR……等等。這些一般都存放在特定的XML文件中;  
  設備控制:
  控制指針找到設備描述之後,會從描述中“提煉”出要進行的操作並獲悉所有的服務;對每個UPnP設備來說,這些描述必須是很確切、很詳細的,描述中可能包含有命令或行爲列表、服務響應信息、用到的參數等等。對於服務的每個行爲,也伴有描述信息:主要是整個服務進行期間的變量、變量的數據類型、可用的取值範圍和事件的特徵。

  要控制某個設備,控制指針必須先發送一個控制行爲請求,要求設備開始服務,然後再按設備的ULR發送相應的控制消息,控制消息就是放置在XML文件中的那些SOAP格式的信息。最後,服務會返回響應信息,指出服務是成功或是失敗。

  設備事件:
  在服務進行的整個時間內,只要變量值發生了變化或者模式的狀態發生了改變,就產生了一個事件,系統將修改上述提到的事件列表的內容。隨之,事件服務器把事件向整個網絡進行廣播。另一方面,控制指針也可以事先向事件服務器預約事件信息,保證將該控制指針感興趣的事件及時準確地傳送過來。

  廣播或預約事件,傳送的都是事件消息,事件消息也放在XML文件中,使用的格式是GENA。

  設備投入工作之前的準備―――初始化過程,也是一個事件,初始化需要的各種信息也是用事件消息傳送的。包括的內容主要是:變量初始值,模式的初始狀態等等。

  設備表達:
  只要得到了設備的ULR,就可以取得該設備表達頁面的ULR,然後可以將此表達納入用戶的本地瀏覽器上。這部分還包括與用戶對話的界面,以及與用戶進行會話的處理。

  整個UPnP系統,是在“中樞神經”的指揮下協同工作的。其大致情形如下:

  凡是具備IP地址的的設備都必須直接使用網絡的IP地址,但有些設備可能並不具備直接使用網絡IP地址的能力,例如,電燈開關的控制就是這樣,這是非IP設備;非IP設備通過網橋(UPnP Bridge)來與控制指針交換信息。

  直接使用IP地址的有:控制指針(可在口袋電腦和遠程設備上發出控制)、本地設備,例如VCR和時鐘;以及網橋。非IP設備有所謂輕設備(如溫度控制器)和非UPnP的設備(如電燈控制開關等)。 
上述介紹屬於硬件方面,下面再說作爲控制靈魂的軟件:在上面的敘述中,多次提到用XML文件存放需要的信息,因爲無論是控制指針或設備服務,都需要很多信息,有讀出的,有傳出的,UPnP協議約定這些都存放在特定的文件XML中。用途不同的信息,在XML文件中的格式不同。所以,相關的XML文件是控制服務的靈魂。

四、關於UPnP隱藏的安全缺缺陷:

  這次發現的安全缺陷共有兩個,其中第一個缺陷是對緩衝區(Buffer)的使用沒有進行檢查和限制。外部的攻擊者,可以通過這裏取得整個系統的控制特權!由於UPnp功能必須使用計算機的端口來進行工作,取得控制權的攻擊者,還有可能利用這些端口,達到攻擊者的目的。這個缺陷導致的後果很嚴重,不論那個版本的windows 系統,只要運行UPnP,就都存在這個危險!但嚴格地說,這並不完全是UPnP技術本身的問題,更多的是程序設計的疏忽。

  第二個缺陷就與UPnP的工作機理有關係了!

  該缺陷存在於UPnP工作時的“設備發現”階段。發現設備可以分爲兩種情況:如果某個具備UPnP功能的計算機引導成功並連接到網絡上,就會立刻向網絡發出“廣播”,向網絡上的UPnP設備通知自己已經準備就緒,在程序設計這一級別上看,該廣播內容就是一個M-SEARCH(消息)指示。該廣播將被“聲音所及”範圍之內的所有設備所“聽到”。並向該計算機反饋自己的有關信息,以備隨後進行控制之用。

  相類似,如果某個設備剛剛連接到網絡上,也會向網絡發出“通知”,表示自己準備就緒,可以接受來自網絡的控制,在程序設計這一級別上看,該通知就是一個NOTIFY(消息)指示。也將被“聲音所及”範圍之內的所有計算機接受。計算機將 “感知”該設備已經向自己“報到”。實際上,NOTIFY(消息)指示也不是單單發送給計算機聽的,別的網絡設備也可以聽到。

  就是在上述的一播一聽之間,出現了問題!

  如果某個黑客向某個用戶系統發送一個NOTIFY(消息)指示,該用戶系統就會收到這個NOTIFY(消息)指示並在其指示下,連接到一個特定服務器上,接着向相應的服務器請求下載服務―――下載將要執行的服務內容。服務器當然會響應這個請求。UPnP服務系統將解釋這個設備的描述部分,請求發送更多的文件,服務器又需要響應這些請求。這樣,就構成一個“請求――響應”的循環,大量佔用系統資源,造成UPnP系統服務速度變慢甚至停止。所以,這個缺陷將導致“拒絕服務”攻擊稱爲可能!
發佈了5 篇原創文章 · 獲贊 15 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章