LTE 网络下彩信收发流程分析

1、 需要抓取的LOG

抓取ADB log

adb shell logcat -v time -b radio > logcat_radio.txt

adb shell logcat -v time > logcat.txt

QXDM logs with default logmask

TCPDUMP command to collect on all interfaces

adb shell tcpdump -i any -s 0 -w /data/tcpdump.pcap

2、 分析log

分析adb log 过滤关键字:

MmsService| QtiGsmDCT| ConnectivityService:|Apnsettings

打开tcpdump.pcap 分析彩信收发过程:

1. 短信发送前先要给qcril发setup data call请求

2. qcril再通过qmi请求start network interface告诉modem发起PDN connectivity request,

3. EMM实体发送以下三条NAS信令建立起到彩信网关的默认承载(到CT的是qci=8的承载):

[0xB0E3] OTA LOG LTE NAS ESM Plain OTA Outgoing MessagePDN connectivity request Msg

[0xB0E2] OTA LOG LTE NAS ESM Plain OTA Incoming MessageActivate default EPS bearer context request Msg

[0xB0E3] OTA LOG LTE NAS ESM Plain OTA Outgoing MessageActivate default EPS bearer context accept Msg

有以上三条消息,说明PDN 建立成功,也意味着qcril 的Setup data call请求成功。Data call机那里起来后,有几点信息必须要从log 中分析出来(qcril中过滤call_params):

LTE 网络下彩信收发流程分析

1. 源IP地址是手机的IP地址,即IP Addresses,端口随机

2. 目的IP地址是彩信网关的IP地址,即Gateway Addresses,端口一般是80

这样我们就知道了网络上两个交互程序的标识(IP+PORT)。

并且我们知道彩信的收发是使用HTTP协议,因此在Wireshark里面应用以下过滤器,就可以把整个彩信收发流程涉及到的数据包过滤出来:

LTE 网络下彩信收发流程分析

过滤联通和移动卡:

(ip.src == 10.0.0.172) or(ip.dst == 10.0.0.172) or mmse or http.accept

过滤电信卡:

(ip.src == 10.0.0.200) or (ip.dst == 10.0.0.200) or(mmse) or http.accept

10.0.0.172是移动和联通手机wap上网的代理服务器,10.0.0.200是中国电信的

3、 Tcpdump 抓包分析截图

发送彩信协议报文截图:

LTE 网络下彩信收发流程分析

MMSE/SMIL m-send-req 彩信发送报文内容:

LTE 网络下彩信收发流程分析

MMSE/SMIL m-send-conf彩信发送成功确认报文:

LTE 网络下彩信收发流程分析

接收彩信协议报文截图:

LTE 网络下彩信收发流程分析

MMSE/SMIL m-retrive-conf 报文:

LTE 网络下彩信收发流程分析

MMSE/SMIL m-notifyresp-ind报文(通知回应):

LTE 网络下彩信收发流程分析

4、 如果没有tcpdump包日志

可以通过qcat工具将qxdm 抓取的.isf log转换成pcap 格式,然后通过Wireshark 工具打开分析.

LTE 网络下彩信收发流程分析

如下是一个完整的qxdm 抓取的MMS 发送过程的截图:

LTE 网络下彩信收发流程分析

5、 MMS业务系统的主要网络单元

SMS只能传输文本信息,每次最多140个字节,MMS有自己的消息格式, 并且为了减少传输的数据量,克服无线网络带宽窄、高延迟、稳定性差等特点,需要对传输的数据进行压缩。基本的压缩编码机制是由WAP-209- MMSEncapsulation定义的。发送和接收MMS的通信中,被传输的是MMSPDU(协议数据单元)。


LTE 网络下彩信收发流程分析


MMSC是整个系统的核心,它完成对MM 的存储和处理,包括消息的输入输出,地址解析,通知报告等,它由MMS中继服务器MMS Relay,MMS Server, User DB,Mseeage Store等组成。

WAP网关,连接MMSC和WAP网络。

MMS PDU:

a) 客户端将MM发送给发端MMS代理中继(M-Send.req )

b) 发端MMS代理中继发送给客户端(M-Send.conf )

c) 从MMS代理中继取回消息(WSP/HTTP GET.req )

d) 接收MM回复,收端代理中继发送至客户端(M-Retrieve.conf )

e) 新MM到达通知,收端代理中继发送至客户端(M-Notification.ind )

f) MM通知回复,客户端发送至收端代理中继(M-NotifyResp. ind )

g) 己发送消息的发送报告(M-Delivery.ind )

h) 应答发送的消息(M-Acknowledge.ind )

