抓包分析DLNA——(2)设备及服务描述
来源:互联网 发布:经济类数据回归分析 编辑:程序博客网 时间:2024/05/17 23:15
“设备发现”完成之后,control point已经知晓的信息包括:
(1) 设备的IP地址,从接收到的SSDP广播报文的源IP地址中获得。
(2) 设备的UPnP设备类型,UUID,以及设备描述的URL。
(3) 设备能够提供的服务。
但这时control point对设备所了解的信息仍然很少——仅限于SSDP通告报文里包含的那一丁点。为进一步增进了解,促进沟通,在接下来的这个步骤里,control point将通过一系列HTTP GET/GET response来先后获取设备及设备所能提供服务的详细描述。
设备描述的数据传输过程比上一个步骤更容易理解,所对应的协议栈如图所示:
首先,control point根据SSDP报文中的LOCATION字段提供的URL发起HTTP GET请求:
DMS接收到请求之后返回即rootdevice的详细描述,这是一个由设备商编写的xml文档,通常是基于UPnP提供的设备描述模板。这是一个基本的HTTP GET请求以及响应过程,但返回的xml文件需要我们仔细分析一下。
设备描述中主要包含一系列与设备制造商相关的信息,embedded device的定义(本例中没有),用于步骤五presentation的URL(本例中为空),以及device所支持的全部服务的列表,包括服务描述URL,以及用于步骤三control和步骤四eventing的URL。
关于device description xml的详细介绍请参考文档[1]的2.3小节。
接下来,control point根据各个服务描述的URL,通过HTTP GET逐个获取各个服务的详细描述。以ContentDirectory服务为例,HTTP GET请求如下:
和设备描述一样,服务描述也是由设备制造商编写的xml文档,基于UPnP提供的服务描述模板。服务描述文档里主要定义了:
(1) 服务所包含的动作(action)以及每个动作所包含的参数(argument)。
(2) 状态变量(state variable),包括数据类型,范围,以及event characteristics(状态变量改变时是否向control point发送event信息等)。
关于服务描述xml各个字段的详细定义请参考文档[1]的2.5小节。仍然以ContentDirectory为例,我们仔细看一下它的服务描述xml:
之后,control point继续重复上述HTTP GET操作,获得另外两个service的详细描述文档。
总结:
(1) 在步骤二description中,control point先后通过HTTPGET方法获得设备以及每个服务的描述文档。其中设备描述URL来自于步骤一的SSDP报文,服务描述的URL来自于设备描述文档。
(2) 设备描述文档包括设备制造商相关的信息,设备支持的服务列表,以及每个服务的描述URL及用于control/eventing的URL。
(3) 服务描述文档包含了该服务所支持的动作的详细定义,以及服务包含的状态变量的详细定义等。
在接下来的步骤中,control point将根据设备所支持的服务及服务中包含的动作对设备发起操作,同时接收设备的event信息。
[1], UPnP-arch-DeviceArchitecture-v2.0-20140901.pdf
[2], UPnP-av-MediaServer-v1-Device-20020625.pdf
[3], UPnP-av-ContentDirectory-v1-Service-20020625.pdf
[4], UPnP-av-ConnectionManager-v1-Service-20020625.pdf
http://upnp.org/resources/upnpresources.zip- 抓包分析DLNA——(2)设备及服务描述
- 抓包分析DLNA——(1)设备发现
- Android设备抓包命令及分析
- fiddler 抓包及分析
- 抓包及分析包的常用命令
- wireshark使用及抓包分析(一)
- tcpdump安装配置及抓包分析
- tcpdump安装配置及抓包分析
- tcpdump安装配置及抓包分析
- DHCP协议原理及抓包分析
- 【UDP demo及抓包分析】
- STUN协议数据格式及抓包分析
- ios设备抓包
- 嵌入式设备抓包
- USB Gadget设备驱动开发(四) BusHound 抓包分析
- USB协议深入分析 设备描述符配置包 和 返回设备描述符
- USB协议深入分析 设备描述符配置包 和 返回设备描述符
- 龙芯软件开发(34)- USB协议深入分析 设备描述符配置包
- git常用命令
- iOS第三方开源库的吐槽和备忘
- 10个必须要知道CSS DIV技巧
- C语言--排序( 逢五断数)
- 使用scrapy进行大规模抓取(一)
- 抓包分析DLNA——(2)设备及服务描述
- jquery标题栏伸缩以及标题栏背景图跟着切换
- Android权限大全
- Spring 中数据源和数据库连接池配置的几种方法
- 递归函数的执行机制和运用
- 再看知名应用背后的第三方开源项目
- 二叉树重构
- net.bridge.bridge-nf-call-iptables=1
- GDI绘制简单的图形