GSM短信编码与协议分析

1 短信基本原理
 
由ESTI制订的SMS规范中,一共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。Block Mode已很少使用。Text Mode是纯文本方式,可使用不同的字符集,从技术上说也可用于发送中文短消息,但国内手机基本上不支持,主要用于欧美地区。PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。 PDU串表面上是一串ASCII码,由‘ 0’-‘9’、 ‘A’-‘F’这些数字和字母组成。它们是8位字节的十六进制数,或者BCD码十进制数。PDU串不仅包含可显示的消息本身,还包含很多其它信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。在PDU Mode中,可以采用三种编码方式来对发送的内容进行编码,它们是7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,它将一串7-bit的字符(最高位为0)编码成8-bit的数据,每8个字符可“压缩”成7个。我们通常在短信中所说的ASCII编码方式,实际上是指7-bit编码,而7-bit编码方式不仅能表示普通的ASCII字符,还可以表示一些特殊字符,因此7-bit编码和ASCII编码实际上是两个完全不同的概念,它们仅仅在一些普通的ASCII字符上编码相同;8-bit编码通常用于发送数据消息,比如图片和铃声等;而UCS2编码用于发送Unicode字符。PDU串的用户信息(TP-UD)段最大容量是140字节,所以在这三种编码方式下,可以发送的短消息的最大字符数分别是160、140和70。这里,将一个英文字母、一个汉字和一个数据字节都视为一个字符。
 
2 短信协议栈
 
GSM定义的短信基本架构如下图:

GSM短信编码与协议分析(1)

 

短信协议栈如下图:

GSM短信编码与协议分析(1)

SM-AL: Short Message Application Layer

SM-TL: Short Message Transfer Layer

SM-RL: Short Message Relay Layer

其它术语请参考《GSM 03.40》相关文档

 

 

 

3、短信PDU格式
 
参考上图,我们着重讨论在SM-TL层的PDU结构。在SM-TL层,定义了以下六种PDU类型: SMS-DELIVER:从SC到MS传递短信 SMS-DELIVER-REPORT SMS-SUBMIT:从MS到SC传递短信 SMS-SUBMIT-REPORT SMS-STATUS-REPORT SMS-COMMAND 不同的PDU类型,定义了不同的字段要求,比如SMS-DELIVER定义了TP-MTI, TP-MMS, TP-RP, TP-UDHI, TP-OA, TP-PID, TP-DCS, TP-SCTS, TP-UDL, TP-UD,这些字段有些只占用一个位,有些占用多个位或一个字节或多个字节。图示布局如下:

GSM短信编码与协议分析(2) 

 

 

4、长短信分析
随着手机终端的飞速发展,对长短信的支持越来越灵活,长短信应用也越来越广泛。比如现在很多手机已经支持自动拆分长短信为多条短信发送。在此我们详细研究长短信的编码方式。

在以上章节举例的PDU字段中,需要特别留意几个字段:TP-UDHI, TP-UDL,TP-UD,对于一般非超长的普通短信,TP-UDHI字段是可选的,除非特殊的WAP Push等应用。但是对于超长短信,这个字段必须要设置为1,才能构造成功的超长短信让手机自动合并。

TP-UDHI(TP?User?Data?Header?Indicator)字段在第一个字节的第7 bit位(bit 6),占用一个bit,用来标识该短信是否拥有一个头信息,当TP-UDHI=0时,表示在TP?UD中没有头信息,当TP-UDHI=1时,表示在TP?UD中含有头信息。长短信必须要在TP-UD中构造特殊的头部信息。

短信消息体中的头部信息的结构可参考如下:

FIELD                                                                        LENGTH

Length of User Data Header                                                   1 octet

Information?Element?Identifier "A"                                          1 octet

Length of Information?Element "A"                                      1 octet

Information?Element "A" Data                                                0 to "n" octets

Information?Element?Identifier "B"                                          1 octet

Length of Information?Element "B"                                      1 octet

Information?Element "B" Data                                                0 to "n" octets

Information?Element?Identifier "X"                                          1 octet

Length of Information?Element "X"                                         1 octet

Information?Element "X" Data                                                0 to "n" octets

头信息的作用有很多,其中之一就是用来标识超长短信(集联短信)。下面用一个实际的例子来说明头信息的含义。

这是一条实际发送的8bit编码超长短信内容(TP_UD)的16进制编码:

05  00  03  1D  02  01  31  31  31  31  31  31  31……

05 : UDHL(User Data Header Length) 头信息长度,表示头信息中剩下数据的长度是5个字节;

00 : Information?Element?Identifier,当它取值为00时,表示此短信是采用8-bit reference的超长短信;

03 : Length of Information?Element,表示剩下数据的长度是3个字节;

1D: Information?Element Data,这里表示超长短信头信息中的reference number值,reference number用来标识一条唯一的超长短信,它通过一个算法来自动生成;

02: Information?Element Data, 这里表示超长短信头信息中的Maximum number值,即一条超长短信一共由几段组成;

01: Information?Element Data, 这里表示超长短信头信息中的Sequence number值,即该条短信属于整个超长短信中的第几段;

以上便是超长短信中头信息的内容,后面的内容即为短消息的内容本身,这里的内容全是数据“1” 。

