`
jxxms
  • 浏览: 104496 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

短信编程的一些概念

    博客分类:
  • java
阅读更多

SPIP:Short Message Gateway Interface Protocol, 本协议所描述的短消息网关接口协议, 用于完成在SMG和SP之间、SMG和SMG之间短消息的发送、接收和转发功能,以及SMG和GNS之间路由表的同步功能。
 SGIP有两种具体实现方式, 一种是采用专用SGIP方式, 另一种是采用通用HTTP方式. SMG和GNS、以及SMG和SMG之间采用专用SGIP方式作为承载协议;而SP和SMG的通信同时支持专用SGIP方式和通用HTTP方式两种承载协议

 

GNS:Gateway Name Server, 负责系统路由的管理和同步。
 

SMSC和SP:和SMG平台之间互连的SMSC称作本地SMSC, 和异地SMG平台相连的SMSC称作异地SMSC.和SMG平台之间相连的SP称作本地SP, 和异地SMG平台相连的SP称作异地SP
 从本地SMSC向本地SP以及从本地SP向本地SMSC发送的消息直接由SMG转发; 从本地SMSC向异地SP以及从本地SP向异地SMSC发送的消息由本地SMG路由到异地SMG后, 再由异地SMG转发.

路由选择:当消息在本地SMSC和异地SP, 或者在本地SP和异地SMSC之间传输时,发送方必须要获取消息接受方的位置消息. 这部分功能称为路由选择.

MO:对于MO方向的命令(即命令接收方为SP), 其路由根据命令中的SP接入号码来选择.

MT:对于MT方向的命令(即接受方为用户手机), 其路由根据命令中的付费号码和用户号码来综合判断. 如果付费号码为空, 或付费号码为SP接入号码, 则根据用户号码来选择路由; 否则根据付费号码所代表的手机号码来选择路由(这样做是考虑到了系统计费和用户鉴权的可行性)

SMG:由于SMG网关之间采用网状互联, 网关之间不可能出现二次前转, 因此接收前转消息的网关必须能判断前转的消息目的地址是否是本网关覆盖范围的用户, 若不是, 必须发送出错信息到前转网关.

通信节点编号规则:在整个网关系统中, 所有的通信节点(SMG、GNS、SP和SMSC)都有一个唯一的数字编号,不同的SP或SMSC或SMG或GNS编号不能相同,编号由系统管理员负责分配。
 编号规则如下:

 SMG的编号规则:1AAAAX            SMSC的编号规则:2AAAAX             SP的编号规则:3AAAAQQQQQ

 GNS的编号规则:4AAAAX            其中,AAAA表示四位长途区号(不足四位的长途区号,左对齐,右补零),X表示1位序号,QQQQQ表示5位企业代码
 
用户鉴权:当一条MT短消息需要处理时,终点SMG必须保证该短消息的付费方有资格享用该服务(比如付费用户不欠费)。 根据短消息服务类型的不同,可以将付费方式分成三类:被叫方付费、SP付费和第三方付费。

被叫方付费:目前的短消息中心都具有对被叫用户鉴权功能,所以对由被叫方付费的MT短消息,SMG不作鉴权检查,直接转发至SMSC;如果被叫方鉴权失败,SMSC会通过反馈通知SMG。

SP付费:当MT短消息是由SP付费时(如SP发送广告),SMG不作鉴权检查。

第三方付费:当MT短消息是由第三方付费(如手机用户A通过SP给手机用户B点歌,并由手机用户A付费)时,应该对付费方进行鉴权。这种情况下,该MT短消息应该从付费方归属地的短消息中心发送,并且由付费方归属地的计费中心完成鉴权操作。如果计费中心鉴权成功,SMG即将该MT短消息发送至SMSC,否则SMG不再发送该短消息,并根据SP的要求决定是否返回Report命令通知SP发送失败的原因。

SP和SMG通用HTTP方式:SP和SMG之间采用通用HTTP方式通信时,SP和SMG互为HTTP的客户端和服务器端。HTTP服务器端对相关的URL进行保护,HTTP客户端必须采用授权方式访问这些URL。HTTP的特点决定客户端和服务器端的每一次通信都必须一次完成授权连接、发送请求、接受应答、关闭连接等过程(HTTP承载方式不再需要专门的连接命令)。
 对于MO方向的命令(即命令接收方为SP),由SMG通过POST方式提交给SP进行处理,SP将处理结果以及MT方向信息在HTTP应答中返回给SMG;对于SP主动向用户发送信息的PUSH业务,由SP作为客户端将信息通过POST方式提交给SMG进行处理,SMG在应答中确认信息发送成功与否。
  因为HTTP服务器对URL进行了授权保护,所以HTTP客户端必须在每次请求中都带上授权信息。HTTP客户端的一个请求只能携带一条命令。SP与SMG之间发送的任何一条命令都带有一个序列号,序列号由命令源产生,任何两条命令的序列号不能重复。
 如果HTTP服务器接收到的HTTP请求内容的格式不完整或不正确,HTTP服务器应该返回错误码。HTTP承载方式支持的HTTP协议为1.0版.

从SP到SMG的命令:Submit : SP用该消息向SMG请求向某一个短消息用户发送短消息.Trace : SP用该消息向SMG请求跟踪某一条MT短消息的状态
从SMG到SP的命令:Deliver : SMG发送一条短消息到SP.Report : SMG用该命令通知SP一条Submit命令所发送的MT当前结果.UserRpt : SMG用该命令报告SP一条手机用户的状态
 
SP和SMG之间专用SGIP方式:SP和SMG之间的通信由客户端向服务器端发起连接. 连接建立以后,由客户端向服务器端发送命令,服务器端必须对接收到的每一条命令返回一条应答消息. SP和SMG互为客户端和服务器端.

通信初始化:客户端有命令要向服务器发送时,由客户端首先通过Bind命令向服务器端发起连接. 服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进行验证,然后返回一条Bind_Resp应答给客户端. 如果验证通过,则客户端和服务器端的通信开始,否则中断连接.

通信过程:SP与SMG之间发送的任何一条命令都带有一个序列号, 序列号由命令源产生.客户端与服务器端通信开始以后,客户端可以向服务器端发送相应的命令,服务器端对收到的命令返回应答.
 
通信结束:如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接.
 
故障处理:发生故障时,SP、SMG以及GNS节点应通过Report命令和其它相关命令的应答相结合返回故障原因;如果MO不成功,该用户所属的SMG还应向用户终端返回友好的应答信息说明不成功原因。

网络故障:客户端与服务器端的通信过程中如果检测到双方连接中断(如网络断线),客户端应该断开连接,然后尝试重新向服务器端建立新的连接;服务器端应该按照接收到Unbind的情况进行处理,断开和客户端的连接。

接收到非法命令或应答:如果服务器端接收到的命令语法错误,比如命令不完整、命令无法识别等,则断开和客户端的连接;客户端应该向服务器端建立新连接继续发送命令
 如果客户端收到的应答语法错误,比如命令不完整、命令无法识别等,则主动断开和服务器端的连接;服务器端也应该断开和客户端的连接。
 如果命令语法正确,但服务器端不处理该命令,比如SP为服务器端时收到Submit命令,则返回响应应答,并在应答中指定错误原因。
  如果应答语法正确,但客户端不处理该应答,比如SP为客户端时收到Deliver_Resp应答,则丢弃。

SMGP:服务提供商使用SMGP接入短信网关,向中国电信的短信用户发送短信,以及接受短信用户发送的短信. 短信网关使用SMGP相互转发短信.
 网关通信协议是短信服务提供商与短信网关,以及短信网关与短信网关之间的通信协议.SMGP可以实现以下功能: 1)服务提供商向中国电信短信用户发送push短信, 例如邮件通知、天气预报等;2)中国电信短信用户向服务提供商点播信息,例如查询股票信息,航班信息.   3)服务提供商以某个短信用户的身份向中国电信用户发送传情短信,例如图片传情,音乐传情等.
 网关通信协议是一个基于数据包的交互式协议,通过TCP/IP传递数据. 每个数据包请求标式,代表数据包的用途. 服务提供商与短信网关或者短信网关与短信网关之间采用客户-服务器的方式交互信息,客户向服务器发送一个请求包, 服务器向客户返回回应包
 客户发送的所有请求包都包含一个唯一的序列号,服务器返回的回应包也带有相应的序列号, 以便客户识别这是哪一个请求的回应.
       客户和服务器之间采用长连接,如果在一定时间内客户和服务器之间没有发送合法的请求包, 连接就中断.
 
SMG与SMG之间的通信:在网关系统之中,任何两个SMG之间都要建立一对基于TCP/IP的连接,以实现命令的路由。两个SMG互为客户端和服务器端,客户端向服务器端发送命令,接收应答;服务器端从客户端接收命令,返回应答。

SMG与GNS之间的通信:在网关系统之中,任何一个SMG都要和GNS以互为客户端/服务器的方式建立连接来完成路由表的更新和维护。当SMG对本地的路由表作修改后,需要主动以客户端的身份向GNS建立连接,通知GNS更新路由表;当GNS修改了路由表后,需要主动以客户端的身份向所有的SMG建立连接,通知SMG更新路由表。

增值业务平台:增值业务平台需要数据库、短信和WEB三类服务器,根据业务承载量,三类服务可以安装在一套或多套服务器上:1)数据库服务器,数据库服务器用于保存配置、上行、下行、业务表等信息,一般采用Microsoft SQL Server、Oracle等大型数据库管理系统;2)WEB服务器,系统管理界面采用B/S三层结构,通过 WEB服务完成业务管理;3)短信服务器,短信服务器完成与短消息网关间通信,运行各种短信增值业务。
 

4个运营商通讯程序:主要的功能类:1)底层通信类封装SOCKET API,完成SOCKET层的绑定、连接、控制、发送、接受、关闭连接等基本功能;2)应用包类(4个运营商的协议要求);3)服务器类:接收上行并通过指令分配到相关业务表中;4)把下行表中的记录发到运营商特定的端口

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Visual C++_Turbo C 串口通信编程实践.(电子工业.龚建伟.熊光明) 第二版 电子版

    10.1.4 用串口收发SMS短信编程的一些讨论 283 10.2 计算机与Rabbit 2000嵌入式系统通信编程实例 286 10.2.1 Rabbit 2000微处理器介绍 286 10.2.2 动态C(Dynamic C)语言介绍 287 10.2.3 某车载无线调度系统实例介绍...

    Visual C++/Turbo C串口通信编程实践及源代码-3

    10.1.4 用串口收发sms短信编程的一些讨论 283 10.2 计算机与rabbit 2000嵌入式系统通信编程实例 286 10.2.1 rabbit 2000微处理器介绍 286 10.2.2 动态c(dynamic c)语言介绍 287 10.2.3 某车载无线调度系统实例...

    短信万能中间件

    使用本系统收发长短信,操作上与普通短信毫无区别,俨然没有长短信这个概念存在。 支持短信送达通知。当用户接收到您所发出的短信后,系统中能够产生一个发送报告事件。这是许多其他软件所不能做到的。 支持短信...

    C/C++串口通信典型应用实例编程实践.(电子工业.曹卫杉)

     1.1 串口通信的基本概念  1.2 串口通信及其标准  1.3 串口通信调试  第2章 C/C++编程语言与串口通信  2.1 串行通信控件MSComm  2.2 API函数  2.3 线程  2.4 LabWindows/CVI串口通信函数 应用篇  第3章 PC...

    Visual C++/Turbo C串口通信编程实践及源代码-2

    10.1.4 用串口收发sms短信编程的一些讨论 283 10.2 计算机与rabbit 2000嵌入式系统通信编程实例 286 10.2.1 rabbit 2000微处理器介绍 286 10.2.2 动态c(dynamic c)语言介绍 287 10.2.3 某车载无线调度系统实例...

    Visual C++/Turbo C串口通信编程实践 及源代码-1

    10.1.4 用串口收发sms短信编程的一些讨论 283 10.2 计算机与rabbit 2000嵌入式系统通信编程实例 286 10.2.1 rabbit 2000微处理器介绍 286 10.2.2 动态c(dynamic c)语言介绍 287 10.2.3 某车载无线调度系统实例...

    Visual C++_Turbo C 串口通信编程实践.(电子工业.龚建伟.熊光明) 源码光盘

    10.1.4 用串口收发SMS短信编程的一些讨论 283 10.2 计算机与Rabbit 2000嵌入式系统通信编程实例 286 10.2.1 Rabbit 2000微处理器介绍 286 10.2.2 动态C(Dynamic C)语言介绍 287 10.2.3 某车载无线调度系统实例介绍...

    毕业设计-单片机控制GSM模块实现短信收发的软件设计.doc

    单片机控制GSM模块实现短信收发的软件设计 摘要:借助系统模型,阐明GSM模块收发短信的基本概念以及串口控制SMS的基本原理。 详细介绍单片机控制GSM模块工作的软件实现过程,对怎样用单片机控制GSM模块收发短 信进行...

    消息系统(短信,推送,邮件)等统一发送管理.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    毕业设计-基于HBase实现的手机数据备份系统,实现了手机关键信息的备份,如短信、联系人、重要文件等。.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    基于java的网页即时聊天工具的设计与实现-毕业设计

    一些常用技术,编程实现基于 Java 的网络聊天工具,涉及的内容包括 web 通信,身份验 证和注册登陆,建立服务器,连接服务器以及数据接口实现等。 论文对当今聊天软件的发展情况、与该聊天软件相关的各种技术以及该...

    Android经典书籍

    Android是一个为手机设计的开源平台,在这个行业里激起了强烈的热情,这部实用教程为开发Android软件的人介绍了重要的概念并提供了一些代码。本书介绍了它的开发环境,并提供了一个完整的开发例程,向读者诠释了...

    C#项目开发案例全程实录(第2版)下载地址

     本书以家庭视频监控系统、企业短信群发系统、人事工资管理系统、企业电话客服系统、卡拉OK点歌系统、企业QQ系统、餐饮管理系统、企业人事管理系统、超市进销存销售管理系统、编程词典销售分析系统、在线考试系统和...

    勤哲excel服务器2010教程

    第3章、 基本操作 & 模板的概念 20 3.1 系统管理台基本操作 20 3.2 服务的启动与停止 24 3.3 客户端功能模块概览 25 3.4 模板的概念 30 3.5 本章练习 34 第4章、 建立部门、角色、用户 35 4.1 管理控制台通用操作 35...

    网站架构的设计方案.doc

    很多时候,即使没有使用框架,一样能 写出好的程序来,比如Flickr据说就是用Pear+Smarty这样的类库写出来的,所以,是否 用框架,用什么框架,一般不是最重要的,重要的是我们 的编程思想里要有框架的意识。...

    harvard-cscie3-final-project:Node.js 应用程序

    这是我在 2015 年Spring CSCI E-3 JavaScript 编程研究生班的最后一个项目。 这是一个单页的 Node.js 应用程序概念验证,演示了一种基于云的解决方案,用于通过多媒体文本消息将图像从桌面站点传输到手机。 . . ...

    84PHP开源框架 v1.1.0

    一行代码即可完成在线支付、发送短信、分页等功能,前所未有的简单和高效!同时,84PHP还具有云服务功能,这也是国内首款与云服务结合的框架:云安全检测、定时任务、云报收集,同时也是国内第一家提供官方团队工单...

    程序员考试刷题-352-652-Summer-2017:这是马里兰大学菲利普梅里尔新闻学院新闻学356-652的教学大纲和工作文件

    手机:202-590-2190(如果您发短信,请包括您的姓名) 办公室: 3210 Knight Hall (Studio C) 先决条件:对于修读 JOUR 352 的本科生,它是 JOUR 262 或 202。对于硕士生,它是 JOUR 501。 班级:2105骑士大厅。 会见...

    大数据时代的信息分析实训报告.doc

    人们在日常生活和工作中收发邮件和短信、拍照、录 像、撰写文稿、计算机绘图及编程,每天都在源源不断地产生大量的数据。全人类一年 产生的数据量以及它的增长速度都大得惊人:全球著名咨询机构IDC(国际文献资料...

    Android高薪之路:Android程序员面试宝典 李宁

    1 2 Android的基本概念 1 2 1 Android的特点都有哪些 1 2 2 MVC模式 1 2 3 Android 的系统构架 1 3 开发Android应用程序 1 3 1 搭建Android开发环境 1 3 2 Android开发环境的使用 第2章 布局 2 1 Android中的布局 2 ...

Global site tag (gtag.js) - Google Analytics