`
kerlubasola
  • 浏览: 709694 次
文章分类
社区版块
存档分类
最新评论

WAP PUSH解析(1)——SMS PDU编码

 
阅读更多

田海立@CSDN

2012-06-29

WAP PUSH是封装在SMS PDU中的,所以要解析WAP PUSH,首先要先看SMS PDU编码,这是SMS / MMS / WAP PUSH等业务的基础。WAP PUSH是通过发送给终端的,所以本文主要看Delivery类型的PDU编码。另外,如果PDU要封装的内容过长,会接收到拆分过的多条SMS,本文对接收到的多条Concatenated SMS的拼接也做了阐述。

一、单个SMS PDU的封装


下面是接收到的一个完整PDU:

(注:因显示的原因,人为的进行了分行,其实这个包中间并没有换行)

SMS PDU的封装并不是在所有的位置都有固定的涵义,它是逐个扫描的,解析完上一个字段,才知道接下来的含义,或者后面字段的长度。


1. 短信中心




现在PDU扫描到了红色处绿色部分已经扫描结束):

0891683108200105f04408a0015608860104216092902512236e0605040b8423f0120601ae02056a

0045c60c033231312e3133362e3130372e37382f646f776e2e7068703f703d413063303026733d38

3500080103e68e8ce68fa1e882a1e5b882e58588e69cbaefbc8ce6aca2e8bf8ee4bdbfe794a8e689

8be69cbae8af81e588b8e38082000101

2. FirstByte:




现在PDU扫描到了红色处绿色部分已经扫描结束):

0891683108200105f04408a0015608860104216092902512236e0605040b8423f0120601ae02056a

0045c60c033231312e3133362e3130372e37382f646f776e2e7068703f703d413063303026733d38

3500080103e68e8ce68fa1e882a1e5b882e58588e69cbaefbc8ce6aca2e8bf8ee4bdbfe794a8e689

8be69cbae8af81e588b8e38082000101

3. 发送方地址(Originating address)




现在PDU扫描到了红色处绿色部分已经扫描结束):

0891683108200105f04408a0015608860104216092902512236e0605040b8423f0120601ae02056a

0045c60c033231312e3133362e3130372e37382f646f776e2e7068703f703d413063303026733d38

3500080103e68e8ce68fa1e882a1e5b882e58588e69cbaefbc8ce6aca2e8bf8ee4bdbfe794a8e689

8be69cbae8af81e588b8e38082000101

4. TP-Protocol-Identifier(TP-PID)

 TS 23.040 9.2.3.9
 01

现在PDU扫描到了红色处绿色部分已经扫描结束):

0891683108200105f04408a0015608860104216092902512236e0605040b8423f0120601ae02056a

0045c60c033231312e3133362e3130372e37382f646f776e2e7068703f703d413063303026733d38

3500080103e68e8ce68fa1e882a1e5b882e58588e69cbaefbc8ce6aca2e8bf8ee4bdbfe794a8e689

8be69cbae8af81e588b8e38082000101

5. TP-Data-Coding-Scheme

(TS 23.038)



现在PDU扫描到了红色处绿色部分已经扫描结束):

0891683108200105f04408a0015608860104216092902512236e0605040b8423f0120601ae02056a

0045c60c033231312e3133362e3130372e37382f646f776e2e7068703f703d413063303026733d38

3500080103e68e8ce68fa1e882a1e5b882e58588e69cbaefbc8ce6aca2e8bf8ee4bdbfe794a8e689

8be69cbae8af81e588b8e38082000101

6.TP-Service-Centre-Time-Stamp

 短信中心下发的时间戳,这个编码和长度固定



 所以,得到时间戳为:12-06-29 09:52:21 GMT+8

现在PDU扫描到了红色处绿色部分已经扫描结束):

0891683108200105f04408a0015608860104216092902512236e0605040b8423f0120601ae02056a

0045c60c033231312e3133362e3130372e37382f646f776e2e7068703f703d413063303026733d38

3500080103e68e8ce68fa1e882a1e5b882e58588e69cbaefbc8ce6aca2e8bf8ee4bdbfe794a8e689

8be69cbae8af81e588b8e38082000101

7. UserDataHeader – UDH




 PDU是用端口来识别具体业务的,比如这个PDU的目的端口是2948,就是WAP PUSH的PDU封装。
 另外,如果还是长SMS,UDH中还会有长SMS拼接所需要的信息,UDH中就有了多重的含义。

现在PDU扫描到了红色处绿色部分已经扫描结束):

0891683108200105f04408a0015608860104216092902512236e0605040b8423f0120601ae02056a

0045c60c033231312e3133362e3130372e37382f646f776e2e7068703f703d413063303026733d38

3500080103e68e8ce68fa1e882a1e5b882e58588e69cbaefbc8ce6aca2e8bf8ee4bdbfe794a8e689

8be69cbae8af81e588b8e38082000101

现在, PDU封装的基本信息已经解析完毕,剩下的是UserData,也已经区分出具体的业务,可以交给具体业务模块去解析。

二、多条SMS PDU的封装


因为单条SMS长度的限制,一条长SMS的发送是拆分成多条SMS发送的,接收时也是多条接收,然后拼接。

下面实例是分两次接收到的一条长SMS的两个SMS PDU:


PDU[0]

0891683108200105f04405a02125f00004216092717455238c0b05040b8423f000030b0201790601
ae02056a0045c6080c03662e31303038362e636e2f662f736a6678000103e689bee69c8be58f8be3
8081e69fa5e5a4a9e6b094e38081e79c8be5b08fe8afb4e38081e79c8be696b0e997bbe280a6e689
8be69cbae9a39ee4bfa1efbc8ce7ae80e58d95e4bda0e79a84e7949fe6b4bbefbc81e8b5b6e5bfab
e4b88be8bd

PDU[1]

0891683108200105f04405a02125f0000421609271745523220b05040b8423f000030b0202bde4bd
93e9aa8ce6898be69cbae9a39ee4bfa1000101

UserDataHeader里有多SMS的信息,我们就从这里开始分析。


1. UDH之前部分

PDU[0]与PDU[1]的UDH之前的部分完全相同,与前面讲的单条SMS PDU的封装也相同,所以这里不再赘述这部分的解析。

2. UserDataHeader– UDH




3. UserData

这是一条长SMS拆分出的两条,所以UserData要按seqNumber次序拼接起来。

PDU[0]

0891683108200105f04405a02125f00004216092717455238c0b05040b8423f000030b0201790601
ae02056a0045c6080c03662e31303038362e636e2f662f736a6678000103e689bee69c8be58f8be3
8081e69fa5e5a4a9e6b094e38081e79c8be5b08fe8afb4e38081e79c8be696b0e997bbe280a6e689
8be69cbae9a39ee4bfa1efbc8ce7ae80e58d95e4bda0e79a84e7949fe6b4bbefbc81e8b5b6e5bfab
e4b88be8bd

PDU[1]

0891683108200105f04405a02125f0000421609271745523220b05040b8423f000030b0202bde4bd
93e9aa8ce6898be69cbae9a39ee4bfa1000101

把PDU[0]和PDU[1]中的红色的UserData拼接起来,得到完整的UserData。

790601ae02056a0045c6080c03662e31303038362e636e2f662f736a6678000103e689bee69c8be5
8f8be38081e69fa5e5a4a9e6b094e38081e79c8be5b08fe8afb4e38081e79c8be696b0e997bbe280
a6e6898be69cbae9a39ee4bfa1efbc8ce7ae80e58d95e4bda0e79a84e7949fe6b4bbefbc81e8b5b6
e5bfabe4b88be8bdbde4bd93e9aa8ce6898be69cbae9a39ee4bfa1000101

至此,完整的UserData已经得到,在UDH中也已经区分出具体的业务,可以交给具体业务模块去解析。

三、小结


Delivery SMS PDU中可以解析出:Service Centre(可无)、有无UDH、PDU类型的识别、发送方号码、TP-PID、编码格式、Class类型(可无)、时间戳、UDH(可无。含:UserData长度、UserDataHeader长度,可能有端口号或Concat信息,等)以及包含具体业务数据的UserData。

关于UserData中具体WAP PUSH业务的封装格式,在后续文章《WAP PUSH解析(2)——WSP以及WBXML编码》和《WAP PUSH解析(3)——Android中实现》中解读。


分享到:
评论

相关推荐

    Sms.rar_PDU编码_pdu_sms c_sms pdu_sms 解码

    在IT行业中,PDU(Protocol Data Unit)编码是与GSM网络中的短消息服务(SMS)相关的技术。PDU模式是SMS的一种传输格式,用于在移动设备之间传递短信。在这个主题中,"Sms.rar_PDU编码_pdu_sms c_sms pdu_sms 解码...

    短信编码PDU生产解析工具

    本文将详细介绍短信编码和PDU的相关知识,并解释如何使用"短信编码PDU生产解析工具"来辅助开发和调试。 首先,让我们关注短信编码。短信通常采用7位ASCII码来传输英文字符,但为了支持更多的语言,如中文,必须使用...

    SMSPDU.zip

    标题中的“SMSPDU.zip”表明这是一个与短信PDU(Protocol Data Unit)相关的压缩文件,可能包含用于处理和解析PDU编码的软件或工具。描述中提到“短信pdu编码解码工具,支持中文!”说明这个工具具备对PDU编码进行...

    PDU解码器.rar_PDU编码_SMS PDU Library VB6_pdudecoder vb.net_vb.net pd

    本文将围绕标题“PDU解码器.rar_PDU编码_SMS PDU Library VB6_pdudecoder vb.net_vb.net pd”展开,详细阐述PDU编码的概念、工作原理,以及如何在VB.NET环境中实现短信PDU的编码和解码功能。 首先,PDU编码是一种...

    PDU编码工具用于短信编码

    PDU模式是SMS消息的一种二进制表示形式,用于处理和解析短信内容,包括文本、地址信息和控制参数。这种编码方式对于开发者来说非常重要,特别是在创建自定义短信应用或进行系统级调试时。 短信编码分为两种主要模式...

    PDU短信编码器

    在GSM网络中,短信服务(Short Message Service, SMS)是通过一个称为Protocol Data Unit(PDU)的编码方式来传输文本消息的。PDU编码是GSM7位编码集的一种扩展,它允许在有限的字节空间内传递更多的信息,包括特殊...

    SMS pdu介绍文档

    《SMSPDU.pdf》这份文档很可能是关于SMS PDU的详细指南,包含了PDU格式的详细介绍、编码解码规则以及实际应用示例。对于理解并操作SMS PDU来说,这是一个非常宝贵的参考资料。 总结,SMS PDU是短信通信中的关键技术...

    通用解析PDU格式SMS支持编码和解码功能

    本文将深入探讨“通用解析PDU格式SMS支持编码和解码功能”这一主题,它对于理解如何在TD-SCDMA、GSM等不同网络标准下发送和接收短信至关重要。 首先,PDU(Protocol Data Unit)是SMS协议中的数据表示形式,它是...

    关于sms中pdu编码的一些讲解

    PDU编码技术主要用于描述SMS消息的各种属性,如发送者、接收者地址、消息类型等,并确保这些信息能够被正确地解析和处理。 #### PDU编码的基本概念 PDU编码主要遵循ETSI GSM 03.40和GSM 03.38标准,适用于最多160...

    PDU码解析——详细的PDU码教程及解析

    ### PDU码解析详解 #### 一、短消息收发的实现模式 在现代通信领域,短消息服务(SMS)是手机通信中最基础且广泛使用的一种功能。在计算机上实现短消息的收发主要依赖于GSM Modem,并通过特定的编程模式与之交互。...

    pdu编码pdu编码

    PDU编码,全称为Protocol Data Unit编码,是短信服务(SMS)中的一种编码方式,尤其在处理非ASCII字符,如中文短信时尤为重要。PDU模式提供了比Text模式更丰富的功能,能够支持多种编码方式,包括7-bit、8-bit以及...

    短信PDU编解码工具SMSPDU.exe.rar

    软件介绍: SMS PDU TOOLS V1.0支持中国移动和中国联通短消息,只需输入手机号码和短消息内容,即可生成相应的PDU数据包,并显示TPDU和PDU长度。非常方便短信 SMS 开发时使用。

    SMSPDU (短信PDU)

    1. **SMSPDU结构** SMSPDU由多个部分组成,包括一个7位的协议标识符(TP-PI)、一个8位的短信控制信息(TP-DCS,用于指示文本编码)、一个可变长度的短信参考(TP-Ref)和短信提交/接收标志(TP-Status)等。最重要...

    短信pdu编码解码_短信_短信PDU编码_pdu_

    PDU全称为Protocol Data Unit(协议数据单元),是SMS(Short Message Service,短消息服务)在GSM网络内部进行传输时的一种编码方式。 短信PDU编码是一种二进制编码格式,它将短信内容和接收者的电话号码转换为一...

    SMS 短信 PDU编码规则

    短信PDU编码规则是短消息服务(Short Message Service, SMS)中的一种核心技术,它涉及到如何将我们日常使用的文本信息转化为二进制数据,以便于在移动通信网络中传输。这一编码方式使得短信可以在不同的手机和网络...

    短消息,SmS PDU编码解码 代码 VC++ 框架,UNICODE 转换

    PDU(Protocol Data Unit)编码是SMS传输过程中的一个重要环节,它将短信内容转换为二进制格式以便于网络传输。在这个场景中,我们讨论的是一个使用VC++编程语言构建的框架,该框架专注于SMS PDU的编码和解码,以及...

    短信收发PDU编码转换

    1. Convert ASCII to 7-bit PDU 2. Convert 7-bit, 8-bit and 16-bit PDU to ASCII 3. Decode/Parsing the hexadecimal (PDU) of SMS message 4. Encode ASCII characters to be sent as SMS ready string

    基于短信猫,采用PDU编码的短信收发java实现

    本文将详细讲解如何利用Java语言,结合PDU编码来实现基于短信猫的短信通信功能。 首先,我们需要理解PDU(Protocol Data Unit)编码。PDU编码是GSM通信系统中用于短信服务的一种二进制编码方式,它包含了短信的全部...

    sms的pdu编码规则

    【SMS的PDU编码规则详解】 短信服务(SMS)在通信中扮演着重要角色,尤其在传输简短信息时。为了支持多种字符集,包括中文,短信采用了PDU(Protocol Data Unit,协议数据单元)编码规则。PDU模式相较于Text模式,...

    lxsh.rar_PDU编码_WAP MMS_sms c_sms c++

    标题中的“lxsh.rar_PDU编码_WAP MMS_sms c_sms c++”表明这是一个关于PDU编码、WAP(无线应用协议)、MMS(多媒体消息服务)以及使用C语言和C++实现SMS(短消息服务)的编程资源集合。描述中提到的“SMS与GPRS,MMS...

Global site tag (gtag.js) - Google Analytics