`
yinhj
  • 浏览: 74131 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

CMPP/SGIP协议设计与实现(转贴)

    博客分类:
  • SMS
阅读更多
移动梦网和联通在信都是构建在有中国特色的短信网关部件基础上的,亚信为中国移动设计的CMPP协议规范,中国联通的SGIP规范都是为这个短信网关提供的互联网接口标准,可以看出二者都是借鉴GSM SMPP协议的两种简化版。

CMPP提供了基于TCP的长连接接口和短连接接口标准,SGIP提供了基于TCP和HTTP/TCP的短连接接口标准。CMPP中的短信网关为TCP服务器,通过接收SP发起的TCP连接来发送MT/MO/Report/Resp等消息。SGIP中发送MT/MTResp时是短信网关为TCP服务器,发送MO/MOResp/Report/ReportResp时短信网关作为TCP客户端。

从CMPP协议的文字内容来看,目前所有的短信网关的设计和实现都不标准。这是很有中国特色的,中国人不擅长搞统一的技术标准和规范,任何两个系统之间无论什么接口私下定义一下,就成了。西方人做研究搞技术,涉及到两个对象(包括人)打交道的,就定义一大堆标准和规范,约束各方。大家严格地遵守规范,如果有异议,就有人提议修改标准。很少私下去违反约定的标准来实现某个系统。在通信领域,好不容易出了个协议标准,居然连设计这个标准的厂家也不遵守。中国的法律成千万,遵纪守法的意识折腾那么多年还是上不来。

短连接的标准很简单,建立连接后,发送包,接收响应,发送接受,几个来回,关闭连接就成了。长连接标准需要有链路检测的维持机制(其实这个思想来自不可靠的链路通信,如在数据报基础上保障可靠传输的sync机制)、超时重传和差错重传机制、保障有序的传输机制、重复抛弃(duplication removal)机制、流量控制的滑动窗口(Sliding Window)机制。

CMPP协议文字内容中,每个建立起来的TCP长连接,既可以发送MT的Submit消息,也可以从网关侧发送MO的Deliver/StatusReport消息,每个连接的作用都是同等的。而在实现网关时,为这个问题出了很多个实现方法:亚信网关只允许一个TCP链接来发送MO消息,可以有多个连接来发送MT消息,区分MT链接和MO链接的方法是依据开始发送Connect时的协议版本号,为0是MT,为1是MO。巨搞笑!我真服了亚信那帮人!自己搞的标准,自己不遵守,作为中国的第一大电信集成商,不知道拿什么到Nasdaq上市的。亚信网关还好,什么阴私克、东软的网关,稀奇古怪的东西就更多了。让人怀疑,这不仅仅是技术素养问题了。

反正这么烂的玩意,有些运营商也用,唉,运营商的技术人员素质更差。我到现在都没有弄懂,运营商反复强调他们网关的接受短消息速度是最大每秒10条?要让所有的SP那里限制发送速度。这个数据,不知道他们是怎么得出的?这种政式的命令,让我无数次骂那个作出这么荒谬要求的**的祖宗。你网关处理速度慢,这是一个典型的技术问题,你那边服务器忙不过来,你协议里定义的滑动窗口机制是干吗用的?就是专门用来解决流量控制目的用的。有谁听说过,美国国防部弄出TCP协议后,服务器那边接收不过来,要求客户端限定死,每秒钟最多只能发送多少个数据包没有?这些运营商的技术素养,离国际化的大型企业差的太远太远,还到处臭摆自己500强,真是丢中国人的脸!

最后的结局是各个SP的开发人员,不断地开发好几家网关的接口,就跟求爷爷似的,听着这几个网关供应商和运营商那帮弱智的训斥。

设计CMPP协议模块,需要考虑如下几个需求:
(1)可以人为配置的多个TCP连接,来发送和接受消息(移动最多可允许一个SP建立15个连接)。系统初启时,自动地启动指定个数的连接。运行过程中,任意一个连接崩溃时,自动恢复。
(2)类似心跳消息的长连接维持机制,为每个连接,在最后一个消息的处理结束前,重新启动一个60秒的定时器。如果期间有消息来往,停止定时器,处理完消息后,继续启动定时器。如果60秒超时,重新启动定时器,连续三次超时,关闭这个链接,重新启动建立过程。
(3)超时重发和差错重传。超时重发的原理是发送每个MT消息后,启动一个60秒的定时器,等待网关返回应答。如果超时,继续发送,连续3次都超时都没有应答,关闭连接,启动链路恢复过程。并将这条消息保存到回收队列中,千万别抛弃。差错重传是接受到错误的应答,并且这个错误是由对等通信双方的协议层产生的,那么重新发送这条消息。
(4)滑动窗口机制。可以实现流量控制和有效的负载均衡。滑动窗口大小为16条消息。采用异步方式,一次发送16条消息,并等待应答,每成功一个应答,窗口缩小,然后再从缓存取一个发送,填满窗口。准确的说,CMPP协议中定义的滑动窗口概念不准确,应该叫缩放窗口。因为它并没有实现序列控制问题,只是起到流量控制和异步高效快速发送的目的。相对于Stop-Wait机制来说的。
(5)重复丢弃机制。如果接受到的MO消息是一条重复的,就丢弃这条消息,不能将这条MO消息交给上层。如何判断是重复的呢?通过每条消息的序列号。当然如果网关不维持这个序列号的唯一性和有序性,你只能干瞪眼。
(6)上接口缓存和回收队列。从上层接受短消息,保存到缓存里,这个缓存不要做的太大,超过一定量时,让上层发送短消息接口阻塞。而将缓存技术单独用一个模块来实现。回收队列是储存每个链路崩溃时,处于滑动窗口中等待应答的消息。
(7)有序控制机制。是保障先来的消息,先发送出去,后来的后发,严格地保障先后顺序。是通过序列号和滑动窗口来保障的。实际应用中,倒是不那么严格地关注顺序发送问题。

以上7点是这个协议模块的核心问题。如果,一个CMPP协议模块没有解决这些问题,那是一个残缺不全的实现,上不了桌面的东西。

分享到:
评论
1 楼 moseslg 2011-11-30  
   

相关推荐

    基于Java封装短信协议CMPP/SGIP/SMGP/SMPP的http接口短信发送设计源码

    该项目为Java语言编写的短信发送解决方案,采用CMPP、SGIP、SMGP、SMPP等多种短信协议进行封装,通过提供简单的HTTP接口,实现短信的快速发送。项目包含512个Java源文件,2个XML配置文件,以及1个Git忽略文件、1个...

    cmpp/sgip/smgp插件-wireshark

    2. 在与`init.lua`同目录下加入解压后的文件 3. 修改`init.lua`, 在最后添加: ``` dofile(DATA_DIR.."sgip.lua") dofile(DATA_DIR.."cmppv2.lua") dofile(DATA_DIR.."smgp.lua") ```

    利用CMPP\SGIP协议发送长短信发送格式说明

    利用 CMPP/SGIP 协议发送长短信发送格式说明 本资源摘要信息旨在详细解释利用 CMPP/SGIP 协议发送长短信的格式说明。长短信是一种特殊的短信格式,它允许发送超过 70 个汉字的信息内容,但需要将其拆分成多条短信,...

    CMPP+SGIP+SMGP协议word版本文档

    本资源包提供了CMPP、SGIP和SMGP这三种重要的短信网关协议的Word版本文档,这对于理解和实现移动通讯系统的短信服务至关重要。 首先,CMPP(China Mobile Peer-to-Peer)协议是中国移动设计的一种基于TCP/IP的通信...

    三网(cmpp/sgip/smgp)模拟短信网关

    这是我做银行项目的时候,银行提供的模拟网关。当时用这个做的压力测试,非常好用。直接部署在tomcat里面就行了。而且还是跨平台的。

    cmpp,sgip,smgp 彩信,视频短信发送和接收流程.doc

    介绍了 cmpp sgip smgp协议的彩信,视频短信的的开发流程 包含了pdu编码解析,流程讲解等

    三大运营商短信协议smgp cmpp sgip

    CMPP是中国移动采用的短信协议,主要用于实现SP(Service Provider)与短信中心(SMSC)之间的通信。"cmpp2.0.doc"文档详细阐述了CMPP 2.0版本,这个版本的协议支持多通道连接、高并发处理能力和快速响应,适合大...

    中国电信SMGP,中国移动CMPP,中国联通SGIP短信协议

    3. **中国联通SGIP协议**:SGIP协议是中国联通的短信网关协议,其设计目标是实现高效、可靠、安全的短信传输。SGIP1.2版本是目前广泛使用的,它提供了基本的短信提交、接收、状态报告和上行短信服务,同时具备扩展性...

    TCP服务端(cmpp、sgip压测工具)

    与CMPP类似,本工具的SGIP服务端应答功能可以帮助开发者测试SGIP协议的正确性和效率。 在压力测试方面,"TCPServerPressureTest.exe"可能是一个专门用于测试TCP服务端并发处理能力的应用程序。它能够模拟多个客户端...

    SGIP SMGP CMPP ISAG 网关协议

    SGIP是中国移动设计的一种用于短信中心(SMSC)与业务平台之间交互的协议。它支持短信的发送、接收、查询和报告等功能,具有高效率、可靠性和安全性。SGIP协议基于TCP/IP协议栈,能够处理大规模并发连接,适应移动...

    CMPP,SMGP,SGIP三网发送短信息整合

    CMPP(China Mobile Packet Protocol)、SMGP(Short Message Gateway Protocol)和SGIP(Short Message Service Gataway Protocol)是三大主要的短信传输协议,它们分别由中国移动、中国联通和中国电信采用,用于...

    cmpp smpp cngp smgp sgip短信协议

    在实际工作中,开发者或系统集成者需要根据业务需求选择合适的协议,同时熟悉相应的API接口和开发工具,以实现与各大运营商的短信系统无缝对接。阅读这些文档可以帮助我们理解每种协议的特性和应用场景,从而更好地...

    三大运营商短信接口(CMPP、SGIP、SMGP)

    本资源包包含了三大运营商——中国移动、中国联通和中国电信的短信接口规范,包括CMPP、SGIP和SMGP协议,这些都是实现企业与运营商之间短信通信的基础。 首先,CMPP(China Mobile Short Message Peer-to-Peer)是...

    移动联通电信短信模拟网关大合集(CMPP、SGIP、SMGP)

    Java版三网短信网关模拟器则特别适用于跨运营商的短信服务测试,它可以同时模拟CMPP、SGIP和SMGP协议,帮助开发者实现对三大运营商的支持。 在实际开发过程中,使用这些模拟网关可以帮助减少因网络环境不稳定或运营...

    联通SGIP/移动CMPP3.0/2.0协议短信开发库

    中国联通SGIP协议,短信开发接口库,遵循标准SGIP协议开发,完全版支持正常的发送和接受,共享软件则仅能发送英文短信包括一个demo程序BCB开发的,这个开发库对BCB做了特殊优化,所以使用VC开发的朋友可能会有些小...

    短信发送协议(CMPP,SMPP,SGIP,SMGP).zip

    短信发送协议是通信行业中用于移动网络短信服务的重要标准,这些协议包括CMPP(China Mobile Packet Protocol)、SMPP(Short Message Peer-to-Peer)、SGIP(Short Message Gateway Internet Protocol)以及SMGP...

    CMPP SGMP SGIP 短信平台

    3. SGIP(Short Message Internet Protocol)是短信互联网协议,设计用于将互联网应用与短信网关相连,实现互联网应用发送和接收短信的功能。SGIP1.2是常见的版本,支持TCP/IP通信,具有较高的稳定性和扩展性。 ...

    最新华为3.0协议 SMPP/SGIP/SMGP短信网关封装专用包,支持最新3.0协议,长短信、短短信协议。

    华为短信网关平台、中兴短信网关平台,根据两大主流平台提供的接入信息封装接口,里面包含有一下文件:SMGPLoginRespMessage.java,SMGPLoginMessage.java,SGIPConnection.java,CMPP30Connection.java,CMPP30...

    短信协议(包括CMPP,SGIP,SMGP,SMPP)

    这些协议允许服务提供商、企业以及开发者通过网络基础设施与移动运营商的短信中心(SMSC)进行交互,实现批量发送、接收或处理短信服务。以下是对四种主要短信协议——CMPP、SGIP、SMGP和SMPP的详细说明: 1. CMPP ...

    CMPP SMGP SGIP短信应用平台 v2.0

    在提供的压缩包文件中,"sms_gate.rar"可能包含了整个短信网关的核心代码,包括对CMPP、SMGP和SGIP协议的实现。"SMS.rar"可能包含与短信业务相关的类库或工具,而"CMPP2.rar"、"SGIP.rar"和"SMGP.rar"则是针对各自...

Global site tag (gtag.js) - Google Analytics