天天看點

UPnP 體系架構和基本原理 —— UPnP 工作流程UPnP 體系架構和基本原理 —— UPnP 工作流程

UPnP 體系架構和基本原理 —— UPnP 工作流程

UPnP 工作流程

UPnP 體系架構和基本原理 —— UPnP 工作流程UPnP 體系架構和基本原理 —— UPnP 工作流程

UPnP需要在裝置與裝置之間,裝置和控制點之間,還有控制點與控制點之間進行通信和資訊互動,顯然需要進行一系列工作過程。主要是:尋址(Addressing)、發現(Discovery)、描述(Description)、控制(Control)、事件(Events)和表達(Presentation,又稱為“表征”或“表示”)六個工作階段。

UPnP 體系架構和基本原理 —— UPnP 工作流程UPnP 體系架構和基本原理 —— UPnP 工作流程

尋址

獨立的位址是整個UPnP系統工作的基礎條件,每個UPnP裝置必須擷取區域網路内的唯一位址,才能加入網絡實作區域網路内的裝置通信。尋址不需要使用者進行手動配置,可以通過DHCP和Auto-IP兩種方式實作裝置自動擷取IP位址并加入到網絡中。

  1. DHCP方式:在區域網路内,每個UPnP裝置都作為DHCP伺服器的用戶端,當裝置與網絡建立聯系後,通過向DHCP伺服器發送請求,從其響應資訊中得到一個唯一IP位址。
  2. Auto-IP方式:使用DHCP方式擷取IP位址失敗時,UPnP裝置将使用Auto-IP方式,從子網路遮罩為169.254/169.16的位址範圍中重複擷取IP位址,直到擷取到一個未被占用的IP位址。同時,還需要定時使用DHCP進行尋址,一但成功,必須釋放Auto-IP擷取到的位址。

發現

連接配接到網絡上的裝置确定了IP位址之後,就會進入發現階段,由SSDP協定來完成的。

UPnP 體系架構和基本原理 —— UPnP 工作流程UPnP 體系架構和基本原理 —— UPnP 工作流程

發現過程主要分兩種情況:

  1. 當控制點加入網絡時,控制點向239.255.255.250:1900廣播SSDP的M-SERACH資訊搜尋網絡内感興趣的裝置和服務。符合控制點搜尋條件的裝置将使用UDP單點傳播進行應答,應答中包含描述文檔的URL位址,控制點收到應答将轉入描述階段。
  2. 當裝置加入網絡時,裝置可以直接向239.255.255.250:1900廣播SSDP的NOTIFY資訊以宣告該裝置可用。控制點收到SSDP的NOTIFY廣播,可以使用HTTP GET向NOTIFY資訊中記錄的描述文檔URL位址發出擷取請求,控制點收到該請求的應答後将轉入描述階段。

裝置對控制點發出的M-SEARCH的應答或裝置自身發出的NOTIFY資訊都包含該裝置的一些特定資訊。除了描述文檔的URL外,還有裝置類型、辨別符等。

描述

在控制點經由發現階段搜尋到一台裝置後,控制點僅僅隻能知道裝置的一些簡單資訊,如:裝置UUID、裝置類型、服務類型、描述檔案的URL位址等。當控制點需要知道裝置更詳細的資訊時,控制點可以使用HTTP GET通過描述文檔的URL位址發出擷取請求,相應裝置收到請求後會将描述資訊傳回。

裝置的UPnP描述分為裝置描述(device description)和服務描述(service description)兩部分,這兩部分描述都需要裝置制造商在遵循UPnP架構協定的前提下提供XML描述檔案。

  1. 裝置描述:用于描述裝置相關資訊以及裝置提供的服務。包含根裝置的資訊如制造商名稱(manufacturer)、子產品名稱(modelName)、子產品描述(modelDescription)等。還可能包含其它嵌入式裝置的描述資訊。
  2. 服務描述:包含一系列該裝置的服務,每個服務可能包含若幹動作、動作的參數、狀态變量、還有參數的資料類型和數值範圍等。

控制

在接收到裝置的裝置描述和服務描述後,控制點可以向描述記錄的服務發出動作請求。

在裝置描述裡,每個服務都會提供一個控制URL(Control URL),控制點可以向這個控制URL發送合适的控制資訊就可以通過服務對裝置進行控制。裝置接收到控制資訊,會執行相應的動作,然後對控制點傳回成功或失敗的資訊。裝置執行動作時可能會改變相應狀态變量,是以觸發事件通知把相應狀态變量資訊發送到相關的控制點。同時,控制點也可以主動發出擷取狀态變量值的動作去查詢裝置的狀态變量。

控制點與裝置之間的資訊采用SOAP格式,控制/回報資訊分成三種:UPnP控制請求(UPnP Control Request),UPnP控制響應(UPnP Control Response)和UPnP控制錯誤響應(UPnP Control Error Response)。

事件

一個UPnP裝置的服務描述中包含該服務相關的動作清單,以及描述服務動作的狀态變量表。裝置接收并執行動作事件時,若引起相關狀态變量的變化,服務将會釋出狀态變量的更新資訊通知相關的控制點,控制點可以訂閱此資訊持續獲得狀态變量的更新通知。在UPnP事件機制中,事件釋出者(publisher)通常為裝置服務,事件訂閱者(subscriber)通常為控制點。

UPnP 體系架構和基本原理 —— UPnP 工作流程UPnP 體系架構和基本原理 —— UPnP 工作流程

訂閱者需要對釋出者進行事件訂閱時,訂閱者可發送一條請求訂閱消息(subscribe),釋出者将會在訂閱失效前持續提供事件通知。訂閱者訂閱事件後,如果需要繼續保持訂閱狀态,訂閱者必須在訂閱過期之前進行續訂(renewal)。當訂閱者不再需要釋出者提供事件通知時,訂閱者應當發送相應的退訂請求取消(cancel)訂閱。

釋出者通過時間通知發送事件提醒訂閱者狀态發生改變。在訂閱者第一次訂閱時,需要發送一個包含所有事件的名稱和值的初始化事件(event)消息,并且允許訂閱者初始化其服務狀态。事件訂閱支援多個控制點,任何事件消息都将向所有相關的訂閱者發送。事件消息使用HTTP協定傳送,事件詳細定義在通用事件通知結構(GENA)協定中。

表達

當某些UPnP裝置需要或者支援使用者互動,則該裝置的描述上會包括表達的URL。控制點可以通過該表達URL下載下傳一個為裝置描述使用者界面的HTML文檔。該HTML文檔能夠提供一種控制或狀态顯示,可以在浏覽器中顯示出來。

不是所有裝置都擁有表示文檔,也不是所有控制點都能夠顯示包含複雜HTML對象等的表達文檔。

上一篇: UPNP程式設計

繼續閱讀