SyncML protocol

    技术2022-05-11  156

    1. SyncML在ISO中的位置    SyncML协议由3部分组成。    •  An XML-based representation protocol  (presentation layer)    •  A synchronization protocol  (session layer?)    •  Transport bindings for the synchronization protocol (between session layer and transport layer)      SyncML是基于XML的self-contained的protocol,可以绑定在各种传输协议上(HTTP/OBEX/WSP)。    优点:灵活(TP:可以bind到多种transport protocol;security:choose MD5/basic;data type/data store: carry different data type as MIME),易读(XML)    缺点:基于XML协议对于low-bandwide的无线通信是一种负担。建议用WBXML(binary).    疑问:如何支持大数据量的传输。

    2. SyncML的几个概念(1.2)

    1.Anchor-- timestamp(Last,Next),initiate slow sync2.ID Mapping -- LUID(device) GUID(server) server maintain map LUID and GUID.3.Security -- MD5 (128 bit),basic (64 bit)4.Address (Device:IMEI/Server:URI)5.Exchange of Device Capabilities6.Device Memory Management(Free memory)7.Multiple Message in package--<Final/> 2228.Large Object Handling -- <MoreData/> 2139.Suspend and Resume session--    suspend -- 224 Alert code to ‘Interrupt Session’   resume -- 225 device Alert code to ‘Resume Session’,Server uses the previous Sync type 

    3. SyncML 协议的组成  SyncML Common是一组基本的协议,DM和DS各自的协议派生自Common协议。 4. SyncML的XML semantics <SyncML> <SyncHdr> //包括Msg,Target,Source,authentication等 <SyncBody> //包括命令,数据,devInf等 SyncML是请求-应答的协议,响应方对于每个Cmd都回应一个Status,操作的结果显示在<Data> e.g - < Status >   < CmdID > 12 </ CmdID >   < MsgRef > 2 </ MsgRef >   < CmdRef > 5 </ CmdRef >   < Cmd > Add </ Cmd >   < Data > 201 </ Data >      < SourceRef > 1 </ SourceRef >      </ Status > 5. 如何实现Sync   最基本的同步可以看作3个来回,即6个package的交互。D->Device , S->Server Package #1 (D->S): 包括安全验证(Cred), Application path: contact/calendar/task (Alert), Capability negotiation: deviceinfo (Put) Package #2 (S->D): 返回Anchor和同步类型(two-way/slow sync/...) Package #3 (D->S): Device用Add/Update/Delete 命令把Device需要同步的记录发过去 Package #4 (S->D): Server对Device的命令返回status code表明Server是否接受,用Add/Update/Delete 命令把Server需要同步的记录发给Device Package #5 (D->S): Device对Server的命令返回status code表示Device是否接受,再把Map(LUID & GUID) 的映射关系通知Server Package #6 (S->D): Server对Map返回status 5.1 Slow Sync    Slow Sync 是可以由Server来initiate,  Server会根据协议中规定的Anchor(timestamp)来于Device的Anchor做比较,返回status code 508 来通知Device做Slow Sync. 5.2 Two way Sync    Device可以维护一个增量表,用于记录Application和Server对data store(contact/calendar/task)的修改变化,因为一个device可以与多个Server同步,所以针对每个Server必须有一个Cursor来记录不同于上次同步的变化。 6. 数据同步的几种类型

    Alert Codes used at the synchronization initialization

    200

    TWO-WAY

    Specifies a client-initiated, two-way sync

    201

    SLOW SYNC

    Specifies a client-initiated, two-way slow-sync.

    202

    ONE-WAY FROM CLIENT

    Specifies the client-initiated, one-way only sync from the

    client to the server

    203

    REFRESH FROM CLIENT

    Specifies the client-initiated, refresh operation for the oneway only sync from the client to the server.

    204

    ONE-WAY FROM SERVER

    Specifies the client-initiated, one-way only sync from the

    server to the client

    205

    REFRESH FROM SERVER

     

     

     

     

     

     

     

     

     

    Specifies the client-initiated, refresh operation of the oneway only sync from the server to the client.

     

     

     

     

     

     

     

     

     

    Alert Codes used by the server when alerting the sync

    206

    TWO-WAY BY SERVER

    Specifies a server-initiated, two-way sync

    207

    ONE-WAY FROM

    CLIENT BY SERVER

    Specifies the server-initiated, one-way only sync from the

    client to the server

    7. 数据同步命令

    命令名称

    SyncML 服务器环境中的功能描述

    Add

    用于指示服务器在客户机的数据中建立了新的内容(比如说在电话本中新建一项)

    Alert

    用于通知服务器。所谓通知就是一些同步请求,其中携带了表示客户机数据库状态的数据。请参考 example.xml CmdID2 3 Alert 命令,它们请求的是同步日历与电话本。 Data 元素所关联的代码指明了请求的类型,在这个例子中类型为 201 ,意思是慢同步Slow Synchrionization)。在“SyncML Sync Representation 勘误信息规范中可以找到这些代码的完整列表(请参阅 参考资料)。

    Copy

    请求在接收者数据库中的其他位置创建某个项的拷贝。

    Delete

    请求从服务器的数据库中永久删除某项。

    Get

    显式地请求根据所请求的 URI 从服务器数据库中获取数据项。

    Map

    用于维护将本地资源标识与远程资源对应的映射表。比如说,移动电话上的某项资源可能具有一个2字节的标识,而在服务器上,同一项资源的 ID 则用一个16个字符的字符串表示。

    Put

    用于将数据项上传到服务器指定的 URI 处。比如说 example.xml 中处理 CmdID 1 Put 命令。这一命令请求服务器将电话的容量(已经 SyncML Device Information DTD 编码)存储到相对 URI /devinf10 处。 Put 命令在设备同步之外使用。

    Replace

    请求将指定的对象替换成同步信息中的一部分。

    Results

    用于携带 Get 等请求返回的结果对象。

    Status

    用于返回与请求相关的状态代码。

    Sync

    用于将一组命令(如 AddReplace 、及 Delete )封装成一次同步。

                                Related information Socket     一组用于计算机之间连接通信的编程接口,不同OS,语言有不一样的实现。C++依赖OS的实现,而Java语言本身支持Socket。    XML    Valided XML: DTD(一组规范XML的element/attribute的定义)

    Appendix

    IMEI

    IMEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台手机一一对应,而且该码是全世界唯一的。每一只手机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。

    IMEI为TAC + FAC + SNR + SP

    1、前6位数(TAC)是"型号核准号码",一般代表机型。2、接着的2位数(FAC)是"最后装配号",一般代表产地。3、之后的6位数(SNR)是"串号",一般代表生产顺序号。4、最后1位数(SP)通常是"0",为检验码,目前暂备用。IMEI码贴在手机背面的标志上,并且读写于手机内存中。它也是该手机在厂家的"档案"和"身份证号"。

     


    最新回复(0)