1、中国网通PHS短消息网关技术规范第三分册中国网络通信集团公司企业标准PHS短消息技术规范第三分册 短消息中心外部接口协议(CNPP) V2.02004-3-12发布 2004-3-12实施中国网络通信集团公司 发布目 录前 言 11. 适用范围 22. 引用标准 23. 缩略语 24. 协议概述 34.1 系统网络结构示例 34.2 协议功能 44.3 CNPP协议定义 44.4 协议栈 54.5 通信方式 54.5.1 长连接 64.5.2 短连接 84.6 会话流程 94.6.1 登录模式 94.6.2 典型流程 104.6.2.1 发送模式 104.6.2.2 接收模式 114.6.2.
2、3 收发模式 125. CNPP PDU定义 135.1 PDU列表 135.1.1 ESME到SMSC的消息 135.1.2 SMSC到ESME的消息 135.2 基本数据类型 155.3 PDU结构 155.4 PDU头格式 155.5 PDU体结构 165.5.1 BIND命令 165.5.1.1 BIND_RECEIVER语法 165.5.1.2 BIND_RECEIVER_RESP语法 165.5.1.3 BIND_TRANSMITTER语法 175.5.1.4 BIND_TRANSMITTER_RESP语法 175.5.1.5 BIND_TRANSCEIVER语法 175.5.1.
3、6 BIND_ TRANSCEIVER _RESP语法 175.5.2 UNBIND命令 175.5.2.1 UNBIND语法 175.5.2.2 UNBIND _RESP语法 185.5.3 GENERIC_NACK命令 185.5.3.1 GENERIC_NACK语法 185.5.4 SUBMIT_SM命令 185.5.4.1 SUBMIT_SM语法 185.5.4.2 SUBMIT_SM_RESP语法 205.5.5 SUBMIT_MULTI命令 205.5.5.1 SUBMIT_MULTI语法 205.5.5.2 SUBMIT_MULTI_RESP语法 225.5.6 DELIVER_
4、SM命令 235.5.6.1 DELIVER_SM语法 235.5.6.2 DELIVER_SM_RESP语法 245.5.7 DATA_SM命令 255.5.7.1 DATA_SM语法 255.5.7.2 DATA_SM_RESP语法 265.5.8 QUERY_SM命令 265.5.8.1 QUERY_SM语法 265.5.8.2 QUERY_SM_RESP语法 275.5.9 CANCEL_SM命令 275.5.9.1 CANCEL_SM语法 275.5.9.2 CANCEL_SM_RESP语法 285.5.10 REPLACE_SM命令 285.5.10.1 REPLACE_SM语法
5、285.5.10.2 REPLACE_SM_RESP语法 295.5.11 ENQUIRE_LINK命令 305.5.11.1 ENQUIRE_LINK语法 305.5.11.2 ENQUIRE_LINK_RESP语法 305.5.12 ALERT_NOTIFICATION命令 305.5.12.1 ALERT_NOTIFICATION语法 306. 状态报告 317. 参数数值定义 327.1 command_id数值定义 32前 言本标准描述了PHS短消息中心(SMSC)和外部短消息实体(ESME)之间的通信协议。本协议简称CNPP(China Netcom Short Message P
6、eer to Peer Protocol)。本标准是PHS短消息网关技术规范的系列规范之一,该系列规范的名称如下:PHS短消息网关技术规范 第一分册:短消息网关与服务提供商(SP)接口规范(CNGP);PHS短消息网关技术规范 第二分册:短消息网关与计费中心接口规范;PHS短消息网关技术规范 第三分册:短消息中心外部接口协议(CNPP);PHS短消息网关技术规范 第四分册:短消息网关设备规范;PHS短消息网关技术规范 V2.0说明。本标准起草单位:中国网络通信集团公司、中国网通集团研究院本标准主要起草人:张文钺、李松林、蒋美景、叶丹、潘海鹏、王志军本规范的解释权属于中国网络通信集团公司。1适用
7、范围本规范规定了PHS通信网外部短消息实体(ESME)与短消息中心(SMSC)之间通信协议的技术细节。本规范主要适用于PHS通信网外部短消息实体(ESME)和短消息中心(SMSC),为短消息中心(SMSC)接入外部短消息实体(ESME)提供技术依据。2引用标准 SMPP (Short Message Peer to Peer Protocol Specification) v3.43缩略语英文缩写英文全称说明ESMEExternal Short Message Entity外部短消息实体PDUProtocol Data Unit协议数据单元SMEShort Message Entity短消息实
8、体SMPPShort Message Peer to Peer短消息点对点协议SMSCShort Message Service Center短消息中心ACKAcknowledgement确认应答NACKNegative Acknowledgement否认应答CDRCall Detail Record详细呼叫记录APIApplication Programming Interface应用编程接口SMGWShort Message Gateway短消息网关PSPersonal Station用户终端SSSecretary System秘书台ASAuto System自动台注:在本规范中,ESME
9、泛指那些处在PHS通信网外的短消息源或者接收实体,如SMGW,SS,AS,语音邮箱系统和消息处理计算机等。SME则位于PHS通信网内,一般就指用户终端(PS)。4协议概述本规范规定了SMSC和ESME之间通信的数据格式。本规范是在SMPP3.3协议的基础上,经过扩展而成。4.1 系统网络结构示例图1 SMSC和ESME连接的短消息系统网络图SMSC指短消息中心。ESME在本规范中指的是通过本规范规定的协议与SMSC通信,请求特定的短消息服务的功能实体。SMGW指短消息网关。VMS指语音邮箱系统。SS指人工话务接入并受理短消息服务请求的系统。AS指利用交互式语音技术受理短消息服务请求的系统。SM
10、GW、VMS、SS和AS是典型的ESME。SMSC和ESME之间基于TCP/IP协议进行通信。4.2 协议功能通过本规范,一个外部短消息实体ESME可以在TCP/IP连接之上与SMSC建立应用层连接。通过该连接,ESME与SMSC之间可以互相发送和接收短消息。此外,ESME还可以查询、取消和替代短消息。 CNPP可以实现的功能举例如下:1. ESME通过SMSC向一个或多个目的地址发送短消息2. ESME可以通过SMSC从其他的SME(如用户终端)接收短消息3. 查询存储在SMSC的短消息的状态4. 取消或替代存储在SMSC的短消息5. 设定短消息的发送日期和时间6. 选择短消息的模式,即数据
11、报或者存储转发7. 设置短消息发送的优先级8. 定义短消息的数据编码类型9. 设置短消息的有效期限4.3 CNPP协议定义CNPP协议是一个数据报方式的交互式协议,通过TCP/IP协议传递数据。ESME和SMSC之间通过交换请求和应答PDU来进行通信。本规范定义了:1. ESME和SMSC之间交互的命令集以及与之相关的PDU。2. ESME和SMSC在CNPP命令里交换的数据。在CNPP里,每一个命令都由一个请求PDU和一个应答PDU组成。接收方对于每一个CNPP PDU请求,都必须返回一个应答。唯一的例外是:alter_notification没有应答PDU。ESME和SMSC之间的交互消息
12、可以归类为如下的两个部分:(1) ESME到SMSC的消息(2) SMSC到ESME的消息4.4 协议栈CNPP标准以TCP/IP作为底层通信承载,具体结构由图2所示:图2 CNPP协议栈4.5 通信方式ESME和SMSC之间进行信息交互时,SMSC作为服务器端,ESME作为客户端建立连接,可以采用长连接方式,也可以采用短连接方式。所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发链路检测消息以维持此连接。短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,即每次TCP连接只完成一对CNPP消息的发
13、送。基于效率上的考虑,建议使用长连接方式。4.5.1 长连接通信双方以客户-服务器方式建立TCP连接,用于双方信息的相互提交。当信道上没有数据传输时,通信双方应每隔时间C发送链路检测消息以维持此连接,当链路检测消息发出超过时间T后未收到应答,应立即再发送链路检测消息,再连续发送N-1次后仍未得到应答则断开此连接。参数C、T、N原则上应可配置,现阶段建议取值为:C=3分钟,T=60秒,N=3。ESME和SMSC之间的消息发送后等待T秒后未收到应答,应立即重发,再连续发送N-1次后仍未得到应答则停发。现阶段建议取值为:T=60秒,N=3。消息采用并发方式发送,加以滑动窗口流量控制,窗口大小参数W可
14、配置,现阶段建议为16,即接收方在应答前一次收到的消息最多不超过16条。长连接的操作流程举例如图3所示:图3 长连接 4.5.2 短连接通信双方以客户-服务器方式建立TCP连接,应答与请求在同一个连接中完成。系统采用客户/服务器模式,操作以客户端驱动方式发起连接请求,完成一次操作后关闭此连接。ESME和SMSC之间的消息发送后等待T秒后未收到应答,应立即重发,再连续发送N-1次后仍未得到应答则停发。现阶段建议取值为:T=60秒,N=3。短连接的操作流程举例如图4所示:图4 短连接的操作流程4.6 会话流程4.6.1 登录模式在CNPP标准的一个会话中ESME可以采用三种方式与SMSC相连:发送
15、模式(Transmit Mode)、接收模式(Receive Mode)和收发模式(Transceiver Mode)。在发送模式中ESME只能发送短消息、在接收模式中ESME只能接收短消息、在收发模式中ESME既可以发送也可以接收短消息。三种模式均可以采用长连接与短连接两种连接方式的一种,根据实际情况选择。4.6.2 典型流程4.6.2.1 发送模式图5 ESME以发送模式连接到SMSC图5描述了一个典型的发送模式下的请求应答序列。ESME以发送模式连接到SMSC。ESME向SMSC发起提交短消息,查询短消息状态,删除短消息等请求,SMSC返回请求的应答。ESME和SMSC之间的请求应答消息
16、可以是阻塞方式也可以是异步方式的。所以ESME可能在SMSC没有应答的情况下,发起多个请求到SMSC。SMSC应该按照收到的请求顺序,给ESME回响应。但是ESME必须能够处理没有按顺序的响应。4.6.2.2 接收模式图6 ESME以接收模式连接到SMSC图6描述了一个典型的接收模式下的消息序列。ESME以接收模式连接到SMSC。SMSC向此类ESME转发短消息,ESME向SMSC回应答。ESME和SMSC之间的请求应答消息可以是阻塞方式也可以是异步方式的。所以SMSC可能在ESME没有回应答的情况下,发送发起多个deliver_sm请求到ESME。ESME应该按照收到的请求顺序,给SMSC返
17、回响应。但是SMSC必须能够处理没有按顺序回的响应。4.6.2.3 收发模式图7 ESME以收发模式连接到SMSC图7描述了一个典型的收发模式下的请求应答序列。ESME以收发模式连接到SMSC。ESME向SMSC发起提交短消息,查询短消息状态,删除短消息等请求,SMSC返回请求的应答;SMSC向ESME转发短消息,ESME向SMSC回应答。ESME和SMSC之间的请求应答消息可以是阻塞方式也可以是异步方式的。所以ESME可能在SMSC没有应答的情况下,发起多个请求到SMSC。反之亦然。SMSC应该按照收到的请求顺序,给ESME回响应。但是ESME必须能够处理没有按顺序的响应。反之亦然。5CNP
18、P PDU定义5.1 PDU列表5.1.1 ESME到SMSC的消息命令描述实现级别bind_receiverESME要求以接收模式连接到SMSC必选bind_transmitterESME要求以发送模式连接到SMSC必选bind_transceiverESME要求以收发模式连接到SMSC必选unbindESME要求断开连接到SMSC必选generic_nack表示消息头有错误的响应必选submit_smESME提交短消息到SMSC,以便SMSC下发此短消息到指定的用户终端必选submit_multiESME提交一条短消息到SMSC,SMSC下发此短消息到多个接收者,或者一个或多个发布列表必选
19、deliver_sm_respdeliver_sm的响应必选data_smESME请求SMSC发送短消息到用户终端可选data_sm_respdata_sm的响应消息可选query_smESME查询以前所提交的短消息的状态必选cancel_smESME要求取消以前所提交的某条短消息必选replace_smESME要求替换以前所提交的某条短消息必选enquire_link询问与SMSC的连接情况必选表1 ESME到SMSC的消息5.1.2 SMSC到ESME的消息 命令描述实现级别bind_receiver_respbind_receiver的响应,status表示连接成功与否必选bind_tr
20、ansmitter_respbind_transmitter的响应,status表示连接成功与否必选bind_transceiver_respbind_transceiver的响应,status表示连接成功与否必选unbind_respunbind的响应,status表示断开连接成功与否必选generic_nack表示消息头有错误的响应必选submit_sm_respsubmit_sm的响应,status表明提交短消息是否成功必选submit_multi_respsubmit_multi的响应。必选deliver_smSMSC下发短消息到ESME必选data_smSMSC将用户终端发送的短消息
21、传递到ESME可选data_sm_respdata_sm的响应消息可选query_sm_respquery_sm的响应,status表明此次询问是否成功,其它内容返回查询到的短消息信息必选cancel_sm_respcancel_sm的响应。Status表明取消短消息是否成功必选replace_sm_respreplace_sm的响应,status表明此次替换是否成功必选enquire_link_respenquire_link的响应必选alert_notification由SMSC产生发送给ESME,该消息无响应消息可选表2 SMSC到ESME的消息5.2 基本数据类型类型说明Integer
22、无符号整数C-Octet String以NULL结尾的ASCII字符串C-Octet String(Decimal)与C-Octet String不同的是,串中的每个字符为ASCII码中的0-9。C-Octet String(Hex)与C-Octet String不同的是,串中的每个字符为ASCII码中的0-9,A-F。Octet String不需以NULL结尾的字符串。5.3 PDU结构项目说明格式Message Header消息头(所有消息公共包头)定长Message Body消息体(必选部分)变长Message Body消息体(可选部分)TLV5.4 PDU头格式字段名字节数类型描述co
23、mmand_length4IntegerPDU总长度(含消息头及消息体)command_id4Integer这个字段表明此条短消息的类型,例如submit_sm表示此消息为ESME向SMSC提交短消息,取值见6.1command_status4Integer此字段表示一个命令的成功与失败,如失败,指示引起失败的错误类型等信息,它在请求中必须设为NULL(参见第7.2节 status错误代码表)sequence_number4Integer消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)5.5 PDU体结构5.5.1 BIND命令5.5.1.1 BIND_RECEI
24、VER语法此命令用于ESME以接受者的方式与SMSC之间建立虚连接。连接建立后,ESME可以从SMSC接受短消息,并发送CNPP响应消息给SMSC。消息头中的command_id是“bind_receiver”。消息体定义如下:字段长度(字节)数据类型说明system_id最大16C-Octet String需要与SMSC连接的ESME标识password最大9C-Octet String密码system_type最大13C-Octet String系统类型interface_version1Integer接口版本号addr_ton1Integer地址编码类型,不使用置为0addr_npi1I
25、nteger地址编码方案,不使用置为0address_range最大41C-Octet String地址范围,不使用置为NULL5.5.1.2 BIND_RECEIVER_RESP语法此命令是BIND_RECEIVER的响应消息。消息头中的command_id是“bind_receiver_resp”。消息体定义如下:字段长度(字节)数据类型说明system_id最大16C-Octet StringESME请求连接的SMSC标识5.5.1.3 BIND_TRANSMITTER语法此命令用于ESME以发送者的方式与SMSC之间建立虚连接。连接建立后,ESME可以发送短消息到SMSC,并接受SMS
26、C的CNPP响应消息。消息头中的command_id是“bind_transmitter”。消息体的定义与BIND_RECEIVER相同。5.5.1.4 BIND_TRANSMITTER_RESP语法此命令是BIND_TRANSMITTER的响应消息。消息头中的command_id是“bind_transmitter_resp”。消息体的定义与BIND_RECEIVER_RESP相同。5.5.1.5 BIND_TRANSCEIVER语法此命令用于ESME以收发者的方式与SMSC之间建立虚连接。连接建立后,ESME可以发送短消息到SMSC,也可以从SMSC接受短消息。消息头中的command_i
27、d是“bind_transceiver”。消息体的定义与BIND_RECEIVER相同。5.5.1.6 BIND_ TRANSCEIVER _RESP语法此命令是BIND_ TRANSCEIVER的响应消息。消息头中的command_id是“bind_transceiver_resp”。消息体的定义与BIND_RECEIVER_RESP相同。5.5.2 UNBIND命令5.5.2.1 UNBIND语法此命令用于断开ESME和SMSC之间的连接。消息头中的command_id是“unbind”。此消息没有消息体。5.5.2.2 UNBIND _RESP语法此命令是UNBIND的响应消息。消息头中
28、的command_id是“unbind_resp”。没有消息体。5.5.3 GENERIC_NACK命令5.5.3.1 GENERIC_NACK语法此命令用于当接收消息头有错误的时候发送的否定响应。该消息只能由收到请求的一方发出。此消息没有消息体。5.5.4 SUBMIT_SM命令5.5.4.1 SUBMIT_SM语法 ESME用此命令消息向SMSC提交短消息,以便SMSC将短消息发给指定的SME。ESME也可用此命令发送状态报告消息。 消息头中的command_id是“submit_sm”。消息体定义如下:字段长度(字节)数据类型说明service_type最大6C-Octet String
29、短消息服务类型。如果使用SMSC的默认值,设置为NULL。source_addr_ton1Integer源地址编码类型。如果不知道源地址的编码类型,设置为0。source_addr_npi1Integer源地址编码方案。如果不知道源地址的编码方案,设置为0。source_addr最大21C_Octet String源地址。如果不知道源地址,设置为NULL。dest_addr_ton1integer目的地址编码类型dest_addr_npi1integer目的地址编码方案destination_addr最大21C_Octet String目的地址。esm_class1integer短消息类型xx0000xx:普通短消息xx0001xx:此消息为状态报告消息其它:保留protocol_id1integer协议类型priority_flag1integer优先级(从0到3)3为最高级schedule_delivery_time1或者17C_Octet String计划下发短消息的时间。可以是绝对时间或相对时间,如果立即发送,设置为NULLvalidity_peroid1或者17C_Octet String短消息的有效期限,可以是绝对时间或相对时间,如果使用SMSC的默认有效期限,设置为NU
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1