DM協議分析

2021-05-22 09:53:13 字數 2957 閱讀 1026

dm協議中主要包含五步流程(用package0~package4表示),如下圖所示:

注意:package0表示server發通知給終端裝置。這一步不是必須的,很多終端並不是一直監聽來自server端的連線。

整個流程分為兩個階段:setup和management。

management階段是由一到多個協議迭代組成(所謂協議迭代就是終端發給伺服器訊息,然後伺服器再回給終端訊息)。

server發給終端的訊息包中的內容決定了當前會話是否要結束。如果server傳送的訊息包中包含了需要終端作出響應的管理命令(終端在返回的訊息中通過status或results返回響應),在協議的management階段,終端會向server傳送新的訊息包,其中包含了終端對服務端的管理命令的響應。客戶端對管理命令的響應會啟動乙個新的協議迭代。server可以傳送新的管理命令訊息包,並可因此初始化server想要的多次協議迭代過程。

當server端發給終端的訊息包中不包含管理命令時,終端會建立乙個僅包含status和synchdr響應的訊息包,回送給server。這時,不要再傳送響應訊息包,協議就止結束。server必須對終端的所有訊息包作出響應。

要處理的訊息包中可能包含了需要耗費大量時間的管理命令,因此syncml dm協議並沒有規定處理訊息包時的超時。

如果沒有對管理命令作特別說明,終端和server可以自由選擇訊息包中的管理命令的執行順序。但是,如果在父管理命令中指明了執行順序的話,那麼就必須按管理命令傳送的順序來執行。

終端和服務端都可以在會話中的任何時候中止會話。中止會話的原因可能包括:server端shutdown、終端關機、終端上的使用者互動動作等等。這時,中止方應該傳送乙個session abort的alert訊息。這個訊息還必須包含所有正在執行的管理命令的status資訊。這條訊息的接收方的響應被忽略,連線到此結束。

某些情況下,會話中止是不可控的,比如終端超出服務區或電池突然用完了。server和終端必須能應對無訊號情況下的會話中止。

終端不能向server傳送除replace命令以外的其他任何管理命令

(終端發給server的replace命令僅針對devinfo)。

很多終端裝置都不能持續監聽來自dm server的連線。還有一些裝置從安全角度考慮根本不想開啟乙個埠用於接受連線。但是,大多數的裝置都能接收未經請求的訊息,這種訊息有時稱為「通知」。

dm server可以使用「通知」能力讓終端初始化乙個向server的連線。syncml dm協議1.1規定了若干管理初始化通知訊息方法。你可以在《syncml dm notification》文件中找到通知訊息方法的定義和通知內容。

要注意的是可能有其他多種方式都可以達到因接收通知訊息而產生的效果(這種效果就是觸發了終端到server的連線)。比如,終端裝置上的ui介面可以讓使用者啟動終端到server的連線;或者是超過某個日期時,終端發起到server的連線;再或者當終端上出現某種錯誤時終端發起到server的連線。

setup階段的描述幾乎與《syncml synchronization protocol》中相同。

客戶端所傳送的初始化包的目的是:

終端至server的初始化訊息包的詳細需求如下:

1. synchdr元素內的格式要求:2. alert必須包含在syncbody中,無論當前會話是由終端發起,還是由服務端發起。alert命令的需求如下:3. 終端裝置的資訊必須在syncbody中使用replace命令表示。replace命令的需求如下:4. final必須包含在syncbody中,它是訊息包的最後乙個元素。

server所傳送的初始化訊息包的目的在於:

在package 2中,可以關閉當前會話。

package 2的詳細需求如下:

1. synchdr中的需求2. 為響應終端所傳送的synchdr和alert命令,syncbody中必須包含status

3. 任何管理命令包括使用者互動都位於syncbody中4. final必須包含在syncbody中,它是訊息包的最後乙個元素。

package 3的內容是:

當package 2中包含了需要終端作出響應的管理命令時,終端將向server端傳送package 3。

package 3的詳細需求如下:

1. synchdr的需求:2. syncbody中必須包含server發來的synchdr和alert命令所對應的status

3. syncbody中必須包含server發來的package 2中的管理命令所對應的status

4. 如果package 2中包含了get命令,syncbody中必須包含對應的results。results中必須包含meta(meta中包含type和format),用於描述data的內容

5. final必須包含在syncbody中,它是訊息包的最後乙個元素。

package 4常用於關閉管理會話。如果server在package 4中傳送了任何需要終端作出響應的管理命令,協議將從package 3開始乙個新的協議迭代過程。

package 4 的詳細需求如下:

1. synchdr的需求:2. 對應於server所傳送的synchrd,必須在syncbody中包含status

3. 任何管理命令(包括使用者互動命令)都位於syncbody中4. final必須包含在syncbody中,它是訊息包的最後乙個元素。

DM協議中的安全認證

dm協議使用了syncml認證框架,並在 syncml dm security 文件中定義了擴充套件。dm協議中的終端和服務端相互之間都需要作認證。安全認證可以採用不同的級別。如果傳輸層中已經內建了認證機制,那麼可以不使用dm協議級的認證。如果傳輸層沒有提供足夠安全的認證機制,那麼dm協議級的認證是...

網路協議分析 VRRP協議分析

2 rip 2的報文格式 3 rip 2的驗證報文 三 例項化 rip報文由頭部 header 和多個路由表項 route entries 部分組成。乙個rip表項中最多可以有25個路由表項。rip是基於udp協議的,所以rip報文的資料報不能超過512個位元組。1 command 長度8bit,報...

DM642啟動過程分析

供所有c6000系列dsp開發者參考。ti關於c6000 bootloader 文件 dm642復位後,晶元先從ce1空間讀取1k位元組的資料到內部sram,然後從位址0開始執行。因為一般的程式都遠遠大於1k位元組,所以一般都是有乙個二級bootloader,用它來載入主程式。bootloader執...