UPnP

通用即插即用（，简称UPnP）是由“通用即插即用论坛”（UPnP™ Forum）推广的一套网络协议。该协议的目标是使家庭网络（数据共享、通信和娱乐）和公司网络中的各种设备能够相互无缝连接，并简化相关网络的实现。UPnP通过定义和发布基于开放、因特网通讯网协议标准的UPnP设备控制协议来实现这一目标。

UPnP这个概念是从隨插即用（Plug-and-play）衍生而来的，隨插即用是一种热拔插技术。

概述 
UPnP体系允许PC间的点对点连接、网际互连和无线设备。它是一种基于TCP/IP、UDP和HTTP的分布式、开放体系。

UPnP使得任意两个设备能在LAN控制设备的管理下相互通信。其特性包括：

 传输介质和设备独立。UPnP技术可以应用在许多媒体上，包括电话线、电线（電力線通信PLC）、以太网、紅外通訊技術（IrDA）、無線電（Wi-Fi，蓝牙）和Firewire（1394）。无需任务设备驱动；而是采用共同的协议。
 用户界面（UI）控制。UPnP技术使得设备厂商可以通过网页浏览器来控制设备並进行交互。
 操作系统和程序语言独立。任何操作系统和程序语言均可以用于构建UPnP产品。UPnP并没有设定或限制运行于控制设备上的应用程序API；OS厂商可以建立满足他们客户需求的API。UPnP使得厂商可以像开发常规应用程序一样来控制设备UI和交互。
 基于因特网技术。UPnP构建于IP、TCP、UDP、HTTP，和XML等许多协议之上。
 编程控制。UPnP体系同时支持常规应用程序编程控制。
 扩展性。每个UPnP设备都可以有构建于基本体系之上、与具体设备相关的服务。

UPnP支持零配置，"看不见的网络"和自动检测；任何设备能自动加入一个网络，获取一个IP地址，广播自己的名字，根据请求检查自身功能以及检测出其它设备和它们的功能。DHCP和DNS服务是可选的，并只有它们在网络上存在的时候才会使用。设备可以自动离开网络而不会遗留下任何不需要的状态信息。

UPnP的基础是IP地址解析。每一个设备都应当有一个DHCP客户端并在连入网络的时候自动搜索DHCP服务。如果没有找到DHCP服务，也就是说网络是缺乏管理状态，那么设备必须给自己设定一个地址。如果在和DHCP服务器交互的过程中，设备获得了一个域名（比如通过DNS服务器或者DNS传递），那么它应当在接下来的网络操作中使用这个域名；否则，设备应当使用它的IP地址。

协议

发现 
给定一个IP地址，UPnP网络中的第一步是发现。UPnP的發現協議，是基于简单服务发现协议（SSDP）。当一个设备被加入到网络中，UPnP检测协议允许该设备向控制点广播自己的服务。类似地，当一个控制点加入到网络中的时候，它也能够搜索到网络中存在的、感兴趣的设备相关信息。裝置之間交換的發現訊息，主要包含此裝置的必要資訊以及其所提供的一項服務，例如裝置的類型、標識和指向詳細資訊的連結（網路位置）。

描述 
UPnP网络的下一步是描述。当一个控制点检测到一个设备时，它对该设备仍然知之甚少。为了使控制点了解更多关于该设备的信息或者和设备进行交互，控制点必须从设备发出的检测信息中包含的URL获取更多的信息。某个设备的UPnP描述是XML的方式，包括品牌、厂商相关信息，如型号名和编号、序列号、厂商名、品牌相关URL等。描述还包括一个嵌入式设备和服务列表，以及控制、事件传递和存在相关的URL。对于每种设备，描述还包括一个命令或动作列表，包括响应何种服务，针对各种动作的参数；这些变量描述出运行时设备的状态信息，并通过它们的数据类型、范围和事件来进行描述。

控制 
UPnP网络的下一步是控制。当一个控制点获取到设备描述信息之后，它就可以向该设备发送指令了。为了实现此，控制点发送一个合适的控制消息至服务相关控制URL（包含在设备描述中）。控制消息也是通过简单对象访问协议（SOAP）用XML来描述的。类似函数调用，服务通过返回动作相关的值来回应控制消息。动作的效果，如果有的话，会反应在用于刻画运行中服务的相关变量。

事件通知 
下一步是事件通知。一个UPnP描述包括一组命令列表和刻画运行时状态信息的变量。服务在这些变量改变的时候进行更新，控制点可以进行订阅以获取相关改变。服务通过发送事件消息来发布更新。事件消息包括一个或多个状态信息变量以及它们的当前数值。这些消息也是采用XML的格式，用进行格式化。一个特殊的初始化消息会在控制点第一次订阅的时候发送，它包括服务相关的变量名及值。为了支持多个控制点并存的情形，事件通知被设计成对于所有的控制点都平行通知。因此，所有的订阅者同等地收到所有事件通知。

存在 
最后一步是存在。如果设备带有存在URL，那么控制点可以通过它来获取设备存在信息，即在浏览器中加载URL，并允许用户来进行相关控制或查看操作。具体支持哪些操作则是由存在页面和设备完成的。

NAT穿透 
UPnP为NAT（网络地址转换）穿透带来了一个解决方案：互联网网关设备协议（IGD）。NAT穿透允许UPnP数据包在没有用户交互的情况下，无障碍的通过路由器或者防火墙（假如那个路由器或者防火墙支持NAT）。

未来的发展

UPnP影音媒体服务器
UPnP影音媒体服务器存储和共享数字媒体，比如：图片、电影或是音乐。

參考資料 

 UPnP™ Forum Universal Plug and Play Device Standards 
 Golden G. Richard：Service and Device Discovery : Protocols and Programming, McGraw-Hill Professional, ISBN 0-07-137959-2
 Michael Jeronimo，Jack Weast：UPnP Design by Example: A Software Developer's Guide to Universal Plug and Play, Intel Press, ISBN 0-9717861-1-9

外部連結

文件 
 UPnP™ Forum
 DLNA (Digital Living Network Alliance) 
 The Jini, Vision
 technique comparison
 Microsoft WHDC UPnP webpage & links
 Universal Plug and Play in Windows XP

新聞 
 Security firm predicts Microsoft Windows UPnP exploit by the end of the week at The Inquirer (Wednesday, 11 April 2007)
 Microsoft security updates for April 2007 to fix the above Microsoft Windows UPnP security issue.

网络协议