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

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

UPnP 工作流程

UPnP 工作流程

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

各階段主要工作

尋址

獨立的地址是整個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協議來完成的。

發現階段

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

  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)通常爲控制點。

事件通知的交互過程

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

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

表達

當某些UPnP設備需要或者支持用戶交互,則該設備的描述上會包括表達的URL。控制點可以通過該表達URL下載一個爲設備描述用戶界面的HTML文檔。該HTML文檔能夠提供一種控制或狀態顯示,可以在瀏覽器中顯示出來。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章