SGIP协议详情13Word文档格式.docx
《SGIP协议详情13Word文档格式.docx》由会员分享,可在线阅读,更多相关《SGIP协议详情13Word文档格式.docx(70页珍藏版)》请在冰点文库上搜索。
SMG与SMSC之间的通信统一采用SMPP3.3协议。
图2-1说明了系统的体系结构。
图2-1SMG的体系结构
和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
SMG从SMSC接收到短消息,直接发给SP。
比如
SMSC1A—〉SMG1—〉SP1Y
SMSC1B—〉SMG1—〉SP1X
消息从本地SP到本地SMSC
SMG从SP接收短消息,直接发给SMSC。
SP1X—〉SMG1—〉SMSC1A
SP1Y—〉SMG1—〉SMSC1B
消息从本地SMSC到异地SP
SMG从本地SMSC接收短消息,再路由到异地SMG,由异地的SMG发送到目的SP,比如
SMSC1A—〉SMG1—〉SMG2—〉SP2Y
SMSC1B—〉SMG1—〉SMG3—〉SP3X
消息从本地SP到异地SMSC
SMG从本地SP接收短消息,再路由到异地SMG,由异地的SMG发送到目的SMSC,比如
SP1X—〉SMG1—〉SMG2—〉SMSC2A
SP1Y—〉SMG1—〉SMG3—〉SMSC3B
路由选择
当消息在本地SMSC和异地SP,或者在本地SP和异地SMSC之间传输时,发送方必须要获取消息接收方的位置信息。
这局部功能称为路由选择。
对于MO方向的命令(即命令接收方为SP),其路由根据命令中的SP接入来选择。
对于MT方向的命令(即接收方为用户手机),其路由根据命令中的付费和用户来综合判断。
如果付费为空,或付费为SP接入,如此根据用户来选择路由;
否如此根据付费所代表的手机来选择路由(这样做是考虑到了系统计费和用户鉴权的可行性,关于计费和用户鉴权的细节,请参见其它文档)。
由于SMG网关之间采用网状互联,网关之间不可能出现二次前转,因此接收前转消息的网关必须能判断前转的消息目的地址是否是本网关覆盖X围的用户,假如不是,必须发送出错信息到前转网关。
3通信流程
SGIP有两种具体实现方式,一种是采用专用SGIP方式,另一种是采用通用HTTP方式。
SMG和GNS、以与SMG和SMG之间采用专用SGIP方式作为承载协议;
而SP和SMG的通信同时支持专用SGIP方式和通用HTTP方式两种承载协议。
专用SGIP方式
采用专用SGIP方式承载时,通信双方互为客户端和服务器端。
当客户端要发送命令时,主动向服务器端建立连接,然后向服务器端发送命令,并接收应答;
服务器端从客户端接收命令,返回应答。
连接建立以后,客户端可以连续发送多条命令。
命令发送完并接收到所有应答后,客户端应该主动断开连接。
但是,命令与其应答之间的时间间隔最大不能超过30秒(默认,可配置)〔如果命令应答时间超过最大等待时间,如此要求客户端重发该条命令,重发机制参见业务联网规X有关内容〕,且待应答的命令不得超过32条〔可以根据线路的质量和服务器的处理能力配置〕。
而且,如果服务器端检测出一条连接长时间空闲(默认60秒,可配置),可以主动断开该连接。
如果需要,客户端可以同时向一个服务器端建立多个连接〔SMG与单个其他SMG最多不能建立超过15个连接,对与之相连的单个SP的最某某接数视具体情况而定〕。
采用专用SGIP承载方式时,SMG和SMG、SP和SMG之间使用的端口号是8801,GNS监听SMG的端口号为8802,SMG监听GNS的端口号为8803,主GNS和备用GNS之间的端口号为8804,SMG之间的测试用端口号为8810。
通用HTTP方式
HTTP承载方式只适用于SP和SMG的通信中。
与SP与SMG之间的专用SGIP承载方式不同的是,该种方式一次连接仅仅传送一条命令,而且连接的认证采用HTTP的URL的授权认证的方式,不需要专门的连接认证的命令,使用的端口号是80。
通信节点编号规如此
在整个网关系统中,所有的通信节点(SMG、GNS、SP和SMSC)都有一个唯一的数字编号,不同的SP或SMSC或SMG或GNS编号不能一样,编号由系统管理人员负责分配。
编号规如此如下:
SMG的编号规如此:
1AAAAX
SMSC的编号规如此:
2AAAAX
SP的编号规如此:
3AAAAQQQQQ
GNS的编号规如此:
4AAAAX
其中,
AAAA表示四位长途区号(不足四位的长途区号,左对齐,右补零),X表示1位序号,QQQQQ表示5位企业代码。
序列号的定义
短消息网关系统之中传输的每一条命令都有一个序列号,序列号由命令源节点产生并唯一标记一条命令;
也就是说,网关系统中任何两个命令的序列号都不一样。
需要注意的是,一条命令在发送过程中转发的不同副本视为一条命令,使用一样的序列号。
比如,SP1X向SMSC2A发送一条命令,该命令需经过屡次转发才能到达SMSC2A,而转发该命令的每一次通信过程中使用的命令的序号均一样,为SP1X与SMG1通信所使用的序列号。
对于MO短消息,例如SMSC1B向SP3X发送一条命令,短消息首先采用SMPP协议发送到SMG1,经过SMG1转发时序列号必须由SMG1重新生成〔此时命令源节点为SMG1〕。
序列号分成三局部,每局部为一个32位整数,第一局部表示命令源节点的编号,第二局部表示命令产生的日期和时间(网关系统中的任何命令的保存时间都不应该超过一年),格式为十进制的mmddhhmmss,比如11月20日20时32分25秒产生的命令,其第二局部为十进制1120203225;
第三局部由0开始,循环进位,直到进位满了之后再清零,重新开始计数。
接收方在返回应答时,应答的序列号必须和相对应的命令的序列号一样。
图3-1命令序列号格式举例
通信的安全性
SP与SMG、SMG与SMG以与SMG与GNS之间采用专用SGIP方式通信时可采用对称加密方式。
SP与SMG之间采用通用HTTP方式时,可采用HTTPS方式加密。
用户鉴权
当一条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发送失败的原因。
SMG和计费中心通过TCP/IP通信实现鉴权功能。
计费中心为服务器端,SMG为客户端。
一次鉴权过程完成对一个手机的鉴权。
鉴权步骤如下:
1.SMG和计费中心建立TCP/IP连接;
2.SMG向计费中心发送鉴权命令;
3.SMG从计费中心接收鉴权应答;
4.SMG和计费中心断开连接;
消息
描述
CheckUser
SMG向计费中心请求对一个手机鉴权
CheckUser_Resp
计费中心向SMG返回的一个手机的鉴权结果
表3-1SMG和计费中心的鉴权消息
3.7SP与SMG的通信
SP和SMG支持两种类型的通信承载方式:
通用HTTP承载方式和通用SGIP承载方式。
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版。
HTTP承载方式使用如下命令:
.1从SP到SMG的命令
Submit
SP用该消息向SMG请求向某一个短消息用户发送短消息
Trace
SP用该消息向SMG请求跟踪某一条MT短消息的状态
表3-2从SP到SMG的命令
.2从SMG到SP的命令
Deliver
SMG发送一条短消息到SP
Report
SMG用该命令通知SP一条Submit命令所发送的MT当前结果
UserRpt
SMG用该命令报告SP一条手机用户的状态
表3-3从SMG到SP的命令
SP和SMG之间的通信由客户端向服务器端发起连接。
连接建立以后,由客户端向服务器端发送命令,服务器端必须对接收到的每一条命令返回一条应答消息。
SP和SMG互为客户端和服务器端。
.1通信初始化
客户端有命令要向服务器端发送时,由客户端首先通过Bind命令向服务器端发起连接。
服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进展验证,然后返回一条Bind_Resp应答给客户端。
如果验证通过,如此客户端和服务器端的通信开始,否如此中断连接。
.2通信过程
SP与SMG之间发送的任何一条命令都带有一个序列号,序列号由命令源产生。
客户端与服务器端通信开始以后,客户端可以向服务器端发送相应的命令,服务器端对收到的命令返回应答。
图3-2SP和SMG的通信消息样例(SP为客户端)
图3-3SP和SMG的通信消息样例(SMG为客户端)
命令在SP和SMSC之间的传输是采用类似接力的方式,每条命令和对应的应答仅仅表示该次命令发送的结果是否正确。
比如,SP向某一个手机发送一条短消息,是通过向本地SMG发送一条Submit命令实现的,随后,SP会从SMG接收到一条Submit_Resp应答。
但是,即使应答表示Submit命令已正确接收,也不表示Submit命令内的短消息已经发送到手机上了,而仅仅表示该短消息已经传送到SMG,SMG将会作下一步处理,或者发送给SMSC,或者路由到另外的SMG,最终由目的SMSC发送到手机上。
这中间任何一个环节出现错误,系统会终止信息的继续发送,并且通过向原SP发送Report命令告诉发送出错的原因(如果SP指定要求反应的话)。
.3通信完毕
如果客户端认为和服务器端的通信已完毕,如此客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。
.4故障处理
发生故障时,SP、SMG以与GNS节点应通过Report命令和其它相关命令的应答相结合返回故障原因;
如果MO不成功,该用户所属的SMG还应向用户终端返回友好的应答信息说明不成功原因。
网络故障
客户端与服务器端的通信过程中如果检测到双方连接中断(如网络断线),客户端应该断开连接,然后尝试重新向服务器端建立新的连接;
服务器端应该按照接收到Unbind的情况进展处理,断开和客户端的连接。
接收到非法命令或应答
如果服务器端接收到的命令语法错误,比如命令不完整、命令无法识别等,如此断开和客户端的连接;
客户端应该向服务器端建立新连接继续发送命令。
如果客户端接收到的应答语法错误,比如命令不完整、命令无法识别等,如此主动断开和服务器端的连接;
服务器端也应该断开和客户端的连接。
如果命令语法正确,但服务器端不处理该命令,比如SP为服务器端时收到Submit命令,如此返回相应应答,并在应答中指定错误原因。
如果应答语法正确,但客户端不处理该应答,比如SP为客户端时收到Deliver_Resp应答,如此丢弃。
序列号重复
如果命令的序列号和以前接收到的命令的序列号一样,且命令内容也一样,如此接收方丢弃该命令;
如果序列号一样,但是命令内容并不一样,如此命令接收方在应答中返回错误码。
.5从SP到SMG的消息
适用方式
Bind
SP为客户端
SP用该消息向SMG发出建立连接的请求
Bind_Resp
SP为服务器
SP对Bind命令的应答
Unbind
SP用该消息向SMG通知将要断开现有的连接
Unbind_Resp
SP对Unbind命令的应答
SP用该消息向SMG请求发送短消息
Deliver_Resp
SP为服务器端
SP用该消息对从SMG接收到的Deliver命令作出应答
Report_Resp
SP对从SMG接收到的Report命令作出应答
UserRpt_Resp
SP对从SMG接收到的UserRpt命令作出应答
表3-4从SP到SMG的消息
.6从SMG到SP的消息
SMG为客户端
SMG用该消息向SP发出建立连接的请求
SMG为服务器端
SMG对Bind命令的应答
SMG用该消息向SP通知将要断开现有的连接
SMG对Unbind命令的应答
Submit_Resp
SMG对Submit命令的应答
SMG用该命令通知SP一条手机用户的状态信息
Trace_Resp
SMG对Trace命令的应答
表3-5从SMG到SP的消息
3.8SMG与SMG之间的通信
在网关系统之中,任何两个SMG之间都要建立一对基于TCP/IP的连接,以实现命令的路由。
两个SMG互为客户端和服务器端,客户端向服务器端发送命令,接收应答;
图3-4SMG之间的通信消息样例
通信初始化
SMG与SMG通信时,由客户端首先通过Bind命令向服务器端发起连接。
通信过程
两个SMG之间的通信和SP和SMG之间的基于TCP/IP的承载方式的通信方式一样。
通信完毕
故障处理
SMG之间的故障处理和SP与SMG之间的故障处理一样。
两个SMG之间的消息
客户端向服务器端请求连接
服务器端对接收到的Bind命令的响应
客户端向服务器端通知断开当前的连接
服务器端对接收到的Unbind命令的响应
客户端向服务器端发送一条MT短消息
服务器端向从客户端接收到的Submit命令发送的应答消息
客户端向服务器端发送一条MO短消息
服务器端向从客户端接收到的Deliver命令发送的应答消息
客户端向服务器端发送一条MT或MO的发送结果
服务器端向从客户端接收到的Report命令发送应答消息
客户端向服务器端发送一条手机用户的状态信息
服务器端向从客户端接收到的UserRpt命令发送应答消息
客户端向服务器端发送请求跟踪某一条MT短消息状态的信息
服务器端向从客户端接收到的Trace命令发送应答消息
表3-6SMG之间的消息
3.9SMG与GNS之间的通信
在网关系统之中,任何一个SMG都要和GNS以互为客户端/服务器的方式建立连接来完成路由表的更新和维护。
当SMG对本地的路由表作修改后,需要主动以客户端的身份向GNS建立连接,通知GNS更新路由表;
当GNS修改了路由表后,需要主动以客户端的身份向所有的SMG建立连接,通知SMG更新路由表。
SMG与GNS通信时,由客户端首先通过Bind命令向服务器端发起连接。
客户端和服务器端建立连接以后,客户端向服务器端发送命令,服务器端如此返回应答。
SMG和GNS的故障处理和SP与SMG之间的故障处理一样。
从SMG到GNS的消息
SMG向GNS端请求连接
SMG向GNS端通知断开当前的连接
AddSP
SMG通知GNS添加了一个SP
AddSP_Resp
SMG对AddSP命令的应答
ModifySP
SMG通知GNS修改了一个SP
ModifySP_Resp
SMG对ModifySP命令的应答
DeleteSP
SMG通知GNS删除了一个SP
DeleteSP_Resp
SMG对DeleteSP命令的应答
AddTeleSeg
SMG通知GNS添加了一个段
AddTeleSeg_Resp
SMG对AddTeleSeg命令的应答
ModifyTeleSeg
SMG通知GNS修改了一个段
ModifyTeleSeg_Resp
SMG对ModifyTeleSeg命令的应答
DeleteTeleSeg
SMG通知GNS删除了一个段
DeleteTeleSeg_Resp
SMG对DeleteTeleSeg命令的应答
QueryRoute
SMG向GNS请求一个手机号或接入的路由信息,或全部路由表信息
QueryRoute_Resp
SMG对QueryRoute命令的应答
表3-7从SMG到GNS的消息
从GNS到SMG的消息
GNS为客户端
GNS向SMG端请求连接
GNS为服务器端
GNS对Bind命令的应答
GNS向SMG端通知断开当前的连接
GNS对Unbind命令的应答
GNS通知SMG添加了一个SP
GNS对AddSP命令的应答
GNS通知SMG修改了一个SP
GNS对ModifySP命令的应答
GNS通知SMG删除了一个SP
GNS对DeleteSP命令的应答
GNS通知SMG添加了一个段
GNS对AddTeleSeg命令的应答
GNS通知SMG修改了一个段
GNS对ModifyTeleSeg命令的应答
GNS通知SMG删除了一个段