首页 > 试题

sms是什么意思

更新时间:2022-12-11 01:11:19 阅读: 评论:0

初三上学期重要吗-接力赛规则


2022年12月11日发(作者:一二九运动及其历史意义是什么)

CDMASMSPDU全解析

单条短信内容最⼤的长度是140字节,如果内容能够采⽤7bitASCII编码,那么可以传输的内容长度是140X8/7=160。如果发送的内容

长度超过160,需要将短信拆分成多条短信,那么拆分后的短信需要⼀个header来描述总共有⼏条,这是第⼏条短信等内

容,140X8=160X7=134X8+6X8=153X7+7X7,也就是如果7bit编码,那么这条短信能够存储153个字符。如果发送的字符超过

160,假如是161,那么将会拆分成两条短信,153+8,⼀条发送153个字符,另⼀条只发送8个字符。

假如我们需要发送⼀条短信给某⼀个⼈,基本流程是发送⽅编辑⼀条短信点击发送,这条短信会submit到短信中⼼,短信中⼼会将该条短

信delivery到接收端,接收端收到短信中⼼的短信后,会acknowledge短信中⼼,已经收到这条短信了。这个过程其实发送端并不清楚接收

⽅到底有没有收到短信。如果发送端希望知道短信到底有没有抵达接收端,那么发送的时候可以带⼀个信息给短信中⼼deliveryreport,告

知短信中⼼我希望接收端如果收到短信了,请将这个信息通知我,如果没有收到,也请告诉我原因。那么短信中⼼将短信delivery给接收端

后,接收端acknowledge短信中⼼,短信中⼼这个时候就知道短信已经抵达接收端,再通知发送端短信已经送到了接收端。这基本上就是

短信发送接收的⼀个最简单的抽象了。另外还有⼀种⼩区⼴播短信(cellbroadcast)这种短信在国内应该不⽀持,如果发⽣地震,⽕灾等

灾害的时候,终端会收到这种短信,只是内容上和普通通信有些区别,但是解析过程和普通短信是⼀样。

在正式解析PDU之前,还请了解编码的基本知识,了解8bit,7bit,Unicode,utf-8,DTMF编码和解码。

我先列举出⼏个CDMASMS的PDU(下⾯短信中没有涉及到长短信和Unicode的短信,在解释这⼏个后,会专门对长短信进⾏讲解)

//发送的短信

0702c620468c8e96102c8cbb366f0a0140

//接收到的短信

0702c620468c8e9c0a20229e8c800b108294f8241714

0102

//acknowledge的短信(收到短信后,需要ACK短信中⼼,告知短信中⼼我收到了)

02040702c620468c8e90070198

//cellbroadcast

1300031008d00106102c2870e1420801c00c01c0

当我⾸次看到上⾯四个短信PDU后,⼀脸茫然,不知所措,感觉好难。后⾯随着学习的深⼊,按照3GPP2SMS的spec就能⼀步⼀步的揭

开PDU的⾯纱,看看⾥⾯到底隐藏着什么内容。仔细观察⼀下这四个PDU,开头是不⼀样的,有00,01,02,这就是messagetype,

标明这是⼀条什么类型的短信。不同的短信,内容上就有些差别。但是解析过程是⼀样的。下⾯就是messagetype的定义,短信PDU都是

以messagetype开始的。

⽆论是哪种type的message,format都是⼀样的,

Messagetype之后就是多个固定结构,id,length,data,id描述了数据类型,length描述的是data的长度。我们对发送的短信和cell

Messagetype之后就是多个固定结构,id,length,data,id描述了数据类型,length描述的是data的长度。我们对发送的短信和cell

broadcast进⾏format拆分,拆分之后对每个id,length,data分析就简单了。另外两条⼤家可以做⼀下同步练习。其中data的结构可能

也是按照id,length,data的结构进⾏组合的。也就是说data可能是⼀种复合结构。

三种messagetype包含的内容不同,PointtoPoint最为复杂,⽽broadcast和acknowledgemessage都⾮常简单。

各种ParameterIdentifiers的定义如下,根据parameterid,在spec中找到对应的部分,根据spec就可以解析出data的内容。有些data

内容包含多个信息,并且信息长度不能被4整除,需要将data转换为⼆进制处理就简单了.

先以发送的短信作为例⼦进⾏解析

0702c620468c8e96102c8cbb366f0a0140

我们把这个按照parameterid进⾏拆分成,对每⼀段分别进⾏解析。

00//messagetype(point-to-point)

00021002//把00021002id,length和data标成不同颜⾊00021002,⼀般情况id和length都是8bit,id=00(16进制)=

