基于CMPP協(xié)議的短消息平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).doc_第1頁(yè)
基于CMPP協(xié)議的短消息平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).doc_第2頁(yè)
基于CMPP協(xié)議的短消息平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).doc_第3頁(yè)
基于CMPP協(xié)議的短消息平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).doc_第4頁(yè)
基于CMPP協(xié)議的短消息平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).doc_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于CMPP協(xié)議的短消息平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) 姓名: 專業(yè): 電子信息技術(shù)指導(dǎo)老師: 摘要 當(dāng)前,全國(guó)各地的手機(jī)用戶(中國(guó)移動(dòng)用戶、聯(lián)通用戶)可以通過(guò)手機(jī)短消息服務(wù)中心(SMC)非常自由地發(fā)送和接收短消息。SMC較好地解決了移動(dòng)網(wǎng)絡(luò)內(nèi)部的信息交換,但其本身不能很好的解決Internet與移動(dòng)網(wǎng)絡(luò)的信息交換,同時(shí)從安全性角度也不宜將SMC直接接入Internet。所以本論文講的是:(1)論文首先闡述了短消息系統(tǒng)的體系結(jié)構(gòu)、原理,增值業(yè)務(wù)的應(yīng)用,并深入分析了短消息網(wǎng)關(guān)的工作原理,流程,CMP協(xié)議;(2)針對(duì)當(dāng)前每個(gè)中國(guó)移動(dòng)為減輕短消息、網(wǎng)關(guān)負(fù)荷,對(duì)SP短消息應(yīng)用提供有限的連接數(shù)量,提出對(duì)接入服務(wù)較多的SP搭建一個(gè)統(tǒng)一短消息、接入平臺(tái)(短消息服務(wù)器),在短消息平臺(tái)網(wǎng)關(guān)通訊模塊設(shè)計(jì)中,采用連接池技術(shù),多個(gè)短消息應(yīng)用動(dòng)態(tài)復(fù)用一個(gè)網(wǎng)關(guān)連接。 關(guān)鍵詞:CMPP; 短消息; 增值業(yè)務(wù); 消息隊(duì)列; 回調(diào)機(jī)制 目錄1 緒論.11.1短消息增值業(yè)務(wù)發(fā)展背景.11.2短消息網(wǎng)絡(luò)概述.11.3短消息中心.22 短消息網(wǎng)關(guān)接口協(xié)議.42.1短消息網(wǎng)關(guān)接口協(xié)議概述.42.2 CMPPC協(xié)議體系結(jié)構(gòu).42.3 CMPP協(xié)議交互過(guò)程中的應(yīng)答方式.73 短消息平臺(tái)接口的設(shè)計(jì)與實(shí)現(xiàn).123.1短消息接口程序結(jié)構(gòu).123.2短消息平臺(tái)接口類的實(shí)現(xiàn).14結(jié)束語(yǔ).16致謝.17參考文獻(xiàn).18緒論1.1短消息增值業(yè)務(wù)發(fā)展背景 隨著信息技術(shù)和通信技術(shù)的日益發(fā)展、通信工具的不斷普及,各種通信工具日益增多,人們?yōu)榱讼嗷ケ3致?lián)系,每天都不得不面對(duì)手機(jī)、BP機(jī)、電話機(jī)、傳真機(jī)等多種通信設(shè)備,還要定時(shí)檢查電子郵件和語(yǔ)音信息以及傳真信箱等,通信方式越來(lái)越多樣化,帶來(lái)各種便利的同時(shí),由于它們彼此是獨(dú)立的,需要不同的網(wǎng)絡(luò)支持、多個(gè)終端以及多個(gè)號(hào)碼,在發(fā)送和獲取不同類型的消息時(shí)不方便,也帶來(lái)了昂貴的費(fèi)用。 短消息業(yè)務(wù)包括基本業(yè)務(wù)和增值業(yè)務(wù)?;緲I(yè)務(wù)也就是一些傳統(tǒng)的短消息業(yè)務(wù),比如移動(dòng)臺(tái)發(fā)起移動(dòng)臺(tái)終止的短消息、業(yè)務(wù);與語(yǔ)音信箱配合完成語(yǔ)音信箱通知業(yè)務(wù):可支持漢字的短消息、業(yè)務(wù),人工接續(xù)和自動(dòng)接續(xù)的短消息業(yè)務(wù)。所謂短消息增值業(yè)務(wù),是指基于移動(dòng)增值業(yè)務(wù)平臺(tái),通過(guò)網(wǎng)絡(luò)向用戶提供信息類,娛樂(lè)類,交易類等業(yè)務(wù)。包括:話費(fèi)查詢、話費(fèi)通知、股票行情查詢、股票實(shí)時(shí)漲跌告警、超級(jí)尋呼、公共信息、電子郵件、鈴聲下載、圖像下載、以及利用到短消息網(wǎng)絡(luò)的即時(shí)通訊工具(如騰訊QQ、網(wǎng)易泡泡、搜Q等),聯(lián)合SP(Server Povider服務(wù)提供商)提供的業(yè)務(wù)等。隨著短消息業(yè)務(wù)的發(fā)展,增值業(yè)務(wù)的種類范圍將會(huì)根據(jù)需要不斷擴(kuò)充。 1.2短消息網(wǎng)絡(luò)概述 短消息是通過(guò)移動(dòng)網(wǎng)絡(luò)傳輸?shù)挠邢揲L(zhǎng)度的文本信息。短消息的根本用途是實(shí)現(xiàn)移動(dòng)用戶之間的信息傳遞,也可以通過(guò)短消息、中心查詢或預(yù)定信息。短消息業(yè)務(wù)占用GSM控制信道,而不是業(yè)務(wù)信道,因此與話音業(yè)務(wù)、數(shù)據(jù)業(yè)務(wù)互不干擾。GSM短消息業(yè)務(wù)分為兩種:點(diǎn)對(duì)點(diǎn)短消息業(yè)務(wù)和短消息小區(qū)廣播業(yè)務(wù)。點(diǎn)對(duì)點(diǎn)短消息業(yè)務(wù)能夠使GSM字移動(dòng)通信網(wǎng)的用戶可以發(fā)出或接收長(zhǎng)度有限(不超過(guò)140個(gè)字節(jié))的數(shù)字或文字消息.并且短消息的收發(fā)不影響通話;短消息業(yè)務(wù)可以使網(wǎng)絡(luò)端知道被叫方是否已經(jīng)收到短消息,如果傳送失敗,被叫方?jīng)]有回答確切消息,網(wǎng)絡(luò)一側(cè)會(huì)保留所傳的消息、,一旦網(wǎng)絡(luò)發(fā)現(xiàn)被叫方能被叫通時(shí),消息能被重發(fā)以確保被叫方能收到。通過(guò)短消息、中心及其相關(guān)增值業(yè)務(wù)系統(tǒng)還可以實(shí)現(xiàn)諸如股票交易、銀行業(yè)務(wù)、信息點(diǎn)播、GPS監(jiān)控、Email通知等信息服務(wù),及日程安排、預(yù)約留言、電話號(hào)碼薄等移動(dòng)秘書(shū)服務(wù) 圖11 短消息網(wǎng)絡(luò)結(jié)構(gòu)SME: Short Messaging Entity,短消息實(shí)體。它可以接收或改善短消息,位于固話系統(tǒng)、移動(dòng)基站或其他服務(wù)中心內(nèi): SMSC: Short Message Service Center,短消息服務(wù)中心,負(fù)責(zé)在基站和SME間中繼、儲(chǔ)存或轉(zhuǎn)發(fā)短消息;移動(dòng)臺(tái)(ME)到SMSC的協(xié)議能傳輸來(lái)自移動(dòng)臺(tái)或朝向移動(dòng)臺(tái)的短消息,協(xié)議名為SMTP (Short Message Transmission Protocol);SMCGWMS或SMCGMSC: SMS-Gateway MSC, SMS網(wǎng)關(guān)。接收由SMSC發(fā)送的短消息,向HLR查詢路由信息,并將短消息傳送給接收者所在基站的交換中心;HLR: Home Location Register,歸屬位置寄存器。用于久儲(chǔ)存管理用戶和服務(wù)記錄的數(shù)據(jù)庫(kù),由SNSC產(chǎn)生。SMC網(wǎng)關(guān)與H LR之間的協(xié)議使前者可以要求HLR搜索可找到的用戶地址。它與MSC與HLR之間的協(xié)議一起,能在移動(dòng)臺(tái)因?yàn)槌龈采w區(qū)而丟失報(bào)文、隨后又可找到時(shí)加以提示。BSS: Base Station System,移動(dòng)基站系統(tǒng)。負(fù)責(zé)與手機(jī)進(jìn)行無(wú)線通訊。短消息是GSM中唯一不要求建立端到端業(yè)務(wù)路徑的業(yè)務(wù),即使移動(dòng)臺(tái)己處于完全電路通信情況下仍可進(jìn)行短消息傳輸。 短消息通信僅限于一個(gè)消息,換言之,一個(gè)消息的傳輸就構(gòu)成了一次通信。因此,業(yè)務(wù)是非對(duì)稱的,一般認(rèn)為移動(dòng)起始短消息(MO)傳輸與移動(dòng)終接短報(bào)文(M T)傳輸是兩回事。這并不阻礙實(shí)時(shí)對(duì)話,但系統(tǒng)認(rèn)為不同的消息彼此獨(dú)立,消息的傳輸總是由處于GSM外部的短消息服務(wù)中心(SMSC)進(jìn)行中繼,消息有目的地或起源地,但只與用戶和S MSC有關(guān),而與其他GSM基礎(chǔ)設(shè)施無(wú)關(guān)。移動(dòng)起始短消息(MO):一個(gè)GSM用戶發(fā)送短消息時(shí),他必須在其內(nèi)容中包含最終地址的識(shí)別符,和處理這消息的服務(wù)中心號(hào)碼,然后請(qǐng)求傳遞。短消息的傳輸要求在移動(dòng)臺(tái)和MSC之間建立信令連接。消息、本身的傳遞要求在無(wú)線路徑上建立專用的鏈路層鏈接,并要求采用專用的消息傳遞協(xié)議。在規(guī)定的協(xié)議棧的頂部是所謂的傳輸層協(xié)議,在移動(dòng)起始短消息情形下,它是一條單獨(dú)的報(bào)文,即S MTP(不是TCP/IP的S1TP)短消息傳送報(bào)文,低處理應(yīng)答的傳送,它只指出SMSC己收到報(bào)文。短消息業(yè)務(wù)的功能是向移動(dòng)用戶提供短消息發(fā)送/接收業(yè)務(wù)。短消息業(yè)務(wù)作為GSM第一階段標(biāo)準(zhǔn)被創(chuàng)建。短消息由字符和數(shù)字組成,每個(gè)短消息長(zhǎng)度最多為160個(gè)拉丁字符,如果是中文或其他非拉丁字符則長(zhǎng)度最多為70個(gè)。短消息業(yè)務(wù)中心(SMSC)實(shí)現(xiàn)短消息業(yè)務(wù),它需要直接與移動(dòng)業(yè)務(wù)交換中心(MSC)相連,因此短消息業(yè)務(wù)中心必須實(shí)現(xiàn)No.7信令的消息傳遞部分,才能同MSC通信。同時(shí),短消息業(yè)務(wù)中心還要實(shí)現(xiàn)信令連接控制部分、事務(wù)處理能力部分,以及移動(dòng)應(yīng)用部分中的短消息、業(yè)務(wù)管理業(yè)務(wù),這樣才能實(shí)現(xiàn)高層的短消息發(fā)送/接受功能。1.3短消息中心短消息中心本身是運(yùn)行在服務(wù)器上的一個(gè)應(yīng)用程序,其實(shí)質(zhì)是一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序。短消息中心核心進(jìn)程擔(dān)負(fù)著通過(guò)7號(hào)信令與移動(dòng)交換機(jī)連接并且改善接收短消息底層編碼的任務(wù)。它收到一條短消息后將其放入數(shù)據(jù)庫(kù)中,同時(shí)另一個(gè)進(jìn)程試圖將這條短消息放入發(fā)送隊(duì)列將其發(fā)送出去。如果成功,這條短消息將被刪除以釋放數(shù)據(jù)庫(kù)空間,但統(tǒng)計(jì)信息將保存如果不成功,則根據(jù)設(shè)置的時(shí)間間隔重發(fā),一直到發(fā)送成功或有效期過(guò)為止;如果發(fā)現(xiàn)手機(jī)關(guān)機(jī)則等待其開(kāi)機(jī)時(shí)發(fā)送。接口層使得ESME可以通過(guò)一定的方式使用SMSC,通常的做法是建立一個(gè)多連接Socket服務(wù)端,在某一個(gè)端口上守候,通過(guò)一定的協(xié)議和客戶端進(jìn)行交互,實(shí)現(xiàn)功能。接口層協(xié)議的事實(shí)標(biāo)準(zhǔn)是短消息點(diǎn)對(duì)點(diǎn)協(xié)議(SMPP),多數(shù)廠商(包括中興、華為、WINS .Ferma Intech等)均支持該協(xié)議。 圖12短消息服務(wù)中心2 短消息網(wǎng)關(guān)接口協(xié)議2.1短消息網(wǎng)關(guān)接口協(xié)議概述短消息服務(wù)中心為了提供短消息接入服務(wù),在國(guó)內(nèi)需要具備中國(guó)移動(dòng)短消息點(diǎn)對(duì)點(diǎn)協(xié)議(CMPP)接口仁以及中國(guó)聯(lián)通短消息網(wǎng)關(guān)系統(tǒng)接口協(xié)議(SGIP)接口,實(shí)現(xiàn)網(wǎng)關(guān)功能,其(移動(dòng)網(wǎng)關(guān))主要功能完成了將SMPP協(xié)議到CMPP協(xié)議的轉(zhuǎn)換,能夠?qū)耐獠慷滔?shí)體(ESME)或服務(wù)提供商(SP)接收到MT (MobileTerminate)消息根據(jù)其內(nèi)容,選擇相關(guān)路由發(fā)送到正確的短消息、網(wǎng)關(guān),最后到短消息服務(wù)中心發(fā)至移動(dòng)基站,并且能將收到的M0 (Mobile Originate)消息路由到正確網(wǎng)關(guān)后最終發(fā)到服務(wù)提供商(SP)??梢钥闯龆滔⒕W(wǎng)關(guān)(互聯(lián)網(wǎng)短消息網(wǎng)關(guān))是移動(dòng)短消息業(yè)務(wù)接入因特網(wǎng)的入口點(diǎn)。如果提供國(guó)際短消息接入服務(wù),則必須同時(shí)實(shí)現(xiàn)短消息、點(diǎn)對(duì)點(diǎn)協(xié)議(SMPP)接口。術(shù)語(yǔ)解釋SMPP Short Message Peer to Peer短消息點(diǎn)對(duì)點(diǎn)協(xié)議CMPP China Mobile Peer to Peer中國(guó)移動(dòng)點(diǎn)對(duì)點(diǎn)協(xié)議SGIP Short Message Gateway Interface Protocol短消息、網(wǎng)關(guān)接口協(xié)議 (用于中國(guó)聯(lián)通)SMSC Short Message Service Center短消息服務(wù)中心GNS Gateway Name Server負(fù)責(zé)系統(tǒng)路由的管理和同步 (又稱匯接網(wǎng)關(guān))M0 由手機(jī)用戶提交的短消息(Mohile Originate)MT 由手機(jī)用戶接收的短消息(Mohile Terminate)SMG Short Message Gatewas聯(lián)通公司的短消息網(wǎng)關(guān) SMG之間的通訊協(xié)議采用SGIPISMG Internet Short Message Gateway互連網(wǎng)短消息網(wǎng)關(guān)(移動(dòng))Data Service Manage Platform數(shù)據(jù)業(yè)務(wù)管理平臺(tái)SP Service Provider服務(wù)提供商2.2 CMPP協(xié)議體系結(jié)構(gòu)為防止一些個(gè)人或企業(yè)進(jìn)行短消息的惡意傳輸,在國(guó)內(nèi)現(xiàn)在外部應(yīng)用實(shí)體不能直接與短消息中心互聯(lián),而必須通過(guò)中國(guó)移動(dòng)或中國(guó)聯(lián)通的短消息網(wǎng)關(guān)來(lái)發(fā)送或接收短消息,由后者將短消息、發(fā)送至短消息中心。外部應(yīng)用實(shí)體與中國(guó)移動(dòng)短消息網(wǎng)關(guān)之間通過(guò)CMPP接口,而同樣聯(lián)通也有其網(wǎng)關(guān)和協(xié)議接口SGIP,CMPP和SGIP分別是移動(dòng)和聯(lián)通在 S MPP協(xié)議上改進(jìn)的針對(duì)自己網(wǎng)關(guān)的接口協(xié)議。如圖2-1所示,中國(guó)移動(dòng)互聯(lián)網(wǎng)短信網(wǎng)關(guān)(ISMG)是業(yè)務(wù)提供商(SP)與移動(dòng)網(wǎng)內(nèi)短信中之間的中介實(shí)體,互聯(lián)網(wǎng)短信網(wǎng)關(guān)一方面負(fù)責(zé)接收SP發(fā)送給移動(dòng)用戶的信息和提交給短信中心。另一方面,移動(dòng)用戶點(diǎn)播SP業(yè)務(wù)的信息將由短信中心通過(guò)互聯(lián)網(wǎng)短信網(wǎng)關(guān)發(fā)給SP。另外,為了減輕短信中心的信令負(fù)荷,互聯(lián)網(wǎng)短信網(wǎng)關(guān)還應(yīng)根據(jù)路由原則將SP提交的信息轉(zhuǎn)發(fā)到相應(yīng)的互聯(lián)網(wǎng)短信網(wǎng)關(guān)。互聯(lián)網(wǎng)短信網(wǎng)關(guān)通過(guò)向匯接網(wǎng)關(guān)(GNS)查詢的方式獲得網(wǎng)關(guān)間的轉(zhuǎn)發(fā)路由信息。 圖21互聯(lián)網(wǎng)短消息網(wǎng)關(guān)組網(wǎng)結(jié)構(gòu)另外,ISMG還必須與數(shù)據(jù)業(yè)務(wù)管理平臺(tái)DSMP進(jìn)行連接,在業(yè)務(wù)流程中對(duì)用戶、業(yè)務(wù)以及定購(gòu)關(guān)系等進(jìn)行鑒權(quán)并對(duì)業(yè)務(wù)進(jìn)行批價(jià)。2. 2. 1幾種通信路由和本地短消息網(wǎng)關(guān)(ISMG)之間相連的SMSC稱作本地SMSC,和異地ISMG相連的SMSC稱作異地SMSC。和ISMG之I司相連的SP稱作本地SP,和異地ISMG相連的SP稱作異地SP。從本地SMSC向本地SP以及從本地SP向本地SMSC發(fā)送的消息直接由IS M G轉(zhuǎn)發(fā);從本地SMSC向異地SP以及從本地SP向異地S MSC發(fā)送的消息由本地IS MG路由到異地IS MG后,再由異地IS MG轉(zhuǎn)發(fā)。消息從本地SMSC到本地SPISHG從SMSC接收到短消息,直接發(fā)給SP。例如:SMSCIA-ISMGI一SPIYShSCIB-ISMGI一SPIX消息從本地SMSC到異地SPISMG從本地SMSC接收短消息、,再路由到異地ISMG,由異地的ISMG發(fā)送到目的SP,例如:SMSCIA-ISMGI一GNS- ISMG2-SP2YSMSCIB-ISMG1一GNS- ISMG3- SP3X上面兩種主要是手機(jī)端發(fā)起短消息的過(guò)程,其示意圖如下: 圖 2-2 發(fā)起短消息1)手機(jī)發(fā)出數(shù)據(jù)請(qǐng)求(可能是訂閱信息或圖片點(diǎn)播等)到SMSC,被源工SMG接收;2)源工ISMG對(duì)接收到的信息返回響應(yīng);3)源工ISMG在本地查詢不到要連接的SP,向GNS(匯接網(wǎng)關(guān))發(fā)路由請(qǐng)求信息:4) GNS將路由信息返回;5)源工ISNG根據(jù)路由信息將請(qǐng)求前轉(zhuǎn)給目的工ISMG;6)目的工ISMG對(duì)接收到的信息返回響應(yīng):7)目的ISMG將請(qǐng)求信息送SP;8) SP返回響應(yīng);對(duì)于消息從本地SMSC到本地SP的情況沒(méi)有步驟3, 4, 5, 6。在以上操作中,步驟3到步驟8均使用CMPP協(xié)議;在隨后的操作中,目的ISMG在接收到SP的響應(yīng)后將產(chǎn)生MO狀態(tài)報(bào)告發(fā)給源工ISMG.消息從本地SP到本地SMSCISMG從SP接收短消息,直接發(fā)給SMSC。例如:SPIX-ISMGI一SMSCIASPIY-ISMG1一SMSCIB.消息從本地SP到異地SMSCISMG從本地SP接收短消息,再路由到異地的ISMG發(fā)送到目的SMSC,例如:SPIX-ISMGI一GNS- ISMG2-SMSC2ASPIY-ISMGI一GNS- ISMG3-SMSC3B以上兩種主要是手機(jī)端接收短消息的過(guò)程,其示意圖如下: 圖2-3 接收短消息1) SP發(fā)出數(shù)據(jù)請(qǐng)求(可能是短信通知或手機(jī)鈴聲等)到源ISMG;2)源ISMG對(duì)接收到的信息返回響應(yīng);3)源ISMG在本地?cái)?shù)據(jù)庫(kù)中找不到要目的手機(jī)號(hào)段所對(duì)應(yīng)網(wǎng)關(guān)代碼,向GNS(匯接網(wǎng)關(guān))發(fā)路由請(qǐng)求信息;4)匯接網(wǎng)關(guān)將路由信息返回;5)源ISMG根據(jù)路由信息將請(qǐng)求前轉(zhuǎn)給目的ISMG;6)日的ISAG對(duì)按收到的信息返回響應(yīng);7)目的ISMG將請(qǐng)求信息發(fā)送至SMC;8) SMC向目的ISMG返回響應(yīng):在上述操作中,步驟1到步驟6均使用CMPP協(xié)議;對(duì)于消息從本地SP到本地SMSC的情況沒(méi)有步驟3, 4, 5, 6。在隨后的操作中,SMC將通過(guò)N0. 7信令網(wǎng)向移動(dòng)用戶發(fā)送信息,移動(dòng)用戶收到后將返回狀態(tài)報(bào)告(Delivery-Receipt)給短信中心,短信中心將按照M0操作的流程將狀態(tài)報(bào)告返回給SP(如果SP要求返回狀態(tài)報(bào)告)。2.3 CMPP協(xié)議交互過(guò)程中的應(yīng)答方式 在SP與ISMG之間、SMSC與ISMG之間及ISMG之間的交互過(guò)程中均采用異步方式,即任一個(gè)CMPP協(xié)議中的網(wǎng)元在收到請(qǐng)求消息、后應(yīng)立即回送響應(yīng)消息。如圖2-4所示: 圖2-4 CMPP交互過(guò)程中的應(yīng)答方式24 CMPP協(xié)議通信消息的定義 CMPP對(duì)外提供長(zhǎng)連接端口號(hào)為7890,短連接端口號(hào)定義為7900。字節(jié)采用在網(wǎng)絡(luò)中通用的網(wǎng)絡(luò)字節(jié)序?;贑MPP協(xié)議的消息類型主要有3類: 1.SP與短消息網(wǎng)關(guān)(ISMG)通信的消息; 2.短消息網(wǎng)關(guān)(ISMG)之間的消息; 3.短消息網(wǎng)關(guān)(ISMG)與匯接網(wǎng)關(guān)(GNS)之間的消息。 其中本論文中的短消息平臺(tái)是SP短消息應(yīng)用系統(tǒng)接入短消息網(wǎng)關(guān)的統(tǒng)一平臺(tái)把涉及到的,主要是第1種,在下面對(duì)這些消息做一些介紹。與SMPP協(xié)議一樣,CMPP也是一個(gè)應(yīng)用層協(xié)議,基于TCP/IP和X.25網(wǎng)絡(luò)連接,由下層的網(wǎng)絡(luò)層負(fù)責(zé)管理CMPP消息的傳輸和接收,網(wǎng)絡(luò)層的發(fā)送實(shí)體為了處理CMPP消息的分段并組成數(shù)據(jù)包,網(wǎng)絡(luò)層上的接收實(shí)體重組CMPP消息。因此,CMPP協(xié)議也是通過(guò)其下層的網(wǎng)絡(luò)層組織、發(fā)送、接收、重組一系列CMPP消息組成的數(shù)據(jù)包來(lái)實(shí)現(xiàn)的。每個(gè)CMPP消息包括消息頭MessageHeader與消息體Message Body兩部分。所有消息都包含MessageHeader,它包括Total_Length(消息總長(zhǎng)度)、Command_ Id(表明命令類型的命令編碼)、Sequence_Id(消息序列號(hào))四個(gè)參數(shù),不同消息的lessageBody包含的參數(shù)各不相同。CMPP消息的一般格式見(jiàn)下表2-5: 圖 2-5 CMPP消息的一般格式 MessageHeaderMessageBody 4字節(jié) 4字節(jié)4字節(jié) 不定長(zhǎng) Total_LenghtCommand_ID Sequence_IDParameter(optional)Unsigned longUnsigned longUnsigned long已定義的CMPP消息類型共有30個(gè),除上面己給出的ISMG與SP以及ISMG之間傳送的消息類型外,還包括其他工SAG與網(wǎng)關(guān)匯接點(diǎn)之間有關(guān)路由信息請(qǐng)求的消息類型。后面章節(jié)將給出一些消,、的格式,以及其具體實(shí)現(xiàn)。 具體到一個(gè)短消息網(wǎng)關(guān)中,由短消息、網(wǎng)關(guān)CMPP代理系統(tǒng)與SP建立了網(wǎng)絡(luò)連接基礎(chǔ)上,組織、發(fā)送、接收、重組由一系列CMPP消息組成的數(shù)據(jù)包,從而實(shí)現(xiàn)與SP之間的短信息交換。短消息接入平臺(tái)與移動(dòng)短消息、網(wǎng)關(guān)(ISMG)之間互為客戶/服務(wù)器關(guān)系,但要求短消息、接入平臺(tái)首先以客戶的身份請(qǐng)求連接到移動(dòng)網(wǎng)關(guān),并且以IP進(jìn)行驗(yàn)證,若驗(yàn)證成功,之后短消息平臺(tái)與移動(dòng)網(wǎng)關(guān)之間方可進(jìn)行數(shù)據(jù)傳輸。短消息接入平臺(tái)連接到短消息網(wǎng)關(guān)后應(yīng)保持連接(長(zhǎng)連接)。短消息接入平臺(tái)發(fā)送CMPP_ CONNECT消息,向移動(dòng)短消息網(wǎng)關(guān)請(qǐng)求連接,短消息網(wǎng)關(guān)以CMPP_ CONNECT_ RESP消息響應(yīng)請(qǐng)求。消息體部分根據(jù)命令的不同而不同,下面討論幾個(gè)主要命令的消息體格式:.SP請(qǐng)求連接到ISMG (CMPP_ COVNECT)操作:傳輸CMPP_ CONNECT操作的目的是SP向ISMG注冊(cè)作為一個(gè)合法SP身份,并以MD5算法加密鑒權(quán)號(hào)碼,若注冊(cè)成功后即建立了應(yīng)用層的連接,此后SP可以通過(guò)此工SMG接收和發(fā)送短信。 表2-6 CMPP_CONNECT消息格式字段名字節(jié)數(shù)屬性描述Souree_Addr6Octet String源地址,此處為SP_ID,即SP的企業(yè)代碼AuthenticatorSource16Octet String用于鑒別源地址,其值通過(guò)單向MD5hash計(jì)算得出Version1Unsigned Integer雙方協(xié)商的版本號(hào),對(duì)于3.0的版本,高4bit3,低4位為0Timestamp4Octet String時(shí)間戳的明文,由客戶端產(chǎn)生,格式為MMDDHHMMSS,即月時(shí)分秒。.ISMG返回給SP的應(yīng)答(CMPP_ CONNECT_ RESP)操作 該操作是在ISMG收到SP的連接請(qǐng)求后返回的應(yīng)答消息, ISMG以CMPP_CONNECT_ESP消息響應(yīng)SP的請(qǐng)求,消息體格式如下: 表2-7 CMPP_CONNECT_RESP消息格式字段名 字節(jié)數(shù) 屬性 描述Status4Unsigned Integer狀態(tài)0:正確 其他錯(cuò)誤AuthenticatorISMG16Octet StringISMG認(rèn)證碼,用于鑒別ISMG。其值通過(guò)單項(xiàng)MD5hash計(jì)算出Version1Unsigned Inetger服務(wù)器支持的最高版本號(hào),對(duì)于3.0的版本,高4bit為3,低4位為0.SP向ISMG提交短信(CMPP_ SUBMIT)操作:CMPP SUBMIT操作的目的是SP在與ISMG建立應(yīng)用層連接后向ISMG提交短信,ISMG以CMPP_ SUBMIT_ RESP消息響應(yīng)。 CMPP_ SUBMIT操作的消息體格式:其主要字段有:信息標(biāo)識(shí)、消息格式、發(fā)送時(shí)間、源號(hào)碼、目的號(hào)碼、消息長(zhǎng)度、消息內(nèi)容等。ISUG對(duì)SP發(fā)出的提交短消息請(qǐng)求返回的應(yīng)答的操作: 表2-8 CMPP_SUBMIT消息格式字段名字節(jié)數(shù)屬性描述Msg_Id8Unsigned Integer信息標(biāo)識(shí)Pk_total1Unsigned Integer相同Msg_Id的信息總條數(shù),從1開(kāi)始Pk_number1Unsigned Integer相同Msg_Id的信息序號(hào),從1開(kāi)始Rwgistered_Delivery1Unsigned Integer是否要求返回狀態(tài)確認(rèn)報(bào)告:0:不需要1:需要2:產(chǎn)生SMC話單提交請(qǐng)求返回的應(yīng)答CMPP_ SUBMI _ RESP消息體格式如下:其主要字段有:信息標(biāo)識(shí)、結(jié)果(result ).ISMG向SP送交短信(CMPP_ DELIVER)操作CMPP_DELIVER操作的目的是工SMG把從短信中心或其它工SMG轉(zhuǎn)發(fā)來(lái)的短信送交SP,該操作的消息體格式如表3-3. 當(dāng)工SMG向SP送交狀態(tài)報(bào)告時(shí),信息內(nèi)容字段(Msg_Content)字段的內(nèi)容 分別表示信息標(biāo)識(shí)(Msg_Id)、短信狀態(tài)結(jié)果(Stat )、發(fā)送時(shí)間(Submit_ time), Done_ time, Dest_ terminal_ Id(目的終端MSISDN號(hào)碼)、 SMSC_sequence(取自SMSC發(fā)送狀態(tài)報(bào)告的消息體中的消息標(biāo)識(shí))。SP向ISMG查詢發(fā)送短信狀態(tài)(CMPP_QUERY)操作:CMPP_QUERY操作的目的是SP向ISMG查詢某時(shí)間的業(yè)務(wù)統(tǒng)計(jì)情況,可以按總數(shù)或按業(yè)務(wù)代碼查詢。CMPP_ QUERY操作的消息體格式如下: 表2-9 CMPP_QUERY消息格式字段名字節(jié)數(shù)屬性描述Time8Octet String時(shí)間YYYYMMDD(精確至日)Query_Cde10Octer String查詢碼。當(dāng)Query_Type為0時(shí)此項(xiàng)無(wú)效當(dāng)Query_Type為1時(shí),此項(xiàng)填寫(xiě)業(yè)務(wù)類型Service_IDQery_Code1Unsigned_Interger查詢類別:0:總數(shù)查詢:1:按業(yè)務(wù)類型查詢Reserve8Octer String保留對(duì)于CMPP_ QUERY應(yīng)答包CHPP_ QUERY_ RESP返回從SP接收信息總數(shù)、從SP接收用戶總數(shù)、成功轉(zhuǎn)發(fā)數(shù)量、待轉(zhuǎn)發(fā)數(shù)量、向SP成功送達(dá)數(shù)量等字段。.SP或ISNG請(qǐng)求拆除連接(CMPP_ TERIIVATE)操作與應(yīng)答操作CMPP_TERMINATE操作的目的是SP或ISMG基于某些原因決定拆除當(dāng)前的應(yīng)用層連接而發(fā)起的操作。此操作完成后SP與ISMG之間的應(yīng)用層連接被釋放, 此后SP若再要與ISMG通信時(shí)應(yīng)發(fā)起CMPP_ C0NNECT操作。ISMG或SP以CMPP_TERMIHATE _RESP消息響應(yīng)請(qǐng)求,這兩個(gè)消息都沒(méi)有消息體.SP向ISMG發(fā)起刪除短信(CMPP_CANCEL)操作CMPP_ CANCEL操作的目的是SP通過(guò)此操作可以將已經(jīng)提交給ISMG的短信刪除,ISMG將以CMPP_ CANCEL_ RESP回應(yīng)刪除操作的結(jié)果。CMPP_ CANCEL操作的消息體包含一個(gè)消息標(biāo)識(shí)號(hào)字段,用來(lái)指定要?jiǎng)h除的消息;CMPP_CANCEL_ RESP操作的消息體包含無(wú)符號(hào)整型的表明刪除是否成功的標(biāo)識(shí)號(hào),0表示成功,1表示操作失敗。鏈路檢測(cè)(CMPP_ ACTIVE_ TEST)操作本操作僅適用于通信雙方采用長(zhǎng)連接通信方式時(shí)用于保持連接,沒(méi)有消息體部分,其應(yīng)答CMPP_ACTIVE_TEST_RESP僅包含一個(gè)字節(jié)的保留字段。3 短消息平臺(tái)接口的設(shè)計(jì)與實(shí)現(xiàn)短消息、統(tǒng)一平臺(tái)是不同短消息、應(yīng)用系統(tǒng)接入中心,負(fù)責(zé)對(duì)短消息應(yīng)用系統(tǒng)的接入的配置、管理、計(jì)費(fèi)、轉(zhuǎn)發(fā)短消息,而短消息平臺(tái)接口部分主要負(fù)責(zé)與短消息平臺(tái)服務(wù)器的通信,是提供給短消息應(yīng)用系統(tǒng)的二次開(kāi)發(fā)接口。當(dāng)我們升級(jí)短消息平臺(tái)時(shí)應(yīng)該保持接口的不變性,這樣應(yīng)用系統(tǒng)就可以不需要修改。 短消息、應(yīng)用系統(tǒng)接入方式主要基于短消息、平臺(tái)提供給業(yè)務(wù)開(kāi)發(fā)程序動(dòng)態(tài)連接庫(kù)(API),或COM, java Bean (Java服務(wù)器)。 WEB服務(wù)器接入方式主要是基于組件的方式(COM,java Bean)。面闡述以DLL方式提供API接口的實(shí)現(xiàn)。3. 1短消息平臺(tái)接口程序結(jié)構(gòu) 接口程序的實(shí)現(xiàn)主要也涉及到socket編程、CMPP中所規(guī)定的數(shù)據(jù)包(PDU的生成和解析以及請(qǐng)求/應(yīng)答機(jī)制的實(shí)現(xiàn)等。接口程序主要由一個(gè)CMPP類構(gòu)成,在該類中實(shí)現(xiàn)同短消息服務(wù)器的通信細(xì)節(jié),封裝成DLL形式提供給短消息應(yīng)用系統(tǒng)。在短消息平臺(tái)接口程序按功能可分為三層:Socket_ API層、CMPPPDU層和API層。接口程序的結(jié)構(gòu)如圖3-1所示: 圖3-1 接口程序結(jié)構(gòu)311 Socket API層最底層是Socket_ API層,主要功能是建立TCP連接、完成數(shù)據(jù)包的發(fā)送和接收。Socket_ API層與上層協(xié)議無(wú)關(guān),只是完成具體的網(wǎng)絡(luò)通信。 短消息應(yīng)用系統(tǒng)通常是通過(guò)專線或者Internet接入SMSC和ISMG的,而在這應(yīng)用系統(tǒng)接入短消息平臺(tái)是通過(guò)局域網(wǎng)(SP或企業(yè)自己的短消息業(yè)務(wù))或者以寬帶Internet接入(主要是二級(jí)SP),一般情況下是可靠的,但不能排除故障的可能性。為了減少故障帶來(lái)的影響,要求接口程序能夠及時(shí)發(fā)現(xiàn)故障并具有較完善的錯(cuò)誤處理機(jī)制。為此,接口程序同短消息服務(wù)器之間的通信需要附加。為了附加TIMEOUT并具有較好的可移植性,Socket層中對(duì)于數(shù)據(jù)的發(fā)送和接收采用了Nonblocking的I/0方式,調(diào)用send和recv前通過(guò)調(diào)用select函數(shù)判斷操作是否能在指定的時(shí)間內(nèi)完成,防止send和recv進(jìn)入長(zhǎng)時(shí)間的等待。Socket層中為每個(gè)socket分配有發(fā)送緩沖區(qū)和接收緩沖區(qū)。上一層將要發(fā)送的數(shù)據(jù)包寫(xiě)入發(fā)送緩沖區(qū)中的空閑區(qū)域,每一次調(diào)用send時(shí)都試圖將發(fā)送緩沖區(qū)中所有未發(fā)送的數(shù)據(jù)發(fā)送出去。對(duì)于數(shù)據(jù)的接收,調(diào)用recv時(shí)將接收到的數(shù)據(jù)寫(xiě)入接收緩沖區(qū),由上一層從接收緩沖區(qū)中取出已經(jīng)接收到的完整的數(shù)據(jù)包。 通過(guò)構(gòu)造CMPP類我們封裝了Socket的數(shù)據(jù)發(fā)送和接收操作,在3.1. 2節(jié)具體的實(shí)現(xiàn)。3. 1 .2 CMPP PDU層接口程序中間層是CMPP_PDU層,一方面負(fù)責(zé)完成CMPP協(xié)議中的數(shù)據(jù)包(PDU )的生成和解析。另一方面負(fù)責(zé)完成CMPP的請(qǐng)求/應(yīng)答機(jī)制。 每一種需要發(fā)送的CMPP數(shù)據(jù)包都對(duì)應(yīng)一個(gè)打包函數(shù),接收線程接收數(shù)據(jù)時(shí)首先判斷包格式是否正確,正確再調(diào)用接收回調(diào)函數(shù)從接收緩沖區(qū)中取出數(shù)據(jù)包。生成函數(shù)按照CMPP協(xié)議中規(guī)定的格式填寫(xiě)各種參數(shù),在發(fā)送緩沖區(qū)中直接生成數(shù)據(jù)包。 與其他一些常見(jiàn)的請(qǐng)求/應(yīng)答式協(xié)議不同,CMPP中通信的雙方互為客戶端和服務(wù)器端,都可以發(fā)送請(qǐng)求數(shù)據(jù)包,另一方應(yīng)答請(qǐng)求。此外,請(qǐng)求和應(yīng)答可以是異步的:發(fā)送方在接收到下一次請(qǐng)求的應(yīng)答之前可以連續(xù)發(fā)送多個(gè)請(qǐng)求,接收方依次處理后返回應(yīng)答。為了使一對(duì)請(qǐng)求和應(yīng)答相對(duì)應(yīng),數(shù)據(jù)包的包頭中有序列號(hào)字段,一對(duì)請(qǐng)求和應(yīng)答的序列號(hào)是相同的,對(duì)于網(wǎng)關(guān)的Deliver包,接口程序內(nèi)部自動(dòng)回復(fù)相應(yīng)RESP類型包。 請(qǐng)求和應(yīng)答通過(guò)數(shù)據(jù)包的發(fā)送和接收兩部分來(lái)實(shí)現(xiàn)的。為了防止進(jìn)入死等待,我們采用發(fā)送、接收分兩個(gè)線程,同時(shí)與短消息服務(wù)器一樣,采用滑動(dòng)窗口,發(fā)送窗口,同時(shí)在接收到消J息應(yīng)答前,最多只能發(fā)送16條數(shù)據(jù)對(duì)于每一個(gè)需要執(zhí)行的CMPP操作,都有一個(gè)相應(yīng)的操作函數(shù)。該函數(shù)首先生成并發(fā)送請(qǐng)求數(shù)據(jù)包,之后調(diào)用接收函數(shù)接收應(yīng)答數(shù)據(jù)包。接收函數(shù)在接收到正確的應(yīng)答數(shù)據(jù)包之前有可能會(huì)接收到其它數(shù)據(jù)包:ISMG向應(yīng)用系統(tǒng)發(fā)出的請(qǐng)求數(shù)據(jù)包、前一次請(qǐng)求的應(yīng)答數(shù)據(jù)包等。因此,接收線程還包含了對(duì)ISMG發(fā)出的請(qǐng)求數(shù)據(jù)包的處理等其它操作,直到收到已發(fā)送請(qǐng)求對(duì)應(yīng)的應(yīng)答數(shù)據(jù)包后,才將對(duì)應(yīng)的數(shù)據(jù)包從滑動(dòng)窗口數(shù)組中刪除。3. 2短消息平臺(tái)接口類的實(shí)現(xiàn)對(duì)于服務(wù)器端就是連接短消息網(wǎng)關(guān)后,等待短消息網(wǎng)關(guān)的數(shù)據(jù)包,同時(shí)在給定端口監(jiān)聽(tīng),等待各個(gè)業(yè)務(wù)應(yīng)用實(shí)體的接入(通過(guò)接口程序),服務(wù)器負(fù)責(zé)對(duì)數(shù)據(jù)按CMPP協(xié)議轉(zhuǎn)發(fā)到短消息網(wǎng)關(guān)。同時(shí)管理配置模塊負(fù)責(zé)對(duì)整個(gè)平臺(tái)監(jiān)控、管理、計(jì)費(fèi)、查詢。短消息平臺(tái)接口是各種短消息應(yīng)用系統(tǒng)接入短消息網(wǎng)關(guān)的通信橋梁。3.2.1接口類的成員函數(shù)CMPP:Start函數(shù)用來(lái)啟動(dòng)與短消息平臺(tái)連接,并初始化網(wǎng)絡(luò)連接,填寫(xiě)基本參數(shù)信息、包括短消息服務(wù)器IP地址、端口,以及服務(wù)接入號(hào)、密碼。另外我們定義一個(gè)函數(shù)指針:typedef void (*PFOnMsg) (CMPP_PACKAGE *M_Packet);在Start函數(shù)中有一個(gè)此類型函數(shù)指針參數(shù),這是提供給應(yīng)用系統(tǒng)的回調(diào)函數(shù),此函數(shù)由應(yīng)用實(shí)體定義,當(dāng)應(yīng)用實(shí)體收到數(shù)據(jù)即自動(dòng)調(diào)用此函數(shù)。CMPP: :Start函數(shù)實(shí)現(xiàn)如下: 下圖3-2給出接口程序啟動(dòng)過(guò)程的流程: 圖3-2接口程序啟動(dòng)過(guò)程的流程為了控制各個(gè)短消息應(yīng)用系統(tǒng)到短消息平臺(tái)的流量,防止意外(網(wǎng)關(guān)或短消息服務(wù)器回送應(yīng)答消息延遲等)時(shí),各短消息應(yīng)用無(wú)限制的發(fā)送消息到短消息平臺(tái),采用類似控制短消息平臺(tái)發(fā)往網(wǎng)關(guān)的流量方法(網(wǎng)關(guān)通信代理模塊中),控制每一條短消息應(yīng)用同短消息、平臺(tái)的連接上在收到應(yīng)答消息前也最多發(fā)送16條消息。 在CMPP類中我們定義一個(gè)滑動(dòng)窗口數(shù)組:CMPP_ PACKAGE Data Window NCMPP_ WINDOW_ SIZE;其中NCMPP_ WINDOW_SIZE即為窗口大小:它是一個(gè)全局變量臨界資源需在多線程中訪問(wèn)需同步,在初始化函數(shù)Start中將所有窗口數(shù)據(jù)清0,表示未使用窗口;從前面我們可以看出CMPP_ PACKAGE是一個(gè)包含消息頭,消息體以及重發(fā)次數(shù)的結(jié)構(gòu),以及發(fā)送時(shí)間.3.2.3回調(diào)函數(shù)機(jī)制我們知道在面向?qū)ο蟮能浖O(shè)計(jì)過(guò)程中,對(duì)象是數(shù)據(jù)和方法的封裝體。在C+中,它們分別表現(xiàn)為數(shù)據(jù)成員和成員函數(shù)。程序設(shè)計(jì)者通過(guò)執(zhí)行對(duì)象的各種方法,來(lái)改變對(duì)象的狀態(tài)(即改變對(duì)象的屬性數(shù)據(jù))。從而使該對(duì)象發(fā)生某些“事件”。當(dāng)一對(duì)象發(fā)生某事件時(shí),它通常需向其它相關(guān)對(duì)象發(fā)送“消息”,請(qǐng)求它們作出一些處理。這時(shí),發(fā)生事件并向其它對(duì)象請(qǐng)求處理的對(duì)象被稱為“事件對(duì)象”,而處理事件的對(duì)象被稱為“回調(diào)對(duì)象”?;卣{(diào)對(duì)象對(duì)事件的處理稱為“回調(diào)函數(shù)。在C+中,這一過(guò)程相當(dāng)于:當(dāng)事件對(duì)象發(fā)生事件時(shí),調(diào)用回調(diào)對(duì)象的某些成員函數(shù)。在這里我們對(duì)于應(yīng)用實(shí)體調(diào)用接口程序最重要的“事件”就是數(shù)據(jù)到達(dá)的事件了,而“事件對(duì)象”和“回調(diào)對(duì)象”則是CMPP類的實(shí)例了,回調(diào)函數(shù)是一個(gè)應(yīng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論