介绍
一些设备不能持续侦听是否有需要连接的服务器。有的设备基于安全考虑不希望“开放一个端口”(比如主动接受连接)。无论如何,大多数设备可以接受未经请求的信息,有时也叫做“通知”。比如一些手持设备可以接收SMS文本短信息。甚至有的设备可能还可以接受简单的数据信息。
DM服务器可以利用这种通知来引导DM客户端向DM服务器建立一个连接。这个连接可能是通过HTTP、WAP、SIP或其它传输协议传输。
通知信息需要包含发送通知的服务器的认证消息。接受这个通知后DM客户端会建立一个到DM服务器的连接。在这期间,DM客户端会确认DM服务器是否在授权的服务器里然后在请求连接。
服务器Alerted的会话管理
通知信息给DM服务器请求DM客户端建立一个可管理的会话提供了可能。在这个通知信息里DM服务器可以告知DM客户端协议的版本以及会话服务在前台(用户界面)还是后台(对终端用户不可见)执行。它还可以告知用户会话的执行是由于服务器的决定还是用户自己决定。同时,服务器必须发送一个通知信息的摘要以避免拒绝服务(Dos)攻击。
图1 描述了服务器怎样提示管理会话的信息流
上面的信息流介绍是一个设备管理的会话。这意味着所有的信息共享一个相同的OMA DM Session ID。
DM通知的结构
Package#0 是通知信息里面用的默认格式。
DM 通知信息被编码成简单的二进制格式。DM通知信息由固定大小的header,后面跟着可选的Type-Length—Value(TVL)格和摘要组成。可选信息的数量由header决定。
下面的图片描述了一般的Package#0的格式。
DM 通知信息的MIME版本是 application/vnd.syncml.dm.notification,它的Content-Type 编码是 0x58。他的Byte顺序是Big Endian(网络顺序)。
DM客户端必须支持DM1.2[DMNotil2]的通知格式并且符合通知这本说明书里的格式定义。
DM 通知信息头格式
下面是dm通知信息的可选项的规格定义
Option 编号 (二进制) | 名字 | 格式 | 大小/bytes | DM客户端支持 | DM服务器支持 | 发生 |
---|---|---|---|---|---|---|
0001 | Server-ID | String | 1-256 | Mandatory | Mandatory | One |
0010 | Targeted-MO | Unit | 1-2 | Optional | Mandatory | ZeroOrMore |
0011 | Requested-MO | Unit | 1-2 | Mandatory | Mandatory | ZeroOrMore |
0100 | Preferred-Bearer | Uint | 1 | Mandatory | Mandatory | ZeroOrMore |
0101 | Connect-Reason | String | 1-4095 | Optional | Optional | ZeroOrOne |
0110 | Vendor-Info | String | 1-4095 | Optional | Optional | ZeroOrOne |
DM通知信息的可选格式
可选项必须按照Option Number里的顺序出现(见下一节)。见下图的Option Number,每一个可选项都有一个Length字段用来指定可选项的值的长度,按bytes计。可选项的值直接跟length字段。
Option Number
字段在header后面指定一个可选的序列数。它的值指定为4 bits。
Option Lenght
字段指定一个可选值的长度。比如,如果可选长度的值是3,那么可选值的大小是3 bytes。它的值指定为12 bits。
Option Value
可选值的格式依赖于各自的值。在这个文档里的可选项定义也使用下面的可选值的格式。
-
Uint:一个使Option length 的athe位代表网络字节顺序的非负整数。可选值的范围由2的Option Length bit 的次幂值计算决定。例如Option Length是2的话,Option Value 的十进制范围是 0-65535。
-
String:一个从[RFC5198]来的Net-Unicode即UTF-8[RFC3629]编码的Unicode字符串。注意ASCII字符串(没有用到任何特殊的控制字符)一直是有效的UTF-8 Net-Unicode 字符串。
-
Opaque:一个不透明的字节序列。这个类型在当其他类型如Uint或String需要的时候使用。怎样处理这个类型取决于可选项使用的类型。
DM 通知信息可选项
下面是dm通知信息的可选项的规格定义
Option 编号 (二进制) | 名字 | 格式 | 大小/bytes | DM客户端支持 | DM服务器支持 | 发生 |
---|---|---|---|---|---|---|
0001 | Server-ID | String | 1-256 | Mandatory | Mandatory | One |
0010 | Targeted-MO | Unit | 1-2 | Optional | Mandatory | ZeroOrMore |
0011 | Requested-MO | Unit | 1-2 | Mandatory | Mandatory | ZeroOrMore |
0100 | Preferred-Bearer | Uint | 1 | Mandatory | Mandatory | ZeroOrMore |
0101 | Connect-Reason | String | 1-4095 | Optional | Optional | ZeroOrOne |
0110 | Vendor-Info | String | 1-4095 | Optional | Optional | ZeroOrOne |
信息头字段描述
版本信息(VER)
VER字段指定DM服务器发送的DM通知信息的版本。它的值在通知信息里用4bits描述。为了启用这一规格必须把这个字段设置为0x01.其他的版本是为将来的版本预留的。
注意这个不是DM协议的版本,这是DM通知的版本。
Options Count(OPC)
OPC字段制订了header后面可选项的数量。它的值在通知信息里面用3 bits来表示。
引发管理的行为(I)
I 字段指定DM服务器怎样创建管理动作,既可以是用户请求,也可以是DM服务器已经控制了管理行为。这个值指定1bit。
引发管理行为的值必须是下面这两个。
值(binary) | 语义 | 描述 |
---|---|---|
0 | 终端用户引发 | 终端用户产生设备管理会话启动。 |
1 | 服务器引发 | 服务器产生设备管理会话启动。 |
用户交互模式(UIM)
UIM字段指定DM服务器的建议,是否....未完