4協議內容
41通信方式
協議採用的通信方式應符合JT/T 794中的相關規定,通信協議採用TCP或UDP,平臺
作爲服務器端,終端作爲客戶端。當數據通信鏈路異常時,終端可以採用SMS消息方式進
行通信。
4. 2數據類型
協議消息中使用的數據類型見表1:
表1數據類型
數據類型 |
描述及要求 |
BYTE |
無符號單字節整型(字節,8位) |
WORD |
無符號雙字節整型(字,16位) |
DWORD |
無符號四字節整型(雙字,32位) |
BYTE[n] |
n字節 |
BCD[n] |
8421碼,n字節 |
STRING |
GBK編碼,採用0終結符,若無數據,則放一個0終結符 |
4. 3傳輸規則
協議採用大端模式(big-endian)的網絡字節序來傳遞字和雙字。
約定如下:
——字節 (BYTE)的傳輸約定:按照字節流的方式傳輸;
——字(WORD)的傳輸約定:先傳遞高八位,再傳遞低八位;
——雙字(DWORD)的傳輸約定:先傳遞高24位,然後傳遞高16位,再傳遞高八位,
最後傳遞低八位。
4消息的組成
4. 1消息結構
每條消息由標識位、消息頭、消息體和校驗碼組成,消息結構圖如圖1所示:
標識位 |
消息頭 |
消息體 |
校驗碼 |
標識位 |
圖1 消息結構體
JT/T 808-2011
4. 4. 2標識位
採用Ox7e表示,若校驗碼、消息頭以及消息體中出現0x7e,則要進行轉義處理,轉義
規則定義如下:
0x7e<——>0x7d後緊跟一個0x02;
0x7d<——>0x7d後緊跟一個0x01。
轉義處理過程如下:
發送消息時:消息封裝——>計算並填充校驗碼——>轉義;
接收消息時:轉義還原——>驗證校驗碼——>解析消息。
示例:
發送一包內容爲0x30 0x7e 0x08 0x7d 0x55的數據包,則經過封裝如下:0x7e 0x30 7d 0x02 0x08 0x7d 0x01 0x55 0x7e。
4. 4. 3消息頭
消息頭內容詳見表2:
表2消息頭內容
起始字節 |
字段 |
數據類型 |
描述及要求 |
0 |
消息ID |
WORD |
|
2 |
消息體屬性 |
WORD |
消息體屬性格式結構圖見圖2 |
4 |
終端手機號 |
BCD[6] |
根據安裝後終端自身的手機號轉換。手機號不足12位,則在前補充數字,大陸手機 號補充數字0港澳臺則根據其區號進行位數補充。 |
10 |
消息流水號 |
WORD |
按發送順序從0開始循環累加 |
12 |
消息包封裝項 |
|
如果消息體屬性中相關標識位確定消息分包處理,則該項有內容,否則無該項 |
消息體屬性格式結構圖如圖2所示:
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
保留 |
分包 |
數據加密方式 |
消息體長度 |
圖2消息體屬性格式結構圖
數據加密方式:
—— bit10-bit12爲數據加密標識位;
——當此三位都爲0,表示消息體不加密;
——當第10位爲1,表示消息體經過RSA算法加密;
——其他保留。
分包:
當消息體屬性中第13位爲1時表示消息體爲長消息,進行分包發送處理,具體分包信
息由消息包封裝項決定;若第13位爲0,則消息頭中無消息包封裝項字段。
消息包封裝項內容見表3
表3消息包封裝項內容
JT/T 808-2011
起始字節 |
字段 |
數據類型 |
描述及要求 |
0 |
消息總包數 |
WORD |
該消息分包後的總包數 |
2 |
包序號 |
WORD |
從1開始 |
4. 4. 4校驗碼
校驗碼指從消息頭開始,同後一字節異或,直到校驗碼前一個字節,佔用一個字節。