基礎概念
DLNA
DLNA的全稱是DIGITAL LIVING NETWORK ALLIANCE(數字生活網絡聯盟), 其宗旨是Enjoy your music, photos and videos, anywhere anytime, DLNA(Digital Living Network Alliance) 由索尼、英特爾、微軟等發起成立、旨在解決個人PC,消費電器,移動設備在內的無線網絡和有線網絡的互聯互通,使得數字媒體和內容服務的無限制的共享和增長成為可能,目前成員公司已達280多家。
DLNA標准包括多項協議及標准,其中最重要的部分是UPnP。對於我們目前的需求UPnP就能滿足全部要求。
UPnP
通用即插即用(英語:Universal Plug and Play,簡稱UPnP)是由“通用即插即用論壇”(UPnP™ Forum)推廣的一套網絡協議。該協議的目標是使家庭網絡(數據共享、通信和娛樂)和公司網絡中的各種設備能夠相互無縫連接,並簡化相關網絡的實現。UPnP通過定義和發布基於開放、因特網通訊網協議標准的UPnP設備控制協議來實現這一目標。
UPnP這個概念是從即插即用(Plug-and-play)派生而來的,即插即用是一種熱拔插技術。
協議棧
UPnP設備體系結構包含了設備之間、控制點之間、設備和控制點之間的通信。完整的UPnP由設備尋址、設備發現、設備描述、設備控制、事件通知和基於Html的描述界面幾部分構成。

- UPnP是一個多層協議構成的框架體系,每一層都以相鄰的下層為基礎,同時又是相鄰上層的基礎。直至達到應用層為止。該圖中的最下面是就是IP和TCP,共兩層,負責設備的IP地址。
- 三層是HTTP、HTTPU、HTTPMU,這一層,屬於傳送協議層。傳送的是內容都經過“封裝”后,存放在特定的XML文件中的。對應的SSDP、GENA、SOAP指的是保存在XML文件中的數據格式。到這一層,已經解決了UPnP設備的IP地址和傳送信息問題。
- 第四層是UPnP設備體系定義,僅僅是一個抽象的、公用的設備模型。任何UPnP設備都必須使用這一層。
- 第五層是UPnP論壇的各個專業委員會的設備定義層,在這個論壇中,不同電器設備由不同的專業委員會定義,例如:電視委員會只負責定義網絡電視設備部分,空調器委員會只負責定義網絡空調設備部分,依此類推。所有的不同類型的設備都被定義成一個專門的架構或者模板,供建立設備的時候使用。可以推知,進入這一層,設備已經被指定了明確用途。當然,這些都必須遵守標准化的規范。從目前看,UPnP已經可以支持大部分的設備:從電腦、電腦外設,移動設備和家用消費類電子設備等等,無所不包,隨着這個體系的普及,將可能有更多的廠家承認這一標准,最終,可能演化為公認的行業標准。
- 最上層,也就是應用層,由UPnP設備制造廠商定義的部分。這一層的信息是由設備制造廠商來“填充” 的,這部分一般有設備廠商提供的、對設備控制和操作的底層代碼,然后,就是名稱序列號呀,廠商信息之類的東西。
設備
設備是提供服務的網路實體,是一個邏輯概念,一個屋里設備可以包含一個或者多個邏輯設備。例如一台PC可以有兩個邏輯設備———視頻播放器和圖片瀏覽器。
服務
服務是UPnP中最小的可控單元,它包括一系列可控制而動作和一組記錄該服務目前情況的狀態。服務是依賴於設備存在的。
控制點
控制UPnP設備工作的網絡終端,主要功能包括獲取設備描述和相關服務列表;獲取感興趣的服務描述;發出控制消息控制設備動作;向感興趣的服務發出訂閱消息,以便當服務狀態改變時,自動獲得時間通知。

一些術語
- UUID
UUID含義是通用唯一識別碼(Universally Unique Identifier),其目的是讓分布式系統中的所有元素,都有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。其格式為xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),分別為當前日期和時間,時鍾序列,全局唯一的IEEE機器識別號,如果有網卡,從網卡mac地址獲得,沒有網卡以其他方式獲得。
- UDN
單一設備名(Unique Device Name),基於UUID,表示一個設備。在不同的時間,對於同一個設備此值應該是唯一的。
- URI
Web上可用的每種資源 - HTML文檔、圖像、視頻片段、程序等 - 由一個通用資源標志符(Universal Resource Identifier,簡稱”URI”)進行定位。 URI一般由三部分組成:訪問資源的命名機制;存放資源的主機名;資源自身的名稱,由路徑表示。考慮下面的URI,它表示了當前的HTML 4.0規范:http://www.webmonkey.com.cn/html/html40/它表示一個可通過HTTP協議訪問的資源,位於主機www.webmonkey.com.cn上,通過路徑/html/html40訪問。
- URL
URL是URI命名機制的一個子集,URL是Uniform Resource Location的縮寫,譯為“統一資源定位符”。通俗地說,URL是Internet上用來描述信息資源的字符串,主要用在各種www客戶程序和服務器程序上。采用URL可以用一種統一的格式來描述各種信息資源,包括文件、服務器的地址和目錄等。
- URN
URN:URL的一種更新形式,統一資源名稱(URN,Uniform Resource Name)。唯一標識一個實體的標識符,但是不能給出實體的位置。標識持久性Internet資源。URN可以提供一種機制,用於查找和檢索定義特定命名空間的架構文件。盡管普通的URL可以提供類似的功能,但是在這方面,URN 更加強大並且更容易管理,因為 URN 可以引用多個 URL。
實現
工作機制
UPnP設備的發現和控制分為6個步驟:尋址、發現、描述、控制、事件及展現。

這三點分別在后面的三篇文章中進行介紹。
整體流程
整體工作流程如下:

