SMS基本概念
GSM中唯一不要求建立端-端業(yè)務(wù)路徑的業(yè)務(wù)就是短消息,即使移動(dòng)臺(tái)已處于完全電路通信情況下仍可進(jìn)行短消息傳輸。
短消息通信僅限于一個(gè)消息,換言之,一個(gè)消息的傳輸就構(gòu)成了一次通信。因此,業(yè)務(wù)是非對(duì)稱(chēng)的,一般認(rèn)為移動(dòng)起始短消息傳輸與移動(dòng)終接短報(bào)文傳輸是兩回事。這并不阻礙實(shí)時(shí)對(duì)話,但系統(tǒng)認(rèn)為不同的消息彼此獨(dú)立,消息的傳輸總是由處于GSM外部的短消息服務(wù)中心(SMSC)進(jìn)行中繼,消息有目的地或起源地,但只與用戶(hù)和SMSC有關(guān),而與其他GSM基礎(chǔ)設(shè)施無(wú)關(guān)
短消息的體系結(jié)構(gòu)
GSM標(biāo)準(zhǔn)中定義的點(diǎn)-點(diǎn)短消息服務(wù)使得短消息能在移動(dòng)臺(tái)和短消息服務(wù)中心之間傳遞。這些服務(wù)中心是通過(guò)稱(chēng)為SMS- GMSC的特定MSC同GSM網(wǎng)絡(luò)聯(lián)系的。
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查詢(xún)路由信息,并將短消息傳送給接收者所在基站的交換中心;
HLR:Home Location Register,歸屬位置寄存器。用于永久儲(chǔ)存管理用戶(hù)和服務(wù)記錄的數(shù)據(jù)庫(kù),由SMSC產(chǎn)生。SMS網(wǎng)關(guān)與HLR之間的協(xié)議使前者可以要求HLR搜索可找到的用戶(hù)地址。它與MSC與HLR之間的協(xié)議一起,能在移動(dòng)臺(tái)因超出覆蓋區(qū)而丟失報(bào)文、隨后又可找到時(shí)加以提示。
MSC:Mobile Switching Center,移動(dòng)交換中心。負(fù)責(zé)系統(tǒng)切換管理并控制來(lái)自或發(fā)向其他電話或數(shù)據(jù)系統(tǒng)的拔叫。
VLR:Visitor Location Register:,訪問(wèn)位置寄存器。含有用戶(hù)臨時(shí)信息的數(shù)據(jù)庫(kù)。交換中心服務(wù)訪問(wèn)用戶(hù)時(shí)需要這些信息。
重要概念
·移動(dòng)起始短消息:Mobile Originated Short Message。
一個(gè)GSM用戶(hù)發(fā)送短消息時(shí),他必須至少在其內(nèi)容中包含最終地址的識(shí)別符,和處理這消息的服務(wù)中心號(hào)碼,然后請(qǐng)求傳遞。
短消息的傳輸要求在移動(dòng)臺(tái)和MSC之間建立信令連接。消息本身的傳遞要求在無(wú)線路徑上建立專(zhuān)用的鏈路層鏈接,并要求采用專(zhuān)用的消息傳遞協(xié)議。在規(guī)定的協(xié)議棧的頂部是所謂的傳輸層協(xié)議,在移動(dòng)起始短消息情形下,它是一條單獨(dú)的報(bào)文,即SMTP(不是TCP/IP的SMTP)短消息傳送報(bào)文,低層處理應(yīng)答的傳送,它只指出SMSC已收到報(bào)文。
·移動(dòng)終接短消息:Mobile Terminated Short Message。
目的地為GSM用戶(hù)的短消息必須首先先從發(fā)送方路由至短消息服務(wù)中心,然后再被路由至實(shí)際地址。
當(dāng)SMSC有短消息需發(fā)送到期某一GSM用戶(hù)時(shí),它建立一條包含各種利于接收者的信息的SMS-DELIVER報(bào)文。此信息包括用戶(hù)的內(nèi)容,最初的發(fā)送者身份及用于批示短消息已被SMSC接收的時(shí)間標(biāo)記。與MO情形相似,SMS-DELIVER報(bào)文將在各種接口上傳送。
在達(dá)到目的地前,報(bào)文的實(shí)際路由必須利用MAP/C查詢(xún)功能獲得,采用的是如下方法:SMSC將短消息傳到與服務(wù)中心相連的SMS網(wǎng)關(guān),網(wǎng)關(guān)的選擇依賴(lài)于它想到在的用戶(hù),因?yàn)橥ǔ>W(wǎng)關(guān)僅能處理某些用戶(hù)(某家營(yíng)運(yùn)商或某個(gè)國(guó)家的用戶(hù))。這樣,用戶(hù)通過(guò)目錄號(hào)(一般同電話一樣)來(lái)識(shí)別,這些目錄號(hào)最初是由短消息發(fā)送者輸入的,這使得SMS網(wǎng)關(guān)能識(shí)別有關(guān)的HLR并查詢(xún)它。查詢(xún)是通過(guò)發(fā)送一個(gè)專(zhuān)用報(bào)文,即用于短消息的MAP/C SEND ROUTING INFOR報(bào)文來(lái)實(shí)現(xiàn);對(duì)其應(yīng)答既可采用包含用戶(hù)正在訪問(wèn)的MSC/VLR的SS7地址的MAP/C SEND ROUNTING INFO FOR SHORT MESSAGE RESULT報(bào)文,又可當(dāng)已知用戶(hù)此時(shí)不可到達(dá)時(shí)采用拒絕報(bào)文。
SMS由哪些要素組成?
SMS由幾個(gè)與提交或接收相關(guān)的服務(wù)要素組成,如:有效期(在將短消息成功送達(dá)用戶(hù)前SMSC需要保證的儲(chǔ)存時(shí)間),優(yōu)先性。此外,短消息還提供提交消息的時(shí)間、告訴移動(dòng)臺(tái)是否還有更多消息要發(fā)送,以及還有多少條消息要發(fā)送等。
短消息不可到達(dá)
短消息不可到達(dá)的情況有三種:
·當(dāng)被SMS網(wǎng)關(guān)查詢(xún)時(shí),移動(dòng)臺(tái)不在服務(wù)區(qū)域、未獲得服務(wù)授權(quán)、或有未成功發(fā)送報(bào)文正等待告警,HLR就會(huì)立即知道不能發(fā)送;
·第二種情形是,MSC/VLR已收到報(bào)文但不能傳送的情況。此時(shí),它先向SMS網(wǎng)關(guān)發(fā)送一故障指示,作為MAP/H FORWARD SHORT MESSAGE報(bào)文的應(yīng)答;然后,網(wǎng)關(guān)一方面會(huì)向SMSC發(fā)送否定報(bào)告,另一方面向HLR發(fā)送MAP/C SET MESSAGE WAITING DATA報(bào)文,在收到報(bào)文確認(rèn)后進(jìn)行表格更新。該事件會(huì)儲(chǔ)存在VLR和HLR內(nèi)的用戶(hù)記錄中;
第三種情況是MSC/VLR向用戶(hù)發(fā)送有效報(bào)文后發(fā)現(xiàn)不可送達(dá)。
SMS程式開(kāi)發(fā)
九十年代初,AT命令僅被用于modem操作。由于沒(méi)有控制移動(dòng)電話文本消息的先例,因此開(kāi)發(fā)了一種叫SMS Block Mode的協(xié)議,通過(guò)終端設(shè)備(TE)或電腦來(lái)完全控制SMS。幾年后,主要的移動(dòng)電話生產(chǎn)廠商諾基亞、愛(ài)立信、摩托羅拉和HP共同為GSM研制了一整套AT命令,其中包含對(duì)SMS的控制。AT命令在此基礎(chǔ)上演化并被加入GSM 07.05標(biāo)準(zhǔn),以及之后的GSM 07.07標(biāo)準(zhǔn)。
對(duì)SMS的控制共有三種實(shí)現(xiàn)途徑:
· 最初的Block Mode;
· 基于AT命令的Text Mode;
· 基于AT命令的PDU Mode;
到現(xiàn)在,PDU已取代Block Mode,后者逐漸淡出。
什么是PDU Mode?
它是發(fā)送或接收手機(jī)SMS消息的一種方法。消息正文經(jīng)過(guò)十六進(jìn)制編碼后進(jìn)行傳送。
PDU命令有哪些?
基本的PDU命令是AT+CMGR,AT+CMGL,AT+CMGS。例如讀取電話上全部未讀過(guò)的SMS消息,最簡(jiǎn)單的辦法是用AT+CMGL=0;而用AT+CMGL=4則可讀取全部SMS消息,無(wú)論已讀過(guò)與否。
實(shí)例:
15:38:58 TX:AT
15:39:05 TX:AT+CPMS="ME"
15:39:05 RX:AT+CPMS="ME"
15:39:05 RX:
+CPMS: 15,15,4,10,15,15
15:39:05 RX:
OK
15:39:07 TX:AT+CMGL=0
15:39:07 RX:AT+CMGL=0
15:39:07 RX:
+CMGL: 5,0,,52
15:39:07
RX:07914408020033F40407D0B1582C0600000030525183920028D43708
2E7FD3CB633A888E2E83EE6F399B0C32CBDF6D10B96C0FCFE9617AFAED76B95C
15:39:07 RX:
OK
使用工具對(duì)上述收到的SMS進(jìn)行解碼后,可得到如下的解釋?zhuān)?
IEI: 00
LENGTH: 00
MESSAGE REF: 00
STATUS: 00
SC Address length: 07
SC Address type: 91
Type of number: International
Numbering plan identifier: E.164
SC Address: 44802000334
Message Type Indicator: 04
Message Type: SMS-DELIVER / SMS-DELIVER REPORT
More Messages To Send: No
Status Report Indication: No
Reply Path: No
Originating Address Length: 07
Originating Address type: D0
Type of number: Alphanumeric
Numbering plan identifier: Unknown
Originating Address: 1B85C260
Decoded: 1111
Protocol Identifier: Default
Data Coding Scheme: GSM Default Alphabet
SC Timestamp: 00305251839200
decoded: 00/03/25 15:38:29
Time Zone: GMT+0.00H
User Data Length: 28
decimal: 40
Message: To protect the world from devastation
于是我們知道這條SMS消息的第一部分是:
07914408020033F4
07是跟在服務(wù)中心地址內(nèi)的字節(jié)數(shù);
91是TON/NPI。TON/NPI遵守International/E.164標(biāo)準(zhǔn),指在號(hào)碼前需加‘+’號(hào);此外還可有其他數(shù)值,但91最常用到。
44080200033F4是所使用的服務(wù)中心地址,由于位置上略有處理,實(shí)際號(hào)碼應(yīng)為:
44802000334F(字母F意指長(zhǎng)度減1),這就是服務(wù)中心的準(zhǔn)確地址(號(hào)碼)。
下一單元是:
04
這是文件頭字節(jié)(header byte, 是一種bitmask)。將每個(gè)字節(jié)設(shè)為1時(shí),有如下含義:
10000000
回復(fù)路徑(Reply Path):移動(dòng)電話可循發(fā)送SMS消息的短消息中心進(jìn)行回復(fù)(但并非所有SMSC都會(huì)這樣設(shè)置)。
01000000
TP-UDH - 帶有用戶(hù)數(shù)據(jù)文件頭
00100000
TP-Status-Report-Indication - 發(fā)送狀態(tài)報(bào)告給發(fā)信人,表示消息收到
00010000
00001000
此兩類(lèi)在正常的移動(dòng)終接短消息(MT,Mobile Terminated SMS)中不會(huì)使用。
00000100
TP-More Messages to Send - SMSC內(nèi)再無(wú)新消息發(fā)送給該移動(dòng)電話。
00000010
00000001
最后兩個(gè)位數(shù)表示消息種類(lèi) - 10指是移動(dòng)終接短消息(MT),01指移動(dòng)起始短消息(MO,Mobile Originated SMS)。
所以"04"指此條消息是正常的移動(dòng)終接短消息,SMSC內(nèi)再無(wú)新消息發(fā)送給該手機(jī)。