短信PDU編碼解析
一 概述
問題:接收飛信或者配合終端發送的長短信(兩三百個字)或者接收運營商發送的話費信息,長短信總是接收不完整。其中會有某些段有丟失。
原因分析:
1 手機接收到了,但是拼接錯誤
這樣的結果是多條接收不完整的信息,基本上是可以排除的
2 網絡發送了,手機信號問題或者繁忙,碰巧處理不過來
網絡端會收不到反饋信息,網絡端會再發一條。
3 發送方的信息沒全部發送
通過確認發送成功。
4 網絡根本就只發送此短信的某一段
無法得知,但此原因的概率最高。
此環境中此問題出現:拔打10086查詢話費通話過程中,通過輔助機連續發送了5條長短信和飛信連續發送多條到測試機,
通話結束后查看,有一條手機發的短信顯示不完整。
網絡出現問題的概率較高,連續性不斷發送,造成網絡出現問題。
但是仍然要明確確定是不是手機上僅僅接收到此條短信的其中的某幾段。通過測試log分析PDU編碼。
二 短信PDU編碼分析
1 PDU內容:
a0 00 02 00 10 00 00 00 - 19 01 ad 01 09 08 91 68
31 08 70 75 15 f0 00 a0 - 60 0d 91 68 31 62 98 83
25 f4 00 08 21 20 30 61 - 04 25 23 8c 05 00 03 6c
03 01 54 68 5e fa 5e 73 - 00 3a 00 20 30 00 00 32
……
從從第14個字節看起:
08:SMSC地址長度
91:地址類型,國際格式號碼(號碼前加“+”)
68:中國的國際區號,號碼前加 +86
31 08 70 75 15 f0:短信中心地址/號碼:字節內反轉,13800775510,F補齊長度為偶數。
00 a0 - 60 0d:通常接下來這里都是兩個字節,這里怎么是四個??
應該標識以下位:這是條長短信,應該是60標識
其中0d:發送方地址/號碼長度 00 a0是干什么的呢?
| Bit7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
| TP-RP |
TP-UDHI |
TP-SRR |
未用 |
TP-MMS |
TP-MTI |
||
| 0 |
1 |
1 |
00 |
0 |
00 |
||
注:TP-UDHI :TP-User-Data-Header-Indicator(用戶數據頭標示)
0:沒有頭信息;1:有頭信息,頭信息格式(在用戶數據前面的6個字節)
91 68 31 62 98 83 25 f4:91,86作用同前面,發送方地址/號碼:+8613268938524
00 :協議標識TP-PID:普通GSM,點到點方式
08 :編碼方式TP-DCS:三種:00表示7-bit編碼(英文)、04表示8-bit編碼(圖片和鈴聲)、08表示UCS2編碼(漢字)
21 20 30 61 - 04 25 23:時間戳TP-SCTS:12/02/03/16:40:52 32時區
8c :短信長度 140 短信內容字節長度,UCS2編碼
05 00 03 6c 03 01:記錄長短信的標識 非長短信則不帶有此信息頭
05- 協議長度(后面占5位)
00 表示拆分短信
03 拆分數據的長度(后面的3位)
6c 唯一標識(用於把多條短信合並)
03 共被拆分3條短信
01 序號,這是其中的第1條短信
其余字節:…… 短信內容
上面這個是正常電話號碼發送的!
2 10086發送
66 00 02 00 10 00 00 00 - 09 01 73 01 01 08 91 68
31 08 70 75 15 f1 00 66 - 64 05 a1 01 80 f6 00 08 01 80 f6 號碼:10086
21 20 30 61 73 33 23 56 - 05 00 03 18 02 02 00 33
5e 74 00 30 00 35 67 08 - 00 30 00 37 65 e5 ff 0c
67 08 7e d3 65 e5 4e 3a - 00 32 00 32 65 e5 ff 0c
60 a8 76 84 20 1c 00 31 - 00 30 52 06 20 1d 6e e1
61 0f ff 0c 62 11 4e ec - 76 84 65 e0 96 50 52 a8
52 9b 30 02 4e 2d 56 fd - 79 fb 52 a8 30 02
……
3 飛信發送
a1 00 02 00 10 00 00 00 - 19 01 ae 01 02 08 91 68
31 08 20 00 75 f1 00 a1 - 60 10 a8 21 25 10 53 29 剛好湊偶數 不用F補齊 號碼:1252013592767045
67 07 54 00 08 21 20 30 - 61 24 40 23 8c 05 00 03
78 05 02 80 0c 88 68 73 - b0 51 fa 67 65 76 84 30
02 54 0c 65 f6 ff 0c 51 - 85 57 28 4e 0e 59 16 57
28 76 84 59 51 54 08 4e - 0e 54 8c 8c 10 65 e2 66
……
不同平台發送的信息,PDU編碼會有一些不同。
