关于UPnP Device Architecture 2.0的阅读笔记(六)

设备发现之 搜索

    
    当一个控制点进入网络,UPnP发现协议会允许控制点搜索网络中它感兴趣的设备。
    通过对特定的地址和端口(239.255.255.250:1900)组播一个具有某个特定模式或目标的搜索消息。。特定的设备会返回包含这必要的信息的响应。控制点也可以像一个IP:port发送一个单播消息。
    

    搜索协议和标准
    为了搜索到设备或被控制点发现,控制点或设备使用下面的协议栈:
        UPnP vendor
        UPnP Forum
        UPnP Device Architecture
        SSDP
        UDP
        IP
    最上层,搜索消息包含着设备提供商的具体信息(如,设备,服务的标识),Forum为服务商的信息作补充,包含设备或服务的类型。搜索请求/搜索响应 都通过IP的UDP发送。
    搜索请求(M-SEARCH)
    当一个控制点需要搜索网络中的设备时,它将以M-SEARCH发送一个组播请求。如果控制点知道设备的IP地址,它可以完全发送一个M-SEARCH单播消息。
    组播M-SEARCH消息定义如下:
        M-SEARCH * HTTP/1.1            #请求行 M-SEARCH请求方法 *表示通用消息不指定资源,HTTP/1.1表示HTTP版本
        HOST: 239.255.255.250:1900     #消息信息头,含义同前
        MAN: "ssdp:discover"           #以双引号表示的ssdp种类,必须
        MX: seconds to delay response  #最大等待时间,必须
        ST: search target              #搜索目标,所有设备,根设备,服务等等
        USER-AGENT: OS/version UPnP/2.0 product/version     #允许
        CPFN.UPNP.ORG: friendly name of the control point   #必须
        CPUUID.UPNP.ORG: uuid of the control point        #允许

    注:请求消息不含消息体,但最后要包含一个空白行。封包存活时间TTL默认2秒

    对于单播M-SEARCH,消息定义如下:
        M-SEARCH * HTTP/1.1         #含义同前
        HOST: hostname:portNumber   #含义同前
        MAN: "ssdp:discover"
        ST: search target
        USER-AGENT: OS/version UPnP/2.0 product/version    
    
    由于UDP的不可靠本质,控制点应该多次发送M-SEARCH消息。一个设备也应该周期性地重发上线广播。
    对于组播请求,一个控制点应该等待至少MX中的时间。
    当一个设备收到了单播M-SEARCH消息,应该在1秒之内响应。单播请求的发送者至少要等待一秒。
    urn:schemas-upnp-org:service:xyz:2 中的2表示支持的UDA版本为2.0

    搜索响应
    一个设备应该发送一个单播UDP响应,向那个对组播地址进行请求的源地址,以便在网络中被搜索到。
    如果ST值满足设备的上线广播,则设备对其作出响应。

    响应消息的定义如下:
        HTTP/1.1 200 OK                                               #请求行
        CACHE-CONTROL: max-age = seconds until advertisement expires  #设备上线广播的超时时间 >=1800s
        DATE: when response was generated                 #必须
        EXT:
        LOCATION: URL for UPnP description for root device   #必须,值为根设备的描述文件URL
        SERVER: OS/version UPnP/2.0 product/version          #必须
        ST: search target                          #必须,搜索类型
        USN: composite identifier for the advertisement      #必须,唯一服务名字
        BOOTID.UPNP.ORG: number increased each time device sends an initial announce or an update message
        CONFIGID.UPNP.ORG: number used for caching description information
        SEARCHPORT.UPNP.ORG: number identifies port on which device responds to unicast M-SEARCH

     如果搜索请求中有错误,设备将丢弃该请求;错误的响应发送是被禁止的行为。

------------------------------

    RFC 2141 URN : http://www.ietf.org/rfc/rfc2141.txt
    RFC 2616 HTTP 超文本传输协议1.1: http://www.ietf.org/rfc/rfc2616.txt
    RFC 2774 HTTP拓展框架: http://www.ietf.org/rfc/rfc2774.txt
    RFC 3986 Uniform Resource Identifiers : http://www.ietf.org/rfc/rfc3986.txt
    RFC 4340 Datagram Congestion Control Protocol(DCCP)数据包拥挤控制协议: http://www.ietf.org/rfc/rfc4340.txt
    UUID的DCE变体: http://pubs.opengroup.org/onlinepubs/9629399/apdxa.htm




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值