标题：UPNP
简介
UPnP
英文名称：Universal Plug and Play
中文译名：通用即插即用
  内嵌upnp协议UPnP协议统一即插即用英文是Universal Plug and Play，缩写为UPnP。UPnP规范基于TCP/IP协议和针对设备彼此间通讯而制订的新的Internet协议。要说计算机外设的即插即用(Plug and Play（缩写PnP）)，大家可能很熟悉，但对通用即插即用，多数人会感到是一头雾水。由于windows xp加入对UPnP的支持，并且被查出存在很严重的安全问题，所以，一时间，使得UPnP名声大噪。
基本概念
  自带UPNP功能录像机UPnP 的应用范围非常大，以致足够可以实现许多现成的、新的及令人兴奋的方案，包括家庭自动化、打印、图片处理、音频 / 视频娱乐、厨房设备、汽车网络和公共集会场所的类似网络。它可以充分发挥 TCP/IP 和网络技术的功能，不但能对类似网络进行无缝连接，而且还能够控制网络设备及在它们之间传输信息。在 UPnP 架构中没有设备驱动程序，取而代之的是普通协议。
UPnP 并不是周边设备即插即用模型的简单扩展。在设计上，它支持0设置、网络连接过程“不可见”和自动查找众多供应商提供的多如繁星的设备的类型。换言之，一个 UPnP 设备能够自动跟一个网络连接上、并自动获得一个 IP 地址、传送出自己的权能并获悉其它已经连接上的设备及其权能。最后，此设备能自动顺利地切断网络连接，并且不会引起意想不到的问题。
UPnP 推动了因特网技术的发展，包括 IP、TCP、UDP、HTTP、SSDP和 XML 等技术。在因特网上契约以有线应用协议为基础，而该协议是说明性的、利用 XML 进行表述和 HTTP 进行传输的。与此相同的是，UPnP 的明确设计目标就是提供这样的环境。再者，当成本、技术或经费等方面的因素阻止了在某种媒介里或接入其中的设备上运用 IP 时，UPnP 能够通过桥接的方式提供非 IP 协议的媒体通道。UPnP 不会为应用程序指定 API，因此供应商们就可以自己创建 API 来满足客户的需求。
官网解释
技术支持对UPnP的诠释
支持UPnP功能的设备(6张)以下是微软官方网站对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上其他电脑开放这个端口。
经典应用
网络地址转换在数量以百万计而且数目仍然在继续增长的家庭网络出现很久以前，Internet上的寻址系统就已经开发出来了。实际上，在Internet尚处于幼年的时候所开发的这个寻址系统到目前为止仍然能够正常工作真可以说是一个奇迹。 
因为Internet地址资源正在迅速被耗尽，大多数的家庭网络都使用网络地址转换（NAT）技术建立了一个网关。NAT是Internet工程任务组（IETF）制订的一种标准，它允许私有网络中的多台PC或设备共享一个全球唯一的公共地址（所使用私有地址的范围为10.0.0.0/8、192.168.0.0/16和172.0.0.0/11）。作为对IP地址短缺的一种临时补救措施，NAT可以很好地完成很多工作--例如Windows XP的Internet连接共享就使用NAT，就像很多网关设备（例如DSL和线缆调制解调器）所做的一样。 
但问题是：NAT希望所有的网络应用程序都以一种标准方式（即在数据包头中使用IP地址）进行通信，但是有些网络程序未预计到NAT的存在。他们使用了NAT无法转换的嵌入式IP地址。NAT 穿越技术NAT穿越技术允许网络应用程序对它们是否位于一个具有UPnP能力的NAT设备之后进行检测。然后，这些程序将获得共享的全球可路由IP地址，并且配置端口映射以将来自NAT外部端口的数据包转发到应用程序使用的内部端口上--所有这一切都是自动完成的，用户无需手动映射端口或者进行其它工作。NAT穿越技术允许网络设备或者点对点应用程序通过动态开启和闭合与外部服务之间的通信端口穿过NAT网关与外界通信。
实际应用
网络发展到现在，我们已经实现的有很多，但还有许多目标没有达到。例如在网络上，像平时用遥控器那样，操作家用电器或网络远端的电器设备等等。实现诸如此类的效果，将是有巨大需求的应用技术。如果实现通过网络用UPnP控制家用设备，将给我们的生活带来很大的方便和很多新的体验。所以windows系统也加入了UPnP协议，因为UPnP是一个协议，UPnP的使用可跨越各种操作系统平台，开发应用程序也没有开发语言的局限。可工作于各种形式的网络结构。且仅以现在的网络设施为基础，仅仅加上这个UPnP协议，既不用添加新的设施，也不用重新架设网络介质就可以投入使用！
仅现在而言，UPnP已经可以实现好多看似科学幻想的操作了，只是这些操作还未普及而已。
1.在下班之前，或在回去的路上，就可以先打开家里的空调器和厨房设备，等进入家门，立刻就是一个温度宜人的环境――厨房里的饭也做好了。
房间温度的高低和厨房内煮饭的过程，洗衣机的定时开启、微波炉的定时加热功能、都是根据事先设计好的“脚本”程序进行的，绝对可靠。
2.使用上UPnP，将根据用户习惯调整音响音量、灯光亮度、音箱的高度等等，以你认为最佳的参数写到执行脚本中，以后可以都以此为准。
3.当用户在公司用上UPnP，只要在家里安装摄像头，建立好与网络的连接。在办公室内，启用桌面电脑的WEBTV，连通网络后，可以即时看到家里的一举一动。目前市场现在已经有了不要第三方DDNS方支持的设备，如上海凯聪电子科技有限公司动态域名解析服务器设备，内置DDNS不要第三方支持，你买回去后，只要在里面做一下端口映射，就可以直接访问自己内网的DVR、视频服务器或采集卡了，凯聪的设备，更是支持UPNP，也就是说无需开启端口映射，只需要在设备上打开UPNP，路由器上打开UPNP，那么就支持所有的凯聪设备。类似的应用有网络摄像机、硬盘录像机（DVR）、网络硬盘录像机（NVR）等。
4.UPnP是因特网及LAN中使用的以TCP/IP协议为基础的技术。通过无线网络上网的用户都是处于内网，为了保证像BT这样的P2P软件正常工作，开启UPnP是必须的，而目前大多数无线路由器都具有此功能。（大多数无线路由器的UPnP默认为关闭，用户可手动开启该功能，重启路由器后即可生效)
支持UPNP  支持UPNP的硬盘录像机8904V功能的设备：（多图）  支持UPNP的硬盘录像机8804
  SIP1018网络摄像机
