sms基本概念
gsm中唯一不要求建立端-端业务路径的业务就是短消息,即使移动台已处于完全电路通信情况下仍可进行短消息传输。
短消息通信仅限于一个消息,换言之,一个消息的传输就构成了一次通信。因此,业务是非对称的,一般认为移动起始短消息传输与移动终接短报文传输是两回事。这并不阻碍实时对话,但系统认为不同的消息彼此独立,消息的传输总是由处于gsm外部的短消息服务中心(s msc)进行中继,消息有目的地或起源地,但只与用户和smsc有关,而与其他gsm基础设施无关
短消息的体系结构
gsm标准中定义的点-点短消息服务使得短消息能在移动台和短消息服务中心之间传递。这些服务中心是通过称为sms- gmsc的特定msc 同gsm网络联系的。
有个图在这里,呵呵,不贴了,大家自己画画
sme:short messaging entity,短消息实体。它可以接收或改善短消息,位于固话系统、移动基站或其他服务中心内;
smsc:short message service center,短消息服务中心,负责在基站和sme间中继、储存或转发短消息;移动台(me)到smsc的协议能传输来自移动台或朝向移动台的短消息,协议名为smtp(short m
essage transmission protocol);
smcgwms或smcgmsc:sms-gateway msc,sms网关。接收由smsc发送的短消息,向hlr查询路由信息,并将短消息传送给接收者所在基站的交换中心;
hlr:home location register,归属位置寄存器。用于永久储存管理用户和服务记录的数据库,由smsc产生。sms网关与hlr之间的协议使前者可以要求hlr搜索可找到的用户地址。它与msc与hlr之间的协议一起,能在移动台因超出覆盖区而丢失报文、随后又可找到时加以提示。
msc:mobile switching center,移动交换中心。负责系统切换管理并控制来自或发向其他电话或数据系统的拔叫。
vlr:visitor location register:,访问位置寄存器。含有用户临时信息的数据库。交换中心服务访问用户时需要这些信息。
重要概念
·移动起始短消息:mobile originated short message。
一个gsm用户发送短消息时,他必须至少在其内容中包含最终地址的识别符,和处理这消息的服务中心号码,然后请求传递。
短消息的传输要求在移动台和msc之间建立信令连接。消息本身的传递要求在无线路径上建立专用的链路层链接,并要求采用专用的消息传递协议。在规定的协议栈的顶部是所谓的传输层协议,在移动起始短消息情形下,它是一条单独的报文,即smtp(不是tcp/ip的smt
p)短消息传送报文,低层处理应答的传送,它只指出smsc已收到报文。
·移动终接短消息:mobile terminated short message。
目的地为gsm用户的短消息必须首先先从发送方路由至短消息服务中心,然后再被路由至实际地址。
当smsc有短消息需发送到期某一gsm用户时,它建立一条包含各种利于接收者的信息的sms-deliver报文。此信息包括用户的内容,最初的发送者身份及用于批示短消息已被smsc接收的时间标记。与mo 情形相似,sms-deliver报文将在各种接口上传送。
在达到目的地前,报文的实际路由必须利用map/c查询功能获得,采用的是如下方法:smsc将短消息传到与服务中心相连的sms网关,网关的选择依赖于它想到在的用户,因为通常网关仅能处理某些用户(某家营运商或某个国家的用户)。这样,用户通过目录号(一般同电话一样)来识别,这些目录号最初是由短消息发送者输入的,这使得sms网关能识别有关的hlr并查询它。查询是通过发送一个专用报文,即用于短消息的map/c send routing infor报文来实现;对其应答既可采用包含用户正在访问的msc/vlr的ss7地址的map/c sen d rounting info for short message result报文,又可当已知用户此时不可到达时采用拒绝报文。
sms由哪些要素组成?
sms由几个与提交或接收相关的服务要素组成,如:有效期(在将短消息成功送达用户前smsc需要保证的储存时间),优先性。此外,
短消息还提供提交消息的时间、告诉移动台是否还有更多消息要发送,以及还有多少条消息要发送等。
短消息不可到达
短消息不可到达的情况有三种:
·当被sms网关查询时,移动台不在服务区域、未获得服务授权、或有未成功发送报文正等待告警,hlr就会立即知道不能发送;
·第二种情形是,msc/vlr已收到报文但不能传送的情况。此时,它先向sms网关发送一故障指示,作为map/h forward short message 报文的应答;然后,网关一方面会向smsc发送否定报告,另一方面向hlr发送map/c set message waiting data报文,在收到报文确认后进行表格更新。该事件会储存在vlr和hlr内的用户记录中;第三种情况是msc/vlr向用户发送有效报文后发现不可送达。
sms程式开发
九十年代初,at命令仅被用于modem操作。由于没有控制移动电话文本消息的先例,因此开发了一种叫sms block mode的协议,通过终端设备(te)或电脑来完全控制sms。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和hp共同为gsm研制了一整套at 命令,其中包含对sms的控制。at命令在此基础上演化并被加入gs m 07.05标准,以及之后的gsm 07.07标准。
对sms的控制共有三种实现途径:
·最初的block mode;
·基于at命令的text mode;
·基于at命令的pdu mode;
到现在,pdu已取代block mode,后者逐渐淡出。
什么是pdu mode?
它是发送或接收手机sms消息的一种方法。消息正文经过十六进制编码后进行传送。
pdu命令有哪些?
基本的pdu命令是at+cmgr,at+cmgl,at+cmgs。例如读取电话上全部未读过的sms消息,最简单的办法是用at+cmgl=0;而用at+cmgl =4则可读取全部sms消息,无论已读过与否。
实例:
15:38:58 tx:at
15:39:05 tx:at+cpms="me"
15:39:05 rx:at+cpms="me"
15:39:05 rx:
+cpms: 15,15,4,10,15,15
15:39:05 rx:
ok
15:39:07 tx:at+cmgl=0
15:39:07 rx:at+cmgl=0
15:39:07 rx:
+cmgl: 5,0,,52
15:39:07
rx:07914408020033f40407d0b1582c0600000030525183920028d43708
2e7fd3cb633a888e2e83ee6f399b0c32cbdf6d10b96c0fcfe9617afaed7 6b95c
15:39:07 rx:
ok
使用工具对上述收到的sms进行解码后,可得到如下的解释:
iei: 00
length: 00
message ref: 00
status: 00
sc address length: 07
sc address type: 91
type of number: international
numbering plan identifier: e.164
sc address: 44802000334
message type indicator: 04
message type: sms-deliver / sms-deliver report more messages to send: no
status report indication: no
reply path: no
originating address length: 07
originating address type: d0
type of number: alphanumeric
numbering plan identifier: unknown
originating address: 1b85c260
decoded: 1111
protocol identifier: default
data coding scheme: gsm default alphabet
sc timestamp: 00305251839200
decoded: 00/03/25 15:38:29
time zone: gmt+0.00h
user data length: 28
decimal: 40
message: to protect the world from devastation 于是我们知道这条sms消息的第一部分是:07914408020033f4
07是跟在服务中心地址内的字节数;
91是ton/npi。ton/npi遵守international/e.164标准,指在号码前需加‘+’号;此外还可有其他数值,但91最常用到。44080200033f4是所使用的服务中心地址,由于位置上略有处理,实际号码应为:
44802000334f(字母f意指长度减1),这就是服务中心的准确地址(号码)。
下一单元是:
04
这是文件头字节(header byte,是一种bitmask)。将每个字节设为1时,有如下含义:
10000000
回复路径(reply path):移动电话可循发送sms消息的短消息中心进行回复(但并非所有smsc都会这样设置)。
01000000
tp-udh - 带有用户数据文件头
00100000
tp-status-report-indication - 发送状态报告给发信人,表示消息收到
00010000
00001000
此两类在正常的移动终接短消息(mt,mobile terminated sms)中不会使用。
00000100
tp-more messages to send - smsc内再无新消息发送给该移动电话。
00000010
00000001
最后两个位数表示消息种类 - 10指是移动终接短消息(mt),01指移动起始短消息(mo,mobile originated sms)。
所以"04"指此条消息是正常的移动终接短消息,smsc内再无新消息发送给该手机。