📄 mms实现详细分析(benq m22模块--(3)------mms发送的无线网络连接协议分析_resplendent.htm
字号:
} if(typeof(rename)!="undefined"){ cmtreply(rename, repid); } }//--></SCRIPT>
<SCRIPT type=text/javascript> /*<![CDATA[*/window.onerror=function(){return true;}var RelatedDocData = null, GetAndEval = false;(function(){ var xhr = BdAjax.getXHR(); if(xhr == null){ RelatedDocData = -1; return; } xhr.open("GET", "/sys/search?type=8&word=MMS%CA%B5%CF%D6%CF%EA%CF%B8%B7%D6%CE%F6%A3%A8BENQ%20M22%C4%A3%BF%E9%2A%2D%2D%A3%A83%A3%A9%2D%2D%2D%2D%2D%2DMMS%B7%A2%CB%CD%B5%C4%CE%DE%CF%DF%CD%F8%C2%E7%C1%AC%BD%D3%D0%AD%D2%E9%B7%D6%CE%F6&item=aa546efc91493987b901a0b3&t=" + new Date().getTime(), true); xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if(xhr.status == 0 || xhr.status == 200){ if(GetAndEval){ eval(xhr.responseText); }else{ RelatedDocData = xhr.responseText; } } } } xhr.send(null);})();/*]]>*/</SCRIPT>
<META content="MSHTML 6.00.2900.2722" name=GENERATOR></HEAD>
<BODY onload=formatonlinpic();>
<CENTER>
<SCRIPT type=text/javascript>/*<![CDATA[*/if(top.location != self.location){ top.location = self.location;}var myref = encodeURIComponent("http://hi.baidu.com/luv%5Fresplendent/blog/item/aa546efc91493987b901a0b3%2Ehtml");/*]]>*/</SCRIPT>
<LINK
href="MMS实现详细分析(BENQ M22模块--(3)------MMS发送的无线网络连接协议分析_Resplendent.files/mods.css"
type=text/css rel=stylesheet><LINK
href="MMS实现详细分析(BENQ M22模块--(3)------MMS发送的无线网络连接协议分析_Resplendent.files/fa69aff4f5c7856eddc474e1.css"
type=text/css rel=stylesheet><LINK
href="MMS实现详细分析(BENQ M22模块--(3)------MMS发送的无线网络连接协议分析_Resplendent.files/space.css"
type=text/css rel=stylesheet>
<STYLE type=text/css>#usrbar {
PADDING-RIGHT: 10px; PADDING-LEFT: 0px; FONT-SIZE: 12px; BACKGROUND: #ffffff; FILTER: alpha(opacity=65); PADDING-BOTTOM: 3px; WIDTH: 100%; COLOR: #000000; LINE-HEIGHT: 19px; PADDING-TOP: 4px; FONT-FAMILY: Arial; LETTER-SPACING: normal; HEIGHT: 19px; TEXT-ALIGN: right; moz-opacity: 0.5
}
#usrbar A {
COLOR: #0000cc; TEXT-DECORATION: underline
}
#usrbar A:link {
COLOR: #0000cc; TEXT-DECORATION: underline
}
#usrbar A:visited {
COLOR: #0000cc; TEXT-DECORATION: underline
}
#ft {
CLEAR: both; FONT-SIZE: 12px; COLOR: #666666; LINE-HEIGHT: 20px; FONT-FAMILY: Arial; HEIGHT: 20px; TEXT-ALIGN: center
}
#ft A {
COLOR: #7777cc; TEXT-DECORATION: underline
}
#ft A:link {
COLOR: #7777cc; TEXT-DECORATION: underline
}
#ft A:visited {
COLOR: #7777cc; TEXT-DECORATION: underline
}
#usrbar {
LETTER-SPACING: normal
}
#usrbar A {
LETTER-SPACING: normal
}
#usrbar A:link {
LETTER-SPACING: normal
}
#usrbar A:visited {
LETTER-SPACING: normal
}
#ft {
LETTER-SPACING: normal
}
#ft A {
LETTER-SPACING: normal
}
#ft A:link {
LETTER-SPACING: normal
}
#ft A:visited {
LETTER-SPACING: normal
}
</STYLE>
<DIV id=usrbar><NOBR><A href="http://www.baidu.com/" target=_blank>百度首页</A> | <A
id=hi_index href="http://hi.baidu.com/" target=_blank>百度空间</A>
<SCRIPT type=text/javascript> document.write('| <a href="http://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u=http://hi.baidu.com' + encodeURIComponent('/luv%5Fresplendent/blog/item/aa546efc91493987b901a0b3%2Ehtml') + '">登录</a>'); </SCRIPT>
</NOBR></DIV>
<SCRIPT type=text/javascript>function set_cookie_4_bdtip(index/* start from one */, value){ var bdtip = document.cookie.match(/(^| )BDTIP=([^;]*)(;|$)/); if(!bdtip){ bdtip=new Array(index); for(var i=0,n=bdtip.length;i<n;i++) { if(bdtip[i]=="" || bdtip[i]==null) bdtip[i]=0; if(i == index - 1){ bdtip[i] = value; } } }else{ bdtip = bdtip[2].split('-'); if(index > bdtip.length) bdtip.length= index; for(var i = 0, j = bdtip.length; i < j; i ++){ if(bdtip[i]=="" || bdtip[i]==null) bdtip[i]=0; if(i == index - 1){ bdtip[i] = value; } } } bdtip = bdtip.join('-'); document.cookie = "BDTIP=" + bdtip+ ";expires=Wed, 28-Nov-37 01:45:46 GMT;path=/;domain=.baidu.com";}</SCRIPT>
<DIV id=main align=left><!--[if IE]>
<SCRIPT>
var objmain = document.getElementById("main");
function updatesize(){ var bodyw = window.document.body.offsetWidth; if(bodyw <= 790) objmain.style.width="772px"; else if(bodyw >= 1016) objmain.style.width="996px"; else objmain.style.width="100%"; }
updatesize(); window.onresize = updatesize;
</SCRIPT>
<![endif]-->
<DIV id=header>
<DIV class=lc>
<DIV class=rc></DIV></DIV>
<DIV class=tit><A class=titlink
title="luv_resplenden的空间 http://hi.baidu.com/luv_resplendent"
href="http://hi.baidu.com/luv_resplendent">Resplendent</A></DIV>
<DIV class=desc>☆21世纪、什么最重要—我!博客新地址:http://blog.csdn.net/luv_y</DIV>
<DIV id=tabline></DIV>
<DIV id=tab><A href="http://hi.baidu.com/luv_resplendent">主页</A><A class=on
href="http://hi.baidu.com/luv_resplendent/blog">博客</A><A
href="http://hi.baidu.com/luv_resplendent/album">相册</A><SPAN>|</SPAN><A
href="http://hi.baidu.com/luv_resplendent/profile">个人档案</A> <SPAN>|</SPAN><A
href="http://hi.baidu.com/luv_resplendent/friends">好友</A> </DIV></DIV>
<DIV class=stage>
<DIV class=stagepad>
<DIV style="WIDTH: 100%">
<TABLE class=modth cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=modtl width=7> </TD>
<TD class=modtc noWrap>
<DIV class=modhead><SPAN class=modtit>查看文章</SPAN></DIV></TD>
<TD class=modtc noWrap align=right></TD>
<TD class=modtr width=7> </TD></TR></TBODY></TABLE>
<DIV class=modbox id=m_blog>
<DIV class=tit>MMS实现详细分析(BENQ M22模块*--(3)------MMS发送的无线网络连接协议分析</DIV>
<DIV class=date>2008-06-16 下午 11:49</DIV>
<TABLE style="TABLE-LAYOUT: fixed">
<TBODY>
<TR>
<TD>
<DIV class=cnt id=blog_text>
<P><STRONG><FONT color=#993300 size=4>MMS发送的无线网络连接协议分析<IMG
src="MMS实现详细分析(BENQ M22模块--(3)------MMS发送的无线网络连接协议分析_Resplendent.files/j_0043.gif"></FONT></STRONG></P>
<P><STRONG><FONT color=#993300>转载注明地址:<A
href="http://hi.baidu.com/luv_resplendent/blog/item/aa546efc91493987b901a0b3.html">http://hi.baidu.com/luv_resplendent/blog/item/aa546efc91493987b901a0b3.html</A><BR>
</FONT><FONT
size=+0>MMS在进行发送前,要对无线模块进行无线网络连接,实现GPRS的拨号上网,无线网络连接成功后,才能利用无线模块基于WAP的方式对MMS进行发送,通过移动交换网络,最终发送到终端用户手机上。本节将对无线模块的拨号上网以及建立PPP连接链路的流程图和所用到的协议,如AT指令集、PPP连接协议以及本课题中捕获的无线网络连接的数据进行分析。<BR>
无线网络连接的流程图分析<BR> 本课题中,无线网络采用的是中国移动GPRS网络,无线模块选用的BENQ
M22的GSM/GPRS模块。无线网络连接的步骤为:控制模块通过串口利用AT指令集向无线模块发送连接命令,无线模块进行拨号连接到中国移动GPRS的WAP网关,获得临时分配的IP地址、DNS地址和临时端口号,拨号成功,完成无线网络的连接。利用AT命令无线模块拨号上网以及建立PPP连接的流程图如图4.3所示。<BR>
无线模块的无线网络连接可分为比较明显的两阶段:<BR>
第一阶段,配置无线模块参数,进行一系列初始化,然后发送AT指令拨上中国移<BR>动GPRS的WAP网关;<BR>
第二阶段,同GPRS的WAP网关通过三阶段协商(即LCP连接协商、CHAP密码<BR>认证、NCP网络层协议配置)建立PPP连接链路。<BR>
连接成功后,无线模块就会从GPRS的WAP网关上获得一个动态IP地址,该动态<BR>IP地址一般是10.188.xxx.xxx。接下来,无线模块就可以进行TCP/IP数据包传输,访问<BR>GPRS网内的主机,完成无线网络的连接,发送封装好的MMS信息。</FONT></STRONG></P>
<P></P>
<DIV forimg="1"><STRONG><IMG class=blogimg
src="MMS实现详细分析(BENQ M22模块--(3)------MMS发送的无线网络连接协议分析_Resplendent.files/a2f01801775cfe16728da530.jpg"
border=0 small="0"></STRONG></DIV>
<P><STRONG><FONT color=#993300>AT命令分析</FONT><BR>
AT命令集是调制解调器可以识别并执行的命令,专门用于控制GSM
Modem,它是由美国Hayes公司所发展的数据传输通信接口。计算机和单片机通过串行端口对Modem发出相应的AT命令,可以调整Modem各种工作方式。AT命令简单、容易掌握,GSM07.07协议对AT指令做了详细的介绍。GSM07.07中定义的AT
Command接口,提供了一种移动平台与数据终端设备之间的通用接口。GSM模块提供的命令接口符合GSM07.07规范,在短消息模块收到网络发来的短消息时,能够通过串口发送指示消息,数据终端设备可以向GSM模块发送各种命令。AT指令在当代手机通讯中起着重要的作用,用户能够通过AT指令控制手机的许多行为,包括进行呼叫、拨叫号码、按键控制、短信、电话本、数据业务、补充业务、传真、GPRS等方面的控制。本课题中是控制模块利用AT命令来控制无线模块拨号连接无线网络。</STRONG></P>
<P><STRONG>
AT命令的语法是[[351:在每行命令的开头都必须有“AT”或者“at”作前缀,用输入<CR>来结束这个命令。"ATXX”及少量“AT十XXX”为V.25标准命令集;"AT+CXXX
"为GSM标准所扩展的AT命令;"AT+SXXX”为SIEMENS定义扩展的AT命令。<BR> <FONT
color=#ff6600> <U>发送AT指令时,应注意以下几点</U>:</FONT><BR>
(1)每个AT命令字符串的最后面必须加上CR(也就是键盘上的Enter键)字符,否则无线模块将不识别此命令。这个字符就是结束符。<BR>
(2)除了“A/”及“+++”命令外,其它的命令必须加上AT两个字符。<BR>
(3)命令字符串可以合成一个字符串后再一次送给调制解调器,但总的字符串长度<BR>不得超过40个字符,而且所有的字符必须一律大写或小写。<BR>
本课题中,无线模块采用的是BENQ
M22的GSM/GPRS模块,因为选用的是专业厂家生产的GPRS模块,设计中可以不再考虑GPRS附着和PDP上下文激活等复杂过程,只需用AT指令操作专用的GPRS模块上网即可。用AT命令设置无线模块的参数时,必须先要将命令写入串口,读取串口的应答数据来判断是否成功。一般命令发送成功时,模块会返回数据“OK",表示命令执行成功。如果没有成功,要继续发送命令,<BR><U>发送3次后还是没有成功,就重新初始化串口</U>。<BR>
对<FONT
color=#993300>无线模块GPRS拨号上网</FONT>,需要用到AT+CGDCONT和ATD这两条指令</STRONG></P>
<P><STRONG> 1)
AT+CGDCONT=l,"IP”,“CMWAP”<BR>
此命令用于设置GPRS接入网关,其中第二个数表示PDP (Packet Data
Protocol)<BR>类型为:IP或PPP,第三个数表示接入网关为移动梦网,APN是CMWAP,表示中国移动网应用接口。目前只有中国移动全球通卡才可以使用CMNET功能,而动感地带只能使用CMWAP功能。<BR>
2) ATD *99***1#<BR>
ATD用于设置拨号方式,进行拨号,并设法进入在线(on-line)状态。与传统的电话线Modem相比较,ATD指令在GPRS中有些变化,采用如下<FONT
color=#00ff00>两种格式</FONT>:<BR> <FONT
color=#993300>格式一</FONT>:ATD*99[*[<called
address>][*[<L2P>][*[<cid>]]]]#<BR>
其中99是个服务码,也可用98的(见格式二),国内一般用99: <called address>是w.x.y.z格式的IP
V4地址;<L2P>是用于TE和ME连接的Layer2协议或用于PPP协议的Layer2协议;<cid>是表明PDP上下文的一个数字编号,用AT
+CGDCONT命令创建,一般为1, 20<BR> <FONT
color=#993300>格式二</FONT>:ATD*98[*<cid>]#<BR>
含义同上。<BR> 举例如下:<BR> ATD*99#
//用服务码99建立一个连接<BR> ATD*99* 123.124.125.126*PPP*
1#//用服务码99建立一个连接<BR>
HIP地址123.124.125.124,
L2P=PPP<BR>
//用CID 1,
CID的值由AT十CGDCONT事先<BR>
指定<BR> ATD*99***1# //用服务码99建立连接,CID
=1,其它用事先指定的值<BR> ATD*98*1#//用服务码98建立一个IP连接,CID
=1<BR> 国内最常用的是:ATD
*99***1#,本设计中就采用了此种格式。<BR>
用ATD指令若能拨号上线则返回“CONNECT",否则返回“NO
CARRIER"。<BR>这样,就完成了拨号上GPRS网络的功能,即接收到无线模块返回的“CONNECT",说明无线模块已经连上了移动GPRS的WAP网关,之后即为通过三阶段协商建立PPP链路的过程。<BR></STRONG><FONT
color=#993300
size=3><STRONG><U>PPP协议格式分析</U></STRONG></FONT><BR><STRONG>
利用AT指令无线模块连接上了中国移动的GPRS的WAP网关之后,接着是进行PPP连接。GPRS拨号采用的是点对点协议(Point to Point
Protocol,
PPP),该协议是是TCP/IP网络协议包的一个成员。其主要作用是无线模块通过拨号连接上终端服务器后,由PPP取得一个临时的IP地址,使该设备成为网络上的一个节点。只要PPP链路顺利建立成功,获得临时的IP地址,则即可在其上嵌入IP等数据包进行数据传送,完成无线模块的无线网络连接。<BR>
PPP协议(Point-to-Point
Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。其目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。</STRONG></P>
<P><STRONG>PPP协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。PPP协议包含了以下几个部分:<BR>
.链路控制协议LCP (Link Control
Protocol):LCP负责创建,维护或终止一次物理连接;<BR> .网络控制协议NCP (Network
Control
Protocol):NCP是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题;<BR>
.认证协议,PPP协议支持两种验证协议:口令验证协议PAP (PasswordAuthentication
Protocol)和挑战握手验证协议CHAP (Challenge-Handshake
AuthenticationProtocol)。验证过程在PPP协议中为可选项,在连接建立后进行连接者身份验证的目的是为了防止有人在未经授权的情况下成功连接,从而导致泄密。PAP是一种简单的明文验证方式,安全性较差。而CHAP是对PAP的改进,是一种加密的验证方式,使用挑战口令以哈希算法对口令进行加密,用三次握手的方法周期性地检验对端的节点,优点在于密钥不在网络中传送,不会被窃听。本课题中采用的是挑战握手验证协议CHAP.<BR>
PPP连接的建立<FONT
color=#993300>主要经过三个阶段</FONT>,分别是LCP连接协商、CHAP密码认证以及<BR>NCP网络层协议配置。<BR> <U>
第一阶段:LCP连接协商</U><BR>
在这个阶段,将对基本的通讯方式进行选择。链路两端设备通过LCP向对方发送LCP数据报配置请求(Configure-Request),对方同意接收后双方互发LCP数据报配置应答(Configure-Ack
)。一旦一个配置成功信息包(Configure-Ack
packet)被发送且被接收,就完成了交换,进入LCP开启状态。<BR>
<U>第二阶段:CHAP密码认证</U><BR>
在这个阶段,客户端会将自己的身份发送给远端的接入服务器。服务器向用户发PPP CHAP安全性认证挑战,接着用户给服务器送PPP
CHAP安全性认证响应,服务器再向用户发送 PPP CHAP安全性认证成功。<BR>
该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。<BR>
<U>第三阶段:NCP网络层协议配置</U><BR>
认证阶段完成之后,PPP将调用在链路创建阶段(阶段一)选定的各种网络控制协议(NCP
)。选定的NCP解决PPP链路之上的高层协议问题,例如,在该阶段IP控制协议(IPCP)可以向拨入用户分配动态IP地址。
在这个阶段,先是用户向服务器发送PPP
NCP网络控制数据包(网络协议配置,要求服务器提供IP地址和DNS,NBNS信息),接着服务器向用户发送配置请求PPP
NCP网络控制数据包(为用户分配IP地址),用户向服务器发送配置应答PPP
NCP网络控制数据包(接受所分配的IP地址),最后服务器向用户发送配置应答PPP
NCP网络控制数据包(同意用户的IP地址和DNS地址)。<BR>
这样,经过三个阶段以后,一条完整的PPP链路就建立起来了,用户即可向服务器<BR>发送IP数据包。</STRONG></P>
<P><STRONG><FONT color=#993300>转载注明地址:</FONT><A
href="http://hi.baidu.com/luv_resplendent/blog/item/aa546efc91493987b901a0b3.html">http://hi.baidu.com/luv_resplendent/blog/item/aa546efc91493987b901a0b3.html</A><BR><BR><FONT
color=#993300 size=4><A
href="http://hi.baidu.com/luv_resplendent/blog/item/f92a6dbf5cb83b0f19d81fd5.html"
target=_blank>下一讲:PPP协议分析</A></FONT></STRONG></P></DIV></TD></TR></TBODY></TABLE><BR>
<DIV class=opt><A title=查看该分类中所有文章
href="http://hi.baidu.com/luv_resplendent/blog/category/Windows%20Ce">类别:Windows
Ce</A> | <A title=将此文章添加到百度搜藏 onclick="return addToFavor();"
href="http://cang.baidu.com/do/add" target=_blank>添加到搜藏</A> | 浏览(<SPAN
id=result></SPAN>) | <A
href="http://hi.baidu.com/luv_resplendent/blog/item/aa546efc91493987b901a0b3.html#send">评论</A> (0)
<SCRIPT language=javascript>/*<![CDATA[*/var pre = [true,'MMS实现详细分析(BENQ M22模块)*--(2)---MMS PDU的头域和二进制编码分析', 'MMS实现详细分析(BENQ M22模块...','/luv%5Fresplendent/blog/item/bf597507bf427fc87a894754.html'];var post = [true,'MMS实现详细分析(BENQ M22模块*--(4)------PPP协议分析','MMS实现详细分析(BENQ M22模块*...', '/luv%5Fresplendent/blog/item/f92a6dbf5cb83b0f19d81fd5.html'];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -