手机开发实战52——SMS介绍2
来源:互联网 发布:淘宝日用品代理 编辑:程序博客网 时间:2024/05/17 01:56
工作流程
(1)移动台发送短消息
当一个移动用户想发出短消息时,要预先正确设置好短消息业务中心SMSC的电话号码,即+861380M1M2M3500(M1M2M3为地区码),然后通过移动台或与移动台相连接的PC机编辑短消息,输入被叫用户电话号码,才能将短消息发出。
短消息的传输要求在移动台和MSC之间建立信令连接,如果没有这一信令连接,其完成方法同其他通信一样建立路径。消息本身的传递要求在无线路径上建立专用的链路层连接,即SAPI3连接,并要求采用专用的消息传递协议,即SM-TP短消息传递协议,它让用户做的是设置一个短消息的有效期。过期后,服务中心不再试图发送此消息���而是销毁它。
移动台发送短消息的过程首先是MS在无线信令链路上将SMSC的电话号码,被叫用户号码,短消息的内容等信息送到拜访的MSC/VLR内。
MSC/VLR根据VLR内存储的用户数据检查用户是否具有短消息业务功能。若有,再根据SMSC的电话号码,将短消息路由到SMS关口站,
再由SMS关口站送到SMSC内,由SMSC暂时贮存起来。SMSC收到短消息后会向MS回送短消息已发送成功的确认信息。
(2)移动台接收短消息SMSC接收到各种用户发来的短消息后,要选定适当的路由将短消息发给被叫用户。
当SMSC要向GSM用户发短消息时,它先要建立一条包含各种有利于接收者的信息(SM-TPSMS-DELIVER)。这条信息中包含短消息内容、原发者的识别符号及SMSC收到该短消息的时间。与移动台发送短消息相似SM-TPSMS-DELIVER消息将在各种接口上传送。
SMSC把这条消息传给与中心相连的关口站,关口站根据被叫用户的MSISDN号向相关的HLR查询(HLR-ENQ),查询是通过用于短消息的MAP/CSENDROUTINGINFO消息报文来实现的。
HLR将查询结果送给关口站,查询结果消息中包含了被叫用户正拜访的MSC/VLR的7号信令地址的MAP/CSENDROUTINGINFOFORSHORTMESSAGERESULT消息报文(亦可包含用户此时不可及采用的拒绝消息报文)。
关口站用该地址消息向用户拜访的MSC/VLR传递消息,再由MSC建立必要的信令连接后将短消息传递给MS移动台。
移动台不可及的情况可以分成三种:
(1)当被SMS网关查询时,移动台不在服务区域、未获得服务授权、或有未成功发送报文正等待告警,HLR就会立即知道不能发送。
(2)HLR本身不知道,要到该MS拜访的MSC/VLR才知道。MSC/VLR已收到报文但不能传送的情况。此时,它先向SMS网关发送一故障指示,作为MAP/H FORWARD SHORT MESSAGE报文的应答;然后,网关一方面会向SMSC发送否定报告,另一方面向HLR发送MAP/C SET MESSAGE WAITING DATA报文,在收到报文确认后进行表格更新。该事件会储存在VLR和HLR内的用户记录中。
(3)一直要等到MSC向MS发送短消息失败后才发现该MS为不可及,即MSC/VLR向用户发送有效报文后发现不可送达。
HLR中为每个用户保存着一张表格用来记录一组短消息业务中心的地址,这些短消息中心都保留着向该用户传送失败的短消息。当MSC收到了短消息但MS为不可及使消息无法发送时,MSC要向SMS关口站送出传送失败的消息(error reporting),作为对MAP/H FORWARD SHORT MESSAGE 消息的应答;
然后SMS关口站收到以后,一方面向SMSC发送传送失败的报告,另一方面向HLR发送MAP/C Set Message Waiting Data消息要求HLR更新其为每个用户保存的投递失败的表格,HLR回送MAP/C Set Message Waiting Data Acknowledge消息给SMS关口站作为确认。同时,该用户拜访的MSC/VLR会将VLR内的用户数据加入\"Message Waiting\"的标志,表示该用户有短消息等候。
最后,当MS恢复了与网络的联系后(如移动台发起呼叫尝试),该用户拜访的MSC/VLR知道了该用户的位置,由于存贮有消息发送故障的指示,当这类事件发生时,它就能用MAP/D Note Ms Present消息通知HLR,移动台亦可能移动到另一个MSC业务区内再次出现,在此情况下,通过GSM/DCS1800移动性管理规程, HLR可直接了解到这种状态。
- 手机开发实战52——SMS介绍2
- 手机开发实战51——SMS介绍1
- 手机开发实战53——SMS介绍3
- 手机开发实战54——SMS介绍4
- 手机开发实战49——手机输入法介绍2
- 手机开发实战10——GSM信道介绍2
- 手机开发实战56——EMS介绍2
- 手机开发实战58——小区广播介绍2
- 手机开发实战60——语音信箱介绍2
- 手机开发实战67——MIME介绍2
- 手机开发实战76——端口介绍2
- 手机开发实战80——Javascript介绍2
- 手机开发实战83——HTML介绍2
- 手机开发实战86——XML介绍2
- 手机开发实战89——WAP介绍2
- 手机开发实战92——PUSH介绍2
- 手机开发实战95——MMS介绍2
- 手机开发实战108——EMAIL介绍2
- UEditor动态设置工具栏
- MySQL添加用户、删除用户与授权
- Bluemix上Python应用启动ERR import MySQLdb ImportError: No module named MySQLdb
- Suse 基于AutoYaST自动化安装
- 阿里云ECS—搭建个人博客流程
- 手机开发实战52——SMS介绍2
- CodeForces - 630C Lucky Numbers【计数】
- 第九周实践——阅读程序(3)
- Mapreduce中使用多线程的问题
- TPKeyboardAvoidingScrollView用于在scrollview中实现自动上滚,避免键盘遮盖住了textfield,textview等控件。
- 网络判断
- 手机开发实战53——SMS介绍3
- 深度学习系列文章之二中:win7+Ubantu双系统装机步骤(硬盘安装)
- 怎么成为一个优秀的程序员,而不是一个优秀的码农?