特色
1. 以网络为应用环境，不考虑“孤岛”中的计算机。
2. 以TCP/IP和整个Internet为基础。这样是“中立”的，不依附于任何操作系统或应用程序，不使用特定的API函数，不受程序设计语言的局限。可以无缝地接入传统网络。
3. 设备可以动态地进入网络中，随后获得IP地址，“学习” 或查找自己应当进行的操作和服务的信息；“感知”别的设备是否存在以及它们的作用和当前的状态 。所有这些，都应当是可自动完成的。
4. 每个设备都可读取属于自己的、特定的状态和参数；完成控制操作后应当发出“操作完成”的响应信号。如果失败，则应发出控制失败的信号。
设置
如何设置UPnP支持UPNP的英文全称是Universal Plug and Play，即通用即插即用协议,是为了实现电脑与智能的电器设备对等网络连接的体系结构。而内网地址与网络地址的转换就是基于此协议的，因此只要我们的路由器支持upnp，并且我们使用支持此协议的xp操作系统，那么我们就可以借此提高点对点传输速度。 
进入路由器的设置界面，如果你的路由器支持upnp的话那么在转发规则选项卡下就会看到upnp设置选项（不同路由器可能会有不同），在此选项中，我们选择启用upnp,然后我们重启一下路由器。这样我们就完成了路由器的设置。启用UPnP用户界面在某些情况下，Windows XP可以发现UPnP设备，并且提供它自己的用户界面控制这些设备。一个很好的例子便是"网络连接"文件夹中UPnP住宅网关设备的用户界面（UI）。市场上流行的Linksys BEFSR41W无线路由器在安装完毕后，会自动显示在"网络连接"文件夹中，因为Windows XP已经内置了一个相关的应用程序。 
除此之外，你可以使用以下步骤安装可选的UI组件。该UI组件会在系统发现新的设备后显示一个"气球"通知，并且在"网上邻居"文件夹中为每个设备放置一个图标。为了启用UPnP UI，请按照以下步骤操作： 
1.点击"开始"，点击"控制面板"，然后点击"添加或删除程序"。 
2.在"添加或删除程序"对话框中，点击"添加/删除Windows组件"。 
3.在"Windows组件向导"中，点击"网络服务"，点击"详细"，然后选择"通用即插即用"复选框。 
4.点击"确定"，然后点击"Windows组件向导"对话框中的"下一步"。您可能需要提供您的Windows XP安装CD。UPnP映射失败的原因1.系统服务中禁止了SSDP服务（用于寻找upnp设备） 
2.开启了XP下的SP1的ICF（网络连接防火墙）。（XP的ICF与UPnP设备发现有冲突，SP2修复了这个问题，但是仍然需要在防火墙设置中允许例外：UPnP 框架。） 
3.路由器不支持UPnP，请向制造商询问。
等等。
安全性
由于UPnP技术的简单性和坚持开放标准，UPnP技术已经得到了众多设备厂商的采纳。Windows XP率先实现了对UPnP技术的支持，但是，它现在还存在一些安全漏洞，攻击者可以使用这些漏洞减慢您的PC的运行速度，或者，在极少数的情况下，攻击者可以对他在您的系统中的权限进行提升。但是，如果你在Windows XP中安装了防火墙，这些问题都将不成其为问题。实际上，Windows XP自身就附带了一个Internet连接防火墙，默认情况下，该防火墙安装在您的Internet连接上，因此能够保护您免遭Internet攻击者的攻击。UPnP中的这个安全性漏洞已经得到了修补。Microsoft 安全性公告MS01-059对该问题进行了讨论，并且提供了与此有关的更多资源链接，你可以通过这些链接查看知识库文章了解更多信息，或者下载相应的安全补丁。
安全缺陷
第一个缺陷是对缓冲区（Buffer）的使用没有进行检查和限制。外部的攻击者，可以通过这里取得整个系统的控制特权！由于UPnP功能必须使用计算机的端口来进行工作，取得控制权的攻击者，还有可能利用这些端口，达到攻击者的目的。这个缺陷导致的后果很严重，不论哪个版本的windows 系统，只要运行UPnP，就都存在这个危险！但严格地说，这并不完全是UPnP技术本身的问题，更多的是程序设计的疏忽。
第二个缺陷就与UPnP的工作机理有关系了。该缺陷存在于UPnP工作时的“设备发现”阶段。发现设备可以分为两种情况：如果某个具备UPnP功能的计算机引导成功并连接到网络上，就会立刻向网络发出“广播”，向网络上的UPnP设备通知自己已经准备就绪，在程序设计这一级别上看，该广播内容就是一个M-SEARCH（消息）指示。该广播将被“声音所及”范围之内的所有设备所“听到”。并向该计算机反馈自己的有关信息，以备随后进行控制之用。
相类似，如果某个设备刚刚连接到网络上，也会向网络发出“通知”，表示自己准备就绪，可以接受来自网络的控制，在程序设计这一级别上看，该通知就是一个NOTIFY（消息）指示。也将被“声音所及”范围之内的所有计算机接受。计算机将 “感知”该设备已经向自己“报到”。实际上，NOTIFY（消息）指示也不是单单发送给计算机听的，别的网络设备也可以听到。就是在上述的一播一听之间，出现了问题！
如果某个黑客向某个用户系统发送一个NOTIFY（消息）指示，该用户系统就会收到这个NOTIFY（消息）指示并在其指示下，连接到一个特定服务器上，接着向相应的服务器请求下载服务―――下载将要执行的服务内容。服务器当然会响应这个请求。UPnP服务系统将解释这个设备的描述部分，请求发送更多的文件，服务器又需要响应这些请求。这样，就构成一个“请求――响应”的循环，大量占用系统资源，造成UPnP系统服务速度变慢甚至停止。所以，这个缺陷将导致“拒绝服务”攻击成为可能！
设备
UPnP技术对即插即用进行了扩展，它简化了家庭或企业中智能设备的联网过程。在结合了UPnP技术的设备以物理形式连接到网络中之后，它们可以通过网络自动彼此连接在一起，而且连接过程无需用户的参与和使用中央服务器。
UPnP规范基于TCP/IP协议和针对设备彼此间通讯而制订的其它Internet协议。这就是它之所以被称作"通用"的原因所在--UPnP技术不依赖于特定的设备驱动程序，而是使用标准的协议。UPnP设备可以自动配置网络地址，宣布它们在某个网络子网的存在，以及互相交换对设备和服务的描述。基于Windows XP的计算机可以充当一个UPnP控制点，通过程序界面对设备进行发现和控制。
如果与以前的即插即用相比，这种技术似乎并不具有什么革命性的意义。在操作系统中增加即插即用技术使得在单个计算机上安装、配置和添加外设的工作变得更容易了。但是UPnP为家庭用户或者小型办公环境中的非专业用户所带来的是一道更加美味的"大餐"，他们可以利用UPnP玩多人游戏，进行实时通信（Internet电话，电话会议）以及使用类似Windows XP的远程协助这样的其它技术。到目前为止，仅有配备了完整IT团队的几个大公司能够轻松做到这些（虽然，我怀疑多人游戏和能够上网冲浪的电冰箱是否会是他们强调的重点）。
设备
这里是指符合UPnP规范的设备。一个UPnP设备可以看成一个包含服务并嵌套了常规设备的“容器” 。例如，一个UPnP的VCR（录像机）设备可以包含磁带传送服务、调谐服务和时钟服务。就是说，UPnP之下的设备不能仅仅理解为硬件意义上的设备，而应当包括服务功能。
不同种类的UPnP设备将关联不同的设置、服务和嵌入设备。如打印机和VCR属于不同用途的设备，服务就不可能定义成一样的。
服务
设备执行用户请求的控制过程，可划分成一个个很小的阶段或单位，每个单位就称为一个服务。每一个服务，对外都表现为具体的行为和模式，而行为和模式又可以用状态和变量值进行描述。只要可以用数值描述，在计算机里面就容易处理了。例如，模仿一个时钟，它只有一个工作模式：这个模式就是模拟并显示当前的时间。而一个时钟的行为共有两种（也只有两种）：1. 设置时间（用来“即平时说的对表”）.
2. 得到时间（用于显示时间）。
其它设备服务，也是用这样思路来描述和定义的，一个设备也可以被定义多个服务。不论是设备的定义信息和服务的描述信息，都保存在一个XML文件中，这个文件也是UPnP协议构成的一部分。当设备建立和使用服务的时候，XML文件可以与它们进行关联。
XML文件中还有一个很关键的“状态表”，状态表可进一步分为“服务状态表”和“事件状态表”。整个UPnP设备运行的全过程内，状态表贯穿始终，当设备状态改变的时候，例如发生参数变化或状态刷新的时候，立即就在“状态表”中反映出来。如控制服务器在接收到设置时间的行为请求时，就立即执行请求（对时操作），并给出响应，同时更新状态表中的有关数据。相应地，事件服务器负责向对此事件感兴趣的设备公布所发生的状态改变。例如，一个火灾事件发生后，事件服务器就向火灾报警器发布这个事件，导致报警器动作产生报警信号。
控制指针
在UPnP网络中，用户请求设备执行的控制是通过控制指针实现的，控制指针首先是一个有能力控制别的设备的控制者，还要具有在网络中 “发现”控制目标的能力。在发现（控制目标）之后，控制指针应当：
①取得设备的描述信息并得到所关联的服务列表。
②取得相关服务的描述。
③调用控制服务行为。
④确定服务的事件 “源”，不论何时，只要服务状态发生改变，事件服务器会立即向控制指针发送一个事件信息。
从上面说到的各种信息，都保存在XML文件中，不同用途的信息，格式不同。保证可以各取所需，不会混淆。
工作过程
UPnP在控制指针和被控制设备之间提供通讯功能。而网络介质、TCP/IP协议、HTTP仅提供基本的连接和IP地址分配。整个工作过程需要处理六个方面的内容，即设备寻址、发现设备、对设备的描述、设备控制、设备事件、设备表达。
设备寻址：
地址是整个UPnP系统工作的基础条件，每个设备都应当是DHCP（Dynamic Host Configuration Protocol 动态主机配置协议）的客户。当设备首次与网络建立连接后，利用DHCP服务，使设备得到一个IP地址。这个IP地址可以是DHCP系统指定的，也可以是由设备选择的。当局域网内没有提供DHCP服务时，UPnP设备将按照Auto-IP的协议，从169.254/169.16地址范围获取一个局域网内唯一的IP地址。设备还能使用昵称（friendly name），这就需要域名解析服务（DNS）来解决。
发现设备：
可分成两种情况，一种是在有控制请求之后，在当前的网络中查找有无对应的可用设备；另一种情况是某一设备接入网络、取得IP地址之后，就开始向网络“广播”自己已经进入网络，即寻找控制请求。
设备的描述：
简单说，这是声明“自己”是什么样的设备，例如名称、制造厂商、序列号码等等。刚开始“发现”设备后，控制指针对这个设备的“了解”还很少，需要依据URL找到该设备的描述文件，从这些文件中读取更多的描述信息。描述信息的范围很广，一般都是由设备的制造厂商提供的。主要的描述项目有：控制的模式名称和模式号码、设备序列号、制造厂商名称、厂商的WEB的URL……等等。这些一般都存放在特定的XML文件中。
设备控制：
控制指针找到设备描述之后，会从描述中“提炼”出要进行的操作并获悉所有的服务；对每个UPnP设备来说，这些描述必须是很确切、很详细的，描述中可能包含有命令或行为列表、服务响应信息、用到的参数等等。对于服务的每个行为，也伴有描述信息：主要是整个服务进行期间的变量、变量的数据类型、可用的取值范围和事件的特征。
要控制某个设备，控制点必须先发送一个控制行为请求，要求设备开始服务，然后再按设备的URL发送相应的控制消息，控制消息就是放置在XML文件中的那些SOAP格式的信息。最后，服务会返回响应信息，指出服务是成功或是失败。
设备事件：
在服务进行的整个时间内，只要变量值发生了变化或者模式的状态发生了改变，就产生了一个事件，系统将修改上述提到的事件列表的内容。随之，事件服务器把事件向整个网络进行广播。另一方面，控制点也可以事先向事件服务器订阅事件信息，保证将该控制点感兴趣的事件及时准确地传送过来。
广播或订阅事件，传送的都是事件消息，事件消息也放在XML文件中，使用的格式是GENA。
设备投入工作之前的准备―――初始化过程，也是一个事件，初始化需要的各种信息也是用事件消息传送的。包括的内容主要是：变量初始值，模式的初始状态等等。
设备表达：
只要得到了设备的URL，就可以取得该设备表达的URL，然后可以将此表达纳入用户的本地浏览器上。这部分还包括与用户对话的界面，以及与用户进行会话的处理。
简要介绍下UPnP的工作流程：设备加入网络后通过设备寻址就可自动获得IP地址，通过设备发现，控制点就可知道网络上存在哪些设备，通过设备描述控制点就可知道设备详细信息以及设备提供哪些服务，通过设备控制控制点可以使用设备的服务，通过设备事件设备就可以将其状态变化及时告诉给感兴趣的控制点，通过设备表达控制点可以用浏览器察看设备状态和控制设备。通过上述的六个方面，UPnP设备可以做到在“零配置”的前提下提供了联网设备之间的自动发现、自动声明、“直接”信息交换和互操作等功能，真正实现“设备即插即用”。
UPnP所用到的主要协议还有：SSDP（Simple Service Discovery Protocol 简单服务发现协议）、GENA（Generic Event Notification Architecture 通用事件通知结构）、SOAP（Simple Object Access Protocol 简单对象访问协议）、XML（Extensible Markup Language 可扩张标记语言）。采用IP协议来保证UPnP独立与网络传输的物理介质，SOAP协议来保证UPnP设备具有互操作能力，XML来对设备和服务进行统一的描述，HTTP协议来进行UPnP设备的信息交互。采用这些现存的、广泛应用的协议能减少开发UPnP设备的工作量，使UPnP设备更好地融入现有网络。