UPNP 学习笔记整理 (一)

 
 前言
 由于工作需要学习UPNP协议,特意找了很多资料,网上看了很多牛人blog.自己也通过整理笔记,加深自己记忆印象.
 本人习惯:先看整体流程,再看实现细节和术语,否则开始没有框架的感性认识,容易迷失在术语和细节从而浮躁打击信心. 看了框架后, 一定要看官方文档,那里的细节知识才是最准确的.因为其他人的文章 会有点睛之笔,也有误导的陷阱,更多是重复.
 我的流水账就是后两者,-_-!
 
 一 术语
 二 流程
 三 基本组件
 四 control piont

 五  寻址

六  发现

七SSDP协议消息



一 术语
UUID Universally Unique Identifier 分布式系统中所以元素,有唯一的辨识,不需要中央控制端注意辨识的制定. xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16)分别是当前日期和时间,时钟序列,全集唯一IEE机器识别号(网卡Mac)
UDN Unique device Name,基于UUID,不同时间对一个设备是唯一值
URI 可用资源标志符Universal Resource Identifier. 组成: 访问资源的命名机制,存放资源主机名,资源本身名称,由路径表示. HTML 4.0规范
URL uri的子集
URN url的更新形式. 提供了一种机制,用于查找和检索特定命名空间的价格文件.urn可以引用多个url
upnp需要IP层数据收发, httpmu和httpu是http变种,使用udp
ssdp: simple service discovery protocol.
SOAP: simple object access protocol,定义如何使用xml与http来执行远端程序呼叫remote procedure call.包括控制点发送命令消息给设备,和设备发送响应消息给控制端
GENA: generic evnet notification architecture, 控制点想要监听设备的某个服务状态变量的状况,控制点如何传送订阅讯息,并如何接受通知讯息.


二 流程
工作流程
Addressing->Discovery->Description->(Control,Eventing,Presentation)
Addressing: DHCP 获取IP,  DNS把主机名解析成IP地址
分四步: 发现,描述,控制,事件
发现:
通过239.255.255.250:1900 UDP多播 HTTPU(http通过UDP)
M-SEARCH * HTTP/1.1
ST: upnp:rootdevice
MX: 3
MAN: "ssdp:discover"
其他设备必须回应此消息.每个配置文件,它实现发送一条消息,定期将的设备或程序 发送一条消息,宣布他的服务
描述
每个配置文件通过xml提供 本身描述
控制
使用SOAP(http上使用xml来描述远程过程调用服务器和调用结果)
事件
程序可以订阅状态变化(状态变量) ,新状态被发送到所有订阅的设备和程序中

* sdk api 一次只能申请注册一个cp或一个设备

cp device
SSDP发现请求 search ssdp存在宣告 notify
描述
订阅/退订/续订 notify 事件通知(GENA)
SOAP 动作





三 基本组件
service
最小控制单元,服务描述是设备不同状态下的活动和设备状态
device
设备描述:(upnp设备架构使用major.minor主副版本来描述--发现和描述中使用)
包括: 1.根设备类型,特定厂商,制造商信息,如模块民称,编号,序列号,..
2.设备所支持服务信息
基本信息
设备基本信息: deviceType,friendlyname,UDN
设备服务: serviceType,serviceId,SCPDURL(服务描写文档获取地址)controlURL,eventsubURL


Control Piont
可以发现其他并控制其他设备的控制设备,设备和控制点可以合并.



五 寻址 Addressing
1. 基于IP寻址, 
A.如果有DHCP服务器,即处于网络管理状态,必须用它分配的IP地址
B.没有DHCP,无网络管理,利用Auto-IP获取,从一组本地链接IP选择
1): 决定是否使用Auto-IP,发送DHCPDISCOVER请求IP,超时接收到DHCPOFFER
2): 从169.254/16范围选择一个地址,此范围256个地址要保留?
3): 测试地址,使用ARP地址解析协议,若有发现ARP数据包,就要换新地址
4): 定期检查动态地址可用性,每5分钟.一旦DHCP指定地址到位,就释放自动配置地址,或保持一段时间
5): 设备名和DNS交互,设备DNS名称对其IP映射可以按照RFC2136 手动/被动输入DNS数据库, 支持动态DNS更新的设备可以讲DNS记录入DNS中,
6): 计算机按照RTC1034和1035吧DNS查询提交至预先配置的DNS服务器,并从包含目标设备IP地址的DNS服务器收到一个响应. 计算机能静态采用DNS服务器列表进行预先配置,或通过DHCP采用DNS服务器列表进行配置,或在分配地址后通过DHCPINFORM进行配置


六 发现 Discovery
通过广播多播,单播. 标准的多播地址,宣告,搜索,撤销都用SSDP定义
1.宣告 发送关于设备(服务)的专门信息,以及关于内含设备信息.设备仍可以用旧重新发送,不可用应宣告撤销,否则过期
1.1 标准协议.最高层,特定厂商信息,下来是 协议栈,upnp论坛对厂商内容扩充,以上都存在upnp特定协议. 通过http 多播进行传送,
见:SSDP协议消息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值