需要注意的是,PDU串的用户信息长度(TP-UDL),在各种编码方式下意义有所不同。7-bit编码时,指原始短消息的字符个数,而不是编码后的字节数。8-bit编码时,就是字节数。UCS2编码时,也是字节数,等于原始短消息的字符数的两倍。如果用户信息(TP-UD)中存在一个头(基本参数的TP-UDHI为1),在所有编码方式下,用户信息长度(TP-UDL)都等于头长度与编码后字节数之和。如果采用GSM 03.42所建议的压缩算法(TP-DCS的高3位为001),则该长度也是压缩编码后字节数或头长度与压缩编码后字节数之和。

 

 

 

5、移动短信协议分析
中国移动关于短信的应用协议包括:CMPP/SMPP,这些应用层的协议最终传递到手机终端,均需要进行协议的映射或转换。以下着重探讨短信在各种协议下的编码对应关系。
格式 编码字段  字段说明
CMPP Msg_Fmt      在CMPP协议规范中定义 信息格式:
                  0:ASCII串;
                  3:短信写卡操作;
                  4:二进制信息;
                  8:UCS2编码;
                  15:含GB汉字


SMPP Data_coding     (SMPP v3.4协议定义) Bits         

                  7 6 5 4 3 2 1 0  Meaning              
                  0 0 0 0 0 0 0 0  SMSC Default Alphabet
                  0 0 0 0 0 0 0 1  IA5(CCITT T.50)/ASCII
                  0 0 0 0 0 0 1 0  Octet unspecified(8-bit binary)
                  0 0 0 0 0 0 1 1  Latin 1(ISO-8859-1)
                  0 0 0 0 0 1 0 0  Octet unspecified(8-bit binary)
                  0 0 0 0 0 1 0 1  JIS (X 0208-1990)
                  0 0 0 0 0 1 1 0  Cyrllic (ISO-8859-5)
                  0 0 0 0 0 1 1 1  Latin/Hebrew(ISO-8859-8)
                  0 0 0 0 1 0 0 0  UCS2
                  0 0 0 0 1 0 0 1  Pictogram Encoding
                  0 0 0 0 1 0 1 0  ISO-2022-JP(Music Codes)
                  0 0 0 0 1 0 1 1  reserved
                  0 0 0 0 1 1 0 0  reserved
                  0 0 0 0 1 1 0 1  Extended Kanji JIS
                  0 0 0 0 1 1 1 0  KS C 5601
                  0 0 0 0 1 1 1 1  reserved
                  ...
                  1 0 1 1 1 1 1 1  reserved
                  1 1 0 0 x x x x  GSM MWI control
                  1 1 0 1 x x x x  GSM MWI control
                  1 1 1 0 x x x x  reserved
                  1 1 1 1 x x x x  GSM Messsage class control

GSM PDU TP-DCS   在GSM03.40, GSM03.38规范中定义 具体定义请参考下表Data Coding Scheme(TP-DCS)


6、闪信/免提短信分析
在某些手机上(所有的Nokias,某些Siemens,   Ericsson,   Motorola   等等..)class   0信息将被显示为一种flash   SMS信息。这些信息只要一到达,将立即显示在屏幕上,而不需要按任何按钮。如果数据的编码方式是设置成16-bit   unicode   (ucs2),   而且信息以"0001"开头,那么它将作为一个闪烁的flash   message显示。   
      Octet   Value   Description   
  TP-DCS   18   16   bits   (UCS2),   message   class   0   
  TP-VP    AA   Validity   period   
  TP-UDL   0C   User   Data   Length,   12   octets   
  TP-UD    00   01   00   41   00   6C   00   65   00   72   00   74   User   Data,   message   "Alert"   
     这个表显示了Flash   SMS中的相关信息。   
第一个unicode字符("00   01")使能闪烁。这样的消息最长就是69个unicode字符。    

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TS GSM04.05,全称为GSM 04.05 Technical Specification,是一项主要应用于GSM(全球移动通系统)中的协议标准。该协议规定了GSM系统中电话消息(SMS)的传输协议和相关技术。 GSM04.05协议定义了GSM的结构和编码方式。它规定了的各个字段,例如发件人的电话号码、接收人的电话号码、内容等。同时,该协议还规定了的传输方式和相关的消息处理过程。 根据GSM04.05协议被划分为两种类型:MO(Mobile Originating,即手机发出的)和MT(Mobile Terminating,即手机接收的)。协议指定了这两种的传输和处理方式。 在GSM系统中,传输是通过服务中心(SMSC)进行的。MO首先通过手机发送给SMSC,然后SMSC负责将其传输给接收者的手机。而MT则是由SMSC将消息发送给目标手机。协议详细规定了这个过程中的各个步骤和相关的消息格式。 此外,GSM04.05协议还规定了中的编码方式。根据协议可以使用7-bit GSM编码、8-bit二进制编码或UCS-2编码。这些编码方式对于内容中的不同字符集有不同的适用性。 总结而言,GSM04.05协议是一项关于GSM系统中传输的技术规范。它定义了的结构、编码方式以及传输和处理过程。该协议GSM系统中的服务提供了统一的标准,使得不同手机厂商和网络运营商的设备和系统能够互相兼容和交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

supergame111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值