中国联合通信公司短消息网关系统接口协议1.1版 误,系统会终止信息的继续发送,并且通过向原SP发送Report命令告诉发送出错的原因(如果SP指定要求反馈的话)。
3.7.2.3通信结束
如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。
3.7.2.4故障处理
发生故障时,SP、SMG以及GNS节点应通过Report命令和其它相关命令的应答相结合返回故障原因;如果MO不成功,该用户所属的SMG还应向用户终端返回友好的应答信息说明不成功原因。
3.7.2.4.1网络故障
客户端与服务器端的通信过程中如果检测到双方连接中断(如网络断线),客户端应该断开连接,然后尝试重新向服务器端建立新的连接;服务器端应该按照接收到Unbind的情况进行处理,断开和客户端的连接。
3.7.2.4.2接收到非法命令或应答
如果服务器端接收到的命令语法错误,比如命令不完整、命令无法识别等,则断开和客户端的连接;客户端应该向服务器端建立新连接继续发送命令。
如果客户端接收到的应答语法错误,比如命令不完整、命令无法识别等,则主动断开和服务器端的连接;服务器端也应该断开和客户端的连接。
如果命令语法正确,但服务器端不处理该命令,比如SP为服务器端时收到Submit命令,则返回相应应答,并在应答中指定错误原因。
如果应答语法正确,但客户端不处理该应答,比如SP为客户端时收到Deliver_Resp应答,则丢弃。
注:这里有一个问题,即对于unbind这种消息,依照协议它应该由client发起,但如果由server端首先发起的话,client端是否应任为是非法命令?其实从结果上看应该接受该消息,并断开连接,因为这正是server端马上要做的。但返回非法命令也应该是可以接受的。编程人员可以根据实现的方便任选。
12
中国联合通信公司短消息网关系统接口协议1.1版 3.7.2.4.3序列号重复
如果命令的序列号和以前接收到的命令的序列号相同,且命令内容也相同,则接收方丢弃该命令;如果序列号相同,但是命令内容并不相同,则命令接收方在应答中返回错误码。
注:按照协议的规定,相同内容(包括序列号)的消息应作为重复发送的消息丢弃,这样一来虽然能够减少一些网络通讯量,但有可能引起其他一些问题,比如client端死等回音导致连接中断,而且也不太符合协议中任何消息都是请求应答相对应的原则。所以对于序列号重复的消息通通返回错误也是可以接受的一种做法。
3.7.2.5从SP到SMG的消息
消息 Bind Bind_Resp Unbind Unbind_Resp Submit Deliver_Resp Report_Resp UserRpt_Resp Trace 适用方式 SP为客户端 SP为服务器 SP为客户端 SP为服务器 SP为客户端 SP为服务器端 SP为服务器 SP为服务器 SP为客户端 描述 SP用该消息向SMG发出建立连接的请求 SP对Bind命令的应答 SP用该消息向SMG通知将要断开现有的连接 SP对Unbind命令的应答 SP用该消息向SMG请求发送短消息 SP用该消息对从SMG接收到的Deliver命令作出应答 SP对从SMG接收到的Report命令作出应答 SP对从SMG接收到的UserRpt命令作出应答 SP用该消息向SMG请求跟踪某一条MT短消息的状态 表3-4 从SP到SMG的消息
3.7.2.6从SMG到SP的消息
消息 Bind Bind_Resp Unbind Unbind_Resp Submit_Resp Deliver Report UserRpt Trace_Resp 适用方式 SMG为客户端 SMG为服务器端 SMG为客户端 SMG为服务器端 SMG为服务器端 SMG为客户端 SMG为客户端 SMG为客户端 SMG为客户描述 SMG用该消息向SP发出建立连接的请求 SMG对Bind命令的应答 SMG用该消息向SP通知将要断开现有的连接 SMG对Unbind命令的应答 SMG对Submit命令的应答 SMG发送一条短消息到SP SMG用该命令通知SP一条Submit命令所发送的MT当前结果 SMG用该命令通知SP一条手机用户的状态信息 SMG对Trace命令的应答
13
中国联合通信公司短消息网关系统接口协议1.1版 端 表3-5从SMG到SP的消息
3.8 SMG与SMG之间的通信
在网关系统之中,任何两个SMG之间都要建立一对基于TCP/IP的连接,以实现命令的路由。两个SMG互为客户端和服务器端,客户端向服务器端发送命令,接收应答;服务器端从客户端接收命令,返回应答。
图3-4 SMG之间的通信消息样例
3.8.1通信初始化
SMG与SMG通信时,由客户端首先通过Bind命令向服务器端发起连接。服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进行验证,然后返回一条Bind_Resp应答给客户端。如果验证通过,则客户端和服务器端的通信开始,否则中断连接。
3.8.2通信过程
两个SMG之间的通信和SP和SMG之间的基于TCP/IP的承载方式的通信方式相同。
14
中国联合通信公司短消息网关系统接口协议1.1版 3.8.3通信结束
如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。
3.8.4故障处理
SMG之间的故障处理和SP与SMG之间的故障处理相同。
3.8.5两个SMG之间的消息
消息 Bind Bind_Resp Unbind Unbind_Resp Submit Submit_Resp Deliver Deliver_Resp Report Report_Resp UserRpt UserRpt_Resp Trace Trace_Resp 描述 客户端向服务器端请求连接 服务器端对接收到的Bind命令的响应 客户端向服务器端通知断开当前的连接 服务器端对接收到的Unbind命令的响应 客户端向服务器端发送一条MT短消息 服务器端向从客户端接收到的Submit命令发送的应答消息 客户端向服务器端发送一条MO短消息 服务器端向从客户端接收到的Deliver命令发送的应答消息 客户端向服务器端发送一条MT或MO的发送结果 服务器端向从客户端接收到的Report命令发送应答消息 客户端向服务器端发送一条手机用户的状态信息 服务器端向从客户端接收到的UserRpt命令发送应答消息 客户端向服务器端发送请求跟踪某一条MT短消息状态的信息 服务器端向从客户端接收到的Trace命令发送应答消息 表3-6 SMG之间的消息
3.9 SMG与GNS之间的通信
在网关系统之中,任何一个SMG都要和GNS以互为客户端/服务器的方式建立连接来完成路由表的更新和维护。当SMG对本地的路由表作修改后,需要主动以客户端的身份向GNS建立连接,通知GNS更新路由表;当GNS修改了路由表后,需要主动以客户端的身份向所有的SMG建立连接,通知SMG更新路由表。
3.9.1通信初始化
SMG与GNS通信时,由客户端首先通过Bind命令向服务器端发起连接。服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进行验证,然
15
中国联合通信公司短消息网关系统接口协议1.1版 后返回一条Bind_Resp应答给客户端。如果验证通过,则客户端和服务器端的通信开始,否则中断连接。
3.9.2通信过程
客户端和服务器端建立连接以后,客户端向服务器端发送命令,服务器端则返回应答。
3.9.3通信结束
如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。
3.9.4故障处理
SMG和GNS的故障处理和SP与SMG之间的故障处理相同。
3.9.5从SMG到GNS的消息
适用方式 Bind SMG为客户端 Bind_Resp SMG为服务器端 Unbind SMG为客户端 Unbind_Resp SMG为服务器端 AddSP SMG为客户端 AddSP_Resp SMG为服务器端 ModifySP SMG为客户端 ModifySP_Resp SMG为服务器端 DeleteSP SMG为客户端 DeleteSP_Resp SMG为服务器端 AddTeleSeg SMG为客户端 AddTeleSeg_Resp SMG为服务器端 ModifyTeleSeg SMG为客户端 ModifyTeleSeg_Resp SMG为服务器端 DeleteTeleSeg SMG为客户端 DeleteTeleSeg_Resp SMG为服务器端 QueryRoute SMG为客户端 QueryRoute_Resp SMG为服务器端 消息 描述 SMG向GNS端请求连接 SMG对Bind命令的应答 SMG向GNS端通知断开当前的连接 SMG对Unbind命令的应答 SMG通知GNS添加了一个SP SMG对AddSP命令的应答 SMG通知GNS修改了一个SP SMG对ModifySP命令的应答 SMG通知GNS删除了一个SP SMG对DeleteSP命令的应答 SMG通知GNS添加了一个号码段 SMG对AddTeleSeg命令的应答 SMG通知GNS修改了一个号码段 SMG对ModifyTeleSeg命令的应答 SMG通知GNS删除了一个号码段 SMG对DeleteTeleSeg命令的应答 SMG向GNS请求一个手机号或接入号码的路由信息,或全部路由表信息 SMG对QueryRoute命令的应答 表3-7从SMG到GNS的消息
16