UPnP简述:

UPnP是通用即插即用(Universal Plug and Play)的缩写,它主要用于实现设备的智能互联互通。使用UPnP协议不需要设备驱动程序,因此使用UPnP建立的网络是介质无关的,它可以运行在几乎所有的操作系统平台之上,可以使用CC++JAVAVB等开发语言,使得在办公室、家庭和其他公共场所方便地构建设备相互联通的网络环境。
随着越来越多的设备联入网络,对于共享设备以及共享设备提供的资源和服务的需求也越来越强烈,透明的访问各种联入网络的资源也成为了一种非常复杂的任务。因此,在1999年,Microsoft公司开始大张旗鼓地宣传下一代即插即用技术--通用即插即用( Universal Plug and Play,简称UPnP)。UPnP实际上是扩展了传统单机的设备和计算机系统的概念,在"零配置"的前提下提供了连网设备之间的发现、接口声明和其他信息的交换等互动操作功能。Microsoft公司称"UPnP将延伸到家庭中的每一个设备,它会成为个人电脑、应用程序、智能设备集成工作所必需的框架、协议和接口标准"
UPnP是实现智能设备端到端网络连接的结构。它也是一种架构在TCP/IPHTTP技术之上的,分布式、开放的网络结构,以使得在联网的设备间传递控制和数据。UPnP 技术实现了 控制点、 设备和 服务之间通讯的支持,并且设备和相关服务的也使用XML定义并且公布出来。使用UPnP,设备可以动态加入网络,自动获得一个IP地址,向其他设备公布它的能力或者获知其他设备的存在和服务,所有这些过程都是自动完成的,此后设备能够彼此直接通讯。

SSDP简述:

简单服务发现协议(SSDPSimple Service Discovery Protocol)是一种应用层协议,是构成通用即插即用(UPnP)技术的核心协议之一。
简单服务发现协议提供了在局部网络里面发现设备的机制。控制点(也就是接受服务的客户端)可以通过使用简单服务发现协议,根据自己的需要查询在自己所在的局部网络里面提供特定服务的设备。设备(也就是提供服务的服务器端)也可以通过使用简单服务发现协议,向自己所在的局部网络里面的控制点声明它的存在。
简单服务发现协议是在HTTPUHTTPMU的基础上实现的协议。
按照协议的规定,当一个控制点(客户端)接入网络的时候,它可以向一个特定的多播地址的SSDP端口使用M-SEARCH方法发送“ssdp:discover”消息。当设备监听到这个保留的多播地址上由控制点发送的消息的时候,设备会分析控制点请求的服务,如果自身提供了控制点请求的服务,设备将通过单播的方式直接响应控制点的请求。

UPnP工作过程:

UPnP在控制指针和被控制设备之间提供通讯功能。而网络介质、TCP/IP协议、HTTP仅提供基本的连接和IP地址分配。整个工作过程需要处理六个方面的内容,即设备寻址、发现设备、对设备的描述、设备控制、设备事件、设备表达。

设备开启UPnP时:

设备关闭UPnP时:

测试设计:

Terry
拓扑说明:
PC1:开启了UPnP HostSSDP服务,并开启了UDP1900端口;
PC2:安装了ScanNowUPnP.exe工具;
TP-Link:开启了UPnP服务。
测试过程:

1、  PC2使用ScanNowUPnP.exe工具对TP-Link进行检测,通过抓包进行观察,TP-Link路由器接收到SSDP包,并响应SSDP包,返回相对应的设备信息。抓包截图:

 

2、  PC2使用ScanNowUPnP.exe工具对PC1进行检测,通过抓包进行观察,PC1接收到SSDP包,但不响应该SSDP包。抓包截图如下: