【完结】基于upnp的DIAL协议的分析

本文介绍了DIAL协议的基础知识,包括服务发现和REST服务。通过分析DIAL的M-Search和GET Location URL过程,展示了如何在Android设备间进行应用发现和启动。同时,文章提供了代码学习部分,涵盖了交叉编译、Server端和Client端的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 背景

    目前基于Wi-Fi Display的应用越来越少,随着Android AOSP放弃UI上对Wi-Fi Display的支持,后续对ChromeCast的支持力度会不断增加。而ChromeCast 则是基于DIAL协议进行的扩展和封装。

    对于多屏幕的支持,目前除了保持对Wi-Fi Display现有的力度,后续会逐渐切换到DIAL协议或Amazon的WhisperPlay SDK的学习上。 此篇则记录了基于最新的DIAL协议的一些简单分析。


2. 资料

    DIAL specification: http://www.dial-multiscreen.org/dial-protocol-specification(v2.1)  对应的中文版本下载(csdn需1积分):

    DIAL Server/Client Sample Code:https://github.com/Netflix/dial-reference 

    测试设备:2台android设备(因后续交叉编译需要有编译环境,使用公司设别进行测试)

    测试抓取的wireshark 封包(server IP:192.168.43.105  Client IP:192.168.43.208  AP:192.168.43.1),使用filter (!(ip.addr == 192.168.43.1)&&!(ip.addr == 8.8.8.8))后只查看server和client通讯


3. 基本原理

    DIAL是DIscoveryAndLaunch的缩写,主要应用是让second-screen上的应用发现并启动first-screen设备上的应用。

    这里需要解释一下一下几个名词:

  • First-screen : a TV, Blu-ray player, set-top-box, or similar device,可以简单认为是大屏幕的设备
  • Second-screen : a smartphone, tablet, or similar device,即小屏幕设备
  • DIAL Server: a device implementing the server side of the DIAL protocol, usually a first-screen device.
  • DIAL Client : a device that can discover and launch applications on a DIAL server, usually a second-screen device. 
    当然First-Screen和Second-Screen并没有严格的界限。
    从协议的角度看,DIAL可以分成两个阶段 DIAL Service Discovery DIAL REST Service . 此处和P2P的阶段有点类似。都需要先发现后交互,只是两者采用的协议不一样而已。其实在Wi-Fi Direct的应用层面已经有了相关的使用, 具体可以参考Wi-Fi Direct Service中的Send Service(该协议就是基于uPnp实现设备的发现,文件的发送和校验)

    DIAL Service Discovery 

        此过程基于Upnp协议,分成M-Search和Get Location URL两个阶段。

        M-Search

  • Client端向239.255.255.250:1900地址广播M-Search消息,消息会设定ST(Seach Target)为urn:dail-multiscreen-org:service:dial 1
  • Server会监听该端口,并回复该端口的广播信息。回复信息中会包含LOCATION URL(包含本地IP地址)或WAKEUP字段(如果支持WoL或WoWLAN)。Client收到回复后,需要存储支持WAKEUP字段的Server信息,用于远程唤醒。
           需要注意的是, Client可能收到Server不同端口上相同的Service信息,例如Service含有多个网络接口。封包内容如下:
           
           

       GET Location URL

          在M-Search Response后,client已经得到Server端SSDP服务的IP和端口。
  • Client端发送HTTP GET消息用于获取Server更多信息。
  • Server回复消息中会包含Application-URL
                
                
               流程图如下:


    DIAL REST Service

        在Discovery阶段会得到Application-URL,该标示由DIAL REST Service URL 加单斜线“/”以及APP名字组成,后续的操作都是基于Application-URL来执行。 主要操作包括:

        应用状态查询: HTTP GET方法。 参考流程图中(1)(2)中"find out if app X exists",具体信息参考6.1。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值