00000000(⼆进制),在parameteridentifierstable表⾥找到00000000对应的id,也就是TelerviceIdentifier,在spec中可以

继续搜索00000000或者TelerviceIdentifier,找到后有详细的解释TelerviceIdentifier的结构如何。这个结构⽐较简单,就不详细

说了。

040702c620468c8e90//按照上⾯⽅法标成不同的颜⾊040702c620468c8e90,id=04=00000100,在parameter

identifierstable⾥找到00000100是DestinationAddress,在spec⾥⾯搜索00000100或者DestinationAddress,找到的是

AddressParameters,DestinationAddress和OriginatingAddress有同样的结构,如下表,这是⼀个变长的结构,需要读⼀下

spec,每个item代表的含义。040702c620468c8e90//04就是id,07是长度

040702c620468c8e90//接下来就是Digitmode和numbermode,都是⼀个bit,0=0000,所以Digitmode和numbermode都

是0,Digitmode=0说明采⽤DTMF格式编码,如果等于1表⽰的是采⽤8bit编码,numbermode具体表⽰还需要查其他的

spec(email类型的地址会应⽤到),感兴趣的可以⾃⾏查阅。根据spec,Digitmode和numbermode都是0,那么numbertype和

numberplan都不存在。下⼀个是NUM_FIELDS,长度是8bit,由于Digitmode和numbermode已经占⽤了两个bits,这个时候我们将

02c620468c8e90全部转化为⼆进制就容易解析了。

00001011就是NUM_FIELDS,等于11。后⾯就是CHARi,CHARi可能是4bit或者8bit,由于Digitmode=0,采⽤DTMF编码,采⽤

4bit编码,⼀共是11个数字,每个DTMF对应的数字可以参考下表,最终number是,最后留下两个bit是rerved。到

此DestinationAddress就解析完了,是不是很简单。

060100//按照同样的⽅法将不同不同表⽰成不同颜⾊060100,id=06=00000110,parameteridentifierstable⾥找到

00000110,对应的是BearerReplyOption,定义如下,06是id,01是长度,00=00000000,REPLY_SEQ是000000,两个bit

是rerved的。

200106102c8cbb366f0a0140//这部分是重点了,仍然⽤同样⽅法表⽰成不同颜

⾊200106102c8cbb366f0a0140,id=08=00001000,在ParameterIdentifiertable中找到00001000是

BearerData,搜索spec,发现了什么,BearerData是⼀个复合结构,Bearerdata的subdata也是id,length,data的结构,这个bear

data的length=10=16,data就是06102c8cbb366f0a0140。我们先给这个标上颜⾊,可以看到有三个sub

data。Bearerdata的subdata的id有单独的定义,也就是bearerdatasubid的值定义上和parameteridentifiertable是没有任何关系

的,⼀定不要混淆,他们不在同⼀layer上。

06102c8cbb366f0a0140

每种短信的bearerdata的subparameter是有很⼤的区别的,含有的内容有很⼤的差异,在此就不⼀⼀列举每种短信的bearerdata的内

容了,只列出bearerdata的subparametertable,根据这个table和对应的spec就可以解析任意短信的bearerdata了。

我们继续拿06102c8cbb366f0a0140作为例⼦说明

//解析⽅法还是⼀样的,id=00=00000000,在上表中查到是MessageIdentifier,找到对应的spec,如下

ID=00,length=03,messagetype是4个bit就是2=0010,MessageID占⽤了16个bit,就是0002,还剩下最后⼀个

0=0000,Header_IND=0(占⼀个bit),剩下的3个bit是rerved。继续对每个item进⾏解释。Messagetype=0010标明的是

messagetype,每个值的意思见表,0010是submit,MO的,符合我们的期望,因为这就是⼀条发送的短信。MESSAGE_ID=0002这

个⾮常有⽤(后⾯会见识到),messageidentifier。HEADER_IND等于1标明的是urdatasub-parameter(00000001)是有

header的,等于0是urdatasub-parameter没有header。这⾥等于0,就是没有header。对于长短信(>160)都需要urdata

sub-parameter含有header,来说明这是长短息的第⼏条。对于长短信我们会再单独介绍。

MessageIdentifier

0106102c8cbb366f//id=01=00000001,这个就是urdatasub-parameter,找到对应的

spec,length=06,MSG_ENCODING占⽤了5个bit,在此我们将后⾯的数据全部转为2进制。

本文发布于:2022-12-11 01:11:19,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/82523.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:古宅凶灵
下一篇:我还有话要说
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图