i) 已发送消息的阅读报告(M-Read-Rec.ind, M-Read-Orig.ind)

j) 转发消息(MMS客户端发送一个请求让MMS代理中继转发消息 M-Forward.req和M-Forward. conf

k) 存储或更新消息(M-Mbox-Store.req, M-Mbox-Store.conf)

l) 浏览下载消息(M-Mbox-View.req, M-Mbox-View.conf)

m) MMBOX上传操作(M-Mbox-Upload.req, M-Mbox-Upload.conf)

n) MMBOX删除操作(M-Mbox-Delete.req, M-Mbox-Delete.conf)

MMS服务的实现是通过MMS客户端和MMS分发代理之间相互唤起和响应来传递信息的,这些传输流包括MM信息和相应的响应状态信息等。而这些MM信息被封装在相关的PDU中进行传输。

完整的MMS信息被包含在MMS PDU之中,采用多媒体邮件扩展MIME方式打包。在基于WAP的传输方式中,MMS PDU被封装在WSP PDU之中,作为WSP的消息体传输。WSP PDU的内容类型必须被指定为application/vnd.-wap.mms-message,用以指明客户端应该进行的处理操作,它可以将多媒体部 分的内容与显示控制部分的内容封装成为一个消息体。 MMS PDU由MMS头和消息体组成。MMS头具体的描述了PDU的特定信息,消息体是可选的。通信的大多数情况是没有消息体的,只有在M-Send.req和 M-Retrieve.conf原语中有消息体。在一个MMS中一次可填充多个消息体,消息体可以是不同类型的,由多个媒体对象组成,每个对象占据一个 part(按照RFC2387标准)。根据消息内容的组装是否有序,消息的组装方式分为:.application/vnd.wap.multipart.mixed方式,所有的消息内容混合在一起,没有时间上的顺序,在终端同一时间一次就把所有的消息内容显示出来。.application/vnd.wap.multipart.related方式,各消息内容之间有一定关系,该关系可能是显示的时间上的先后,显示的位置等。这样在终端显示该消息的时候,就可以以类似"小电影"的方式显示一系列消息,使得该MM的显示更加趣味化。

在MMS PDU之中,application/vnd.wap.multipart.related含有显示控制语言" presentation ",而application/vnd.wap.multipart.mixed不含有显示控制语言。通过application /vnd.wap.multipart.related内容类型可以将多媒体部分的内容与显示控制部分" presentation"内容封装成为一个消息体。

一个完整的MMS传输过程中的MM相关PDU

LTE 网络下彩信收发流程分析

由上图可看出MMS传输MM相关的PDU的整个过程为: 1) MMS客户端发送MM时,MM被封装在称为M-Send.req PDU中,并被传送给MMS分发代理; 2)通过M-Send.conf PDU接收分发代理返回的信息; 3) MMS分发代理通过M-Notification.ind PDU通知MMS客户端有新MM到达,MMS客户端通过M-NotifyResp.ind PDU进行回应; 4) MMS客户端从MMS分发代理请求MM下载的操作基于标准的WSP/HTTPGET方法,本项目中采用WSP GET.req PDU,回应下载的PDU类型为M-Retrive.conf PDU; 5) MMS客户端可以向MMS分发代理请求M-Forward.req PDU转发位于服务器上的MM,并获取回应信息M-Forward.conf PDU; 6)当MMS客户端发送或转发的MM被接收方成功接收后,如果发送方请求传达报告、接收方允许该操作,则分发代理会向发送方发送传达报告M-Delivery.ind PDU,指示mm传送状态信息,不需要客户端进行回应或确认; 7)当发送方要求已读报告、接收方允许己读报告时,MMS客户端产生M-read-rec.ind PDU发送给接收方的分发代理,由其转发给原始发送方的分发代理,后者接收到M-read-rec.ind PDU后,产生一个M-read-orig.ind PDU并将其发送到MMS客户端来传送已读报告; 8) MMS客户端通过M-Mbox-Store.req PDU和M-Mbox-Store.conf PDU将新到MM存储到MMBOX,或更新已在MMBOX中的MM的状态和标记;通过M-Mbox-View.req PDU向MMS分发代理请求位于MMBOX中的一个或多个MM的信息用于浏览,也可以获取指定的MM的内容;通过M-Mbox-Upload.req PDU将本地的MM上传存储到MMBOX中;通过M-Mbox-Delete.req PDU请求MMS分发代理删除位于MMBOX中的MM. MMB OX中的MM均有MM标记属性,其由客户端进行维护,主要用于客户端检索、过滤MM之用,这些功能支持是可选的。


分享到:


相關文章: