PDU編碼協議
最後更新:2018-08-13
來源:互聯網
上載者:User
PDU編碼規則
目前,發送短訊息常用Text和PDU(Protocol Data Unit,協議資料單元)模式。使用Text模式收發簡訊代碼簡單,實現起來十分容易,但最大的缺點是不能收發中文簡訊;而PDU模式不僅支援中文簡訊,也能發送英文簡訊。PDU模式收發簡訊可以使用3種編碼:7-bit、8-bit和UCS2編碼。7-bit編碼用於發送普通的ASCII字元,8-bit編碼通常用於發送資料訊息,UCS2編碼用於發送Unicode字元。一般的PDU編碼由A B C D E F G H I J K L M十三項組成。
A:簡訊息中心地址長度,2位十六進位數(1位元組)。
B:簡訊息中心號碼類型,2位十六進位數。
C:簡訊息中心號碼,B+C的長度將由A中的資料決定。
D:檔案頭位元組,2位十六進位數。
E:資訊類型,2位十六進位數。
F:被叫號碼長度,2位十六進位數。
G:被叫號碼類型,2位十六進位數,取值同B。
H:被叫號碼,長度由F中的資料決定。
I:協議標識,2位十六進位數。
J:資料編碼方案,2位十六進位數。
K:有效期間,2位十六進位數。
L:使用者資料長度,2位十六進位數。
M:使用者資料,其長度由L中的資料決定。J中設定採用UCS2編碼,這裡是中英文的Unicode字元。
PDU編碼協議簡單說明
例1 發送:SMSC號碼是+8613800250500,對方號碼是13693092030,訊息內容是“Hello!”。從手機發出的PDU串可以是
08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 96 03 29 30 F0 00 00 00 06 C8 32 9B FD 0E 01
對照規範,具體分析:
分段 含義 說明
08 SMSC地址資訊的長度 共8個八位位元組(包括91)
91 SMSC地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 08 20 05 05 F0 SMSC地址 8613800250500,補‘F’湊成偶數個
11 基本參數(TP-MTI/VFP) 發送,TP-VP用相對格式
00 訊息基準值(TP-MR) 0
0D 目標地址數字個數 共13個十進位數(不包括91和‘F’)
91 目標地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 96 03 29 30 F0 目標地址(TP-DA) 8613693092030,補‘F’湊成偶數個
00 協議標識(TP-PID) 是普通GSM類型,點到點方式
00 使用者資訊編碼方式(TP-DCS) 7-bit編碼
00 有效期間(TP-VP) 5分鐘
06 使用者資訊長度(TP-UDL) 實際長度6個位元組
C8 32 9B FD 0E 01 使用者資訊(TP-UD) “Hello!”
例2 接收:SMSC號碼是+8613800250500,對方號碼是13693092030,訊息內容是“你好!”。手機接收到的PDU串可以是
08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 96 03 29 30 F0 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21
對照規範,具體分析:
分段 含義 說明
08 地址資訊的長度 個八位位元組(包括91)
91 SMSC地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 08 20 05 05 F0 SMSC地址 8613800250500,補‘F’湊成偶數個
84 基本參數(TP-MTI/MMS/RP) 接收,無更多訊息,有回複地址
0D 回複地址數字個數 共13個十進位數(不包括91和‘F’)
91 回複地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 96 03 29 30 F0 回複地址(TP-RA) 8613693092030,補‘F’湊成偶數個
00 協議標識(TP-PID) 是普通GSM類型,點到點方式
08 使用者資訊編碼方式(TP-DCS) UCS2編碼
30 30 21 80 63 54 80 時間戳記(TP-SCTS) 2003-3-12 08:36:45 +8時區
06 使用者資訊長度(TP-UDL) 實際長度6個位元組
4F 60 59 7D 00 21 使用者資訊(TP-UD) “你好!”
若基本參數的最高位(TP-RP)為0,則沒有回複地址的三個段。從Internet上發出的短訊息常常是這種情形。
注意號碼和時間的表示方法,不是按正常順序順著來的,而且要以‘F’將奇數補成偶數。
在PDU Mode中,可以採用三種編碼方式來對發送的內容進行編碼,它們是7-bit、8-bit和UCS2編碼。7-bit編碼用於發送普通的ASCII字元,它將一串7-bit的字元(最高位為0)編碼成8-bit的資料,每8個字元可“壓縮”成7個;8-bit編碼通常用於發送資料訊息,比如圖片和鈴聲等;而UCS2編碼用於發送Unicode字元。PDU串的使用者資訊(TP-UD)段最大容量是140位元組,所以在這三種編碼方式下,可以發送的短訊息的最大字元數分別是160、140和70。這裡,將一個英文字母、一個漢字和一個資料位元組都視為一個字元。
需要注意的是,PDU串的使用者資訊長度(TP-UDL),在各種編碼方式下意義有所不同。7-bit編碼時,指原始短訊息的字元個數,而不是編碼後的位元組數。8-bit編碼時,就是位元組數。UCS2編碼時,也是位元組數,等於原始短訊息的字元數的兩倍。如果使用者資訊(TP-UD)中存在一個頭(基本參數的TP-UDHI為1),在所有編碼方式下,使用者資訊長度(TP-UDL)都等於頭長度與編碼後位元組數之和。如果採用GSM 03.42所建議的壓縮演算法(TP-DCS的高3位為001),則該長度也是壓縮編碼後位元組數或頭長度與壓縮編碼後位元組數之和。