一、短信服务的发展
- 第一阶段,以短信中心为主要的业务提供及信息提供时期。1992年英国工程师Neil Papworth向手机发送了第一条短信,此时手机还不具备回复短信的能力;到2012年,我国的短信业务到达顶峰,全年累计发送量9000亿;之后手智能手机和互联网即时通讯(微信等)工具的影响,我国手机用户发送的短信数量逐年下降。
- 第二阶段,由短信服务提供商SP(提供各种票务服务、快递通知、电商营销、打车服务等)与短信中心SMSC沟通,将互联网上的巨大信息量根据用户的要求通过手机短信传递给用户。随着业务的发展,这种直连的方式带来了一定的问题,短信中心SMSC的负荷越来越大,而且,如果用户使用了点播服务,而服务提供商又没有在用户归属的短信中心SMSC注册,那么这条点播消息将无法送达至服务提供商SP。
- 第二阶段后期,引入互联网短信网关ISMG,在计算机领域有这么一句话“遇到的问题都可以通过增加一个中间层来解决”。ISMG由SMPP代理系统(与SMSC连接)、通信代理系统(与SP连接)、防火墙、短消息网关处理(查询、缓存路由)、计费统计部分成,保证了接入的一致性及安全性,实现服务提供商SP和短信中心SMSC之间的交互。
二、如何通信
协议内容
当SP与运营商达成合作之后,SP要按照协议规定才能将短信通过数据通道传递给最终用户,CMPP(China Mobile Peer to Peer,中国移动点对点协议)就是联想亚信公司为中国移动量身定做的协议。
- 中国移动:CMPP(China Mobile Peer to Peer)
- 中国电信:SMGP(Short Message Gateway Protocol)
- 中国联通:SGIP(Short Message Gateway Interface Protocol)
CMPP对数据包字段的语法、语义进行了规范,定义了中国移动短信业务中各网元之间的相关消息的类型和定义,包含以下三方面的内容:
- 信息资源站实体/业务提供商SP与互联网短信网关ISMG之间的接口协议
- 互联网短信网关ISMG之间的接口协议
- 互联网短信网关ISMG与汇接网关GNS之间的接口协议
ISMG架构图
互联网短信网关由以下几部分组成:
- 服务提供商(SP,Service Provider):短信服务的提供者
- 短信中心(SMSC,Short Message Service Center):利用信令网将短消息发给手机用户
- 短信网关(ISMG,Internet Short Message Gateway):采用CMPP协议连接SP和SMSC
- 汇接网关(GNS,Gateway Name Server):提供路由查询
业务流程
短信发送:用户归属地的SMSC将短信转发给归属的ISMG,ISMG在本地缓存中查询是否维护了SP的连接信息,如果是,则该ISMG直接转发给SP;否则,ISMG向GNS发出路由请求查询该SP对应的ISMG,然后将短信转发给目的ISMG进行短信发送。
短信接收:SP发出业务请求到ISMG,ISMG根据手机号码判断归属SMSC,如果归属SMSC由当前ISMG连接,则直接将数据发送到SMSC;否则向GNS发出路由请求查询路由,然后将业务数据转发给目的ISMG发给归属地SMSC,再发送给用户。
短信发送MO(上行)
短信发送是指从用户发送短信到SP的过程,其中③到⑧使用了CMPP协议。
①手机发出数据请求(订阅或者点播等),被归属ISMG接收
②归属ISMG对接收到的消息返回响应
③归属ISMG在本地查询不到要连接的SP,向GNS发路由请求信息。CMPP_MO_ROUTE
④GNS将路由信息返回。CMPP_MO_ROUTE_RESP
⑤归属ISMG根据路由信息将请求转给接入ISMG。CMPP_FWD
⑥接入ISMG响应。CMPP_FWD_RESP
⑦接入ISMG将请求信息送给SP。CMPP_DELIVER
⑧SP响应。CMPP_DELIVER_RESP
短信接收MT(下行)
短信接收是指用户从SP接收下发的消息的过程,其中①到⑥使用了CMPP协议。
①SP发出数据请求(短信通知等),被接入ISMG接收。CMPP_SUBMIT
②接入ISMG对接收到的消息返回响应。CMPP_SUBMIT_RESP
③接入ISMG在本地查询不到目的手机号段所对应的网关代码,向GNS发路由请求信息。CMPP_MT_ROUTE
④GNS将路由信息返回。CMPP_MT_ROUTE_RESP
⑤接入ISMG根据路由信息将请求转给归属ISMG。CMPP_FWD
⑥归属ISMG响应。CMPP_FWD_RESP
⑦归属ISMG将请求信息发送至SMC。
⑧SMC向归属ISMG返回响应。
路由
在短信发送和接收中存在两次路由过程:
- 短信发送过程中,用户归属SMSC到SP的路由
- 短信接收过程中,SP到用户归属SMSC的路由
其中路由信息由省内ISMG和GNS进行维护。
GNS |
查询前转网关的地址,包括:
|
省内ISMG |
查询SP和SMSC的地址
|
三、CMPP连接方式
长连接
在TCP连接保持期间,可以连续发送多个数据包,如果没有数据包发送,需要双方发链路检测包,以维持此连接。
当信道上没有数据传输时,通信双方应每隔时间C发送链路检测包以维持此连接,当链路检测包发出超过时间T后未收到响应,应立即再发送链路检测包,再连续发送N-1次后仍未得到响应则断开此连接。(建议取值:C=3分钟,T=60秒,N=3)
消息采用并发方式发送,加以滑动窗口流量控制,即接收方在应答前一次收到的消息多于窗口大小条W将予以拒绝。
长连接多用于操作频繁,点对点的通讯,且连接数不能过多。
短连接
通信双方有数据交互时,建立一个TCP连接,数据发送完后,断开此TCP连接,即每次TCP连接只完成一对CMPP消息的发送。应答与请求在同一个连接中完成,完成一次操作后关闭此连接。
网关与SP之间,网关之间的消息发送后等待T秒后未收到响应,应立即重发,再发送N-1次后仍未得到响应则应停发。(建议取值:T=60秒,N=3)
短连接多用于并发量大,用户无需频繁操作的场景。
端口号
端口号 |
连接方式 |
7890 |
长连接(SP与ISMG之间) |
7900 |
短连接(SP与ISMG之间) |
7930 |
长连接(ISMG之间) |
9168 |
短连接(ISMG与GNS之间) |