?? mms實現(xiàn)詳細分析(benq m22模塊--(3)------mms發(fā)送的無線網絡連接協(xié)議分析_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實現(xiàn)詳細分析(BENQ M22模塊--(3)------MMS發(fā)送的無線網絡連接協(xié)議分析_Resplendent.files/mods.css"
type=text/css rel=stylesheet><LINK
href="MMS實現(xiàn)詳細分析(BENQ M22模塊--(3)------MMS發(fā)送的無線網絡連接協(xié)議分析_Resplendent.files/fa69aff4f5c7856eddc474e1.css"
type=text/css rel=stylesheet><LINK
href="MMS實現(xiàn)詳細分析(BENQ M22模塊--(3)------MMS發(fā)送的無線網絡連接協(xié)議分析_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實現(xiàn)詳細分析(BENQ M22模塊*--(3)------MMS發(fā)送的無線網絡連接協(xié)議分析</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發(fā)送的無線網絡連接協(xié)議分析<IMG
src="MMS實現(xiàn)詳細分析(BENQ M22模塊--(3)------MMS發(fā)送的無線網絡連接協(xié)議分析_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在進行發(fā)送前,要對無線模塊進行無線網絡連接,實現(xiàn)GPRS的撥號上網,無線網絡連接成功后,才能利用無線模塊基于WAP的方式對MMS進行發(fā)送,通過移動交換網絡,最終發(fā)送到終端用戶手機上。本節(jié)將對無線模塊的撥號上網以及建立PPP連接鏈路的流程圖和所用到的協(xié)議,如AT指令集、PPP連接協(xié)議以及本課題中捕獲的無線網絡連接的數(shù)據(jù)進行分析。<BR>
無線網絡連接的流程圖分析<BR> 本課題中,無線網絡采用的是中國移動GPRS網絡,無線模塊選用的BENQ
M22的GSM/GPRS模塊。無線網絡連接的步驟為:控制模塊通過串口利用AT指令集向無線模塊發(fā)送連接命令,無線模塊進行撥號連接到中國移動GPRS的WAP網關,獲得臨時分配的IP地址、DNS地址和臨時端口號,撥號成功,完成無線網絡的連接。利用AT命令無線模塊撥號上網以及建立PPP連接的流程圖如圖4.3所示。<BR>
無線模塊的無線網絡連接可分為比較明顯的兩階段:<BR>
第一階段,配置無線模塊參數(shù),進行一系列初始化,然后發(fā)送AT指令撥上中國移<BR>動GPRS的WAP網關;<BR>
第二階段,同GPRS的WAP網關通過三階段協(xié)商(即LCP連接協(xié)商、CHAP密碼<BR>認證、NCP網絡層協(xié)議配置)建立PPP連接鏈路。<BR>
連接成功后,無線模塊就會從GPRS的WAP網關上獲得一個動態(tài)IP地址,該動態(tài)<BR>IP地址一般是10.188.xxx.xxx。接下來,無線模塊就可以進行TCP/IP數(shù)據(jù)包傳輸,訪問<BR>GPRS網內的主機,完成無線網絡的連接,發(fā)送封裝好的MMS信息。</FONT></STRONG></P>
<P></P>
<DIV forimg="1"><STRONG><IMG class=blogimg
src="MMS實現(xiàn)詳細分析(BENQ M22模塊--(3)------MMS發(fā)送的無線網絡連接協(xié)議分析_Resplendent.files/a2f01801775cfe16728da530.jpg"
border=0 small="0"></STRONG></DIV>
<P><STRONG><FONT color=#993300>AT命令分析</FONT><BR>
AT命令集是調制解調器可以識別并執(zhí)行的命令,專門用于控制GSM
Modem,它是由美國Hayes公司所發(fā)展的數(shù)據(jù)傳輸通信接口。計算機和單片機通過串行端口對Modem發(fā)出相應的AT命令,可以調整Modem各種工作方式。AT命令簡單、容易掌握,GSM07.07協(xié)議對AT指令做了詳細的介紹。GSM07.07中定義的AT
Command接口,提供了一種移動平臺與數(shù)據(jù)終端設備之間的通用接口。GSM模塊提供的命令接口符合GSM07.07規(guī)范,在短消息模塊收到網絡發(fā)來的短消息時,能夠通過串口發(fā)送指示消息,數(shù)據(jù)終端設備可以向GSM模塊發(fā)送各種命令。AT指令在當代手機通訊中起著重要的作用,用戶能夠通過AT指令控制手機的許多行為,包括進行呼叫、撥叫號碼、按鍵控制、短信、電話本、數(shù)據(jù)業(yè)務、補充業(yè)務、傳真、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>發(fā)送AT指令時,應注意以下幾點</U>:</FONT><BR>
(1)每個AT命令字符串的最后面必須加上CR(也就是鍵盤上的Enter鍵)字符,否則無線模塊將不識別此命令。這個字符就是結束符。<BR>
(2)除了“A/”及“+++”命令外,其它的命令必須加上AT兩個字符。<BR>
(3)命令字符串可以合成一個字符串后再一次送給調制解調器,但總的字符串長度<BR>不得超過40個字符,而且所有的字符必須一律大寫或小寫。<BR>
本課題中,無線模塊采用的是BENQ
M22的GSM/GPRS模塊,因為選用的是專業(yè)廠家生產的GPRS模塊,設計中可以不再考慮GPRS附著和PDP上下文激活等復雜過程,只需用AT指令操作專用的GPRS模塊上網即可。用AT命令設置無線模塊的參數(shù)時,必須先要將命令寫入串口,讀取串口的應答數(shù)據(jù)來判斷是否成功。一般命令發(fā)送成功時,模塊會返回數(shù)據(jù)“OK",表示命令執(zhí)行成功。如果沒有成功,要繼續(xù)發(fā)送命令,<BR><U>發(fā)送3次后還是沒有成功,就重新初始化串口</U>。<BR>
對<FONT
color=#993300>無線模塊GPRS撥號上網</FONT>,需要用到AT+CGDCONT和ATD這兩條指令</STRONG></P>
<P><STRONG> 1)
AT+CGDCONT=l,"IP”,“CMWAP”<BR>
此命令用于設置GPRS接入網關,其中第二個數(shù)表示PDP (Packet Data
Protocol)<BR>類型為:IP或PPP,第三個數(shù)表示接入網關為移動夢網,APN是CMWAP,表示中國移動網應用接口。目前只有中國移動全球通卡才可以使用CMNET功能,而動感地帶只能使用CMWAP功能。<BR>
2) ATD *99***1#<BR>
ATD用于設置撥號方式,進行撥號,并設法進入在線(on-line)狀態(tài)。與傳統(tǒng)的電話線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協(xié)議或用于PPP協(xié)議的Layer2協(xié)議;<cid>是表明PDP上下文的一個數(shù)字編號,用AT
+CGDCONT命令創(chuàng)建,一般為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網關,之后即為通過三階段協(xié)商建立PPP鏈路的過程。<BR></STRONG><FONT
color=#993300
size=3><STRONG><U>PPP協(xié)議格式分析</U></STRONG></FONT><BR><STRONG>
利用AT指令無線模塊連接上了中國移動的GPRS的WAP網關之后,接著是進行PPP連接。GPRS撥號采用的是點對點協(xié)議(Point to Point
Protocol,
PPP),該協(xié)議是是TCP/IP網絡協(xié)議包的一個成員。其主要作用是無線模塊通過撥號連接上終端服務器后,由PPP取得一個臨時的IP地址,使該設備成為網絡上的一個節(jié)點。只要PPP鏈路順利建立成功,獲得臨時的IP地址,則即可在其上嵌入IP等數(shù)據(jù)包進行數(shù)據(jù)傳送,完成無線模塊的無線網絡連接。<BR>
PPP協(xié)議(Point-to-Point
Protocol點到點協(xié)議)是為在同等單元之間傳輸數(shù)據(jù)包這樣的簡單鏈路設計的鏈路層協(xié)議。這種鏈路提供全雙工操作,并按照順序傳遞數(shù)據(jù)包。其目的主要是用來通過撥號或專線方式建立點對點連接發(fā)送數(shù)據(jù),使其成為各種主機、網橋和路由器之間簡單連接的一種共通的解決方案。</STRONG></P>
<P><STRONG>PPP協(xié)議中提供了一整套方案來解決鏈路建立、維護、拆除、上層協(xié)議協(xié)商、認證等問題。PPP協(xié)議包含了以下幾個部分:<BR>
.鏈路控制協(xié)議LCP (Link Control
Protocol):LCP負責創(chuàng)建,維護或終止一次物理連接;<BR> .網絡控制協(xié)議NCP (Network
Control
Protocol):NCP是一族協(xié)議,負責解決物理連接上運行什么網絡協(xié)議,以及解決上層網絡協(xié)議發(fā)生的問題;<BR>
.認證協(xié)議,PPP協(xié)議支持兩種驗證協(xié)議:口令驗證協(xié)議PAP (PasswordAuthentication
Protocol)和挑戰(zhàn)握手驗證協(xié)議CHAP (Challenge-Handshake
AuthenticationProtocol)。驗證過程在PPP協(xié)議中為可選項,在連接建立后進行連接者身份驗證的目的是為了防止有人在未經授權的情況下成功連接,從而導致泄密。PAP是一種簡單的明文驗證方式,安全性較差。而CHAP是對PAP的改進,是一種加密的驗證方式,使用挑戰(zhàn)口令以哈希算法對口令進行加密,用三次握手的方法周期性地檢驗對端的節(jié)點,優(yōu)點在于密鑰不在網絡中傳送,不會被竊聽。本課題中采用的是挑戰(zhàn)握手驗證協(xié)議CHAP.<BR>
PPP連接的建立<FONT
color=#993300>主要經過三個階段</FONT>,分別是LCP連接協(xié)商、CHAP密碼認證以及<BR>NCP網絡層協(xié)議配置。<BR> <U>
第一階段:LCP連接協(xié)商</U><BR>
在這個階段,將對基本的通訊方式進行選擇。鏈路兩端設備通過LCP向對方發(fā)送LCP數(shù)據(jù)報配置請求(Configure-Request),對方同意接收后雙方互發(fā)LCP數(shù)據(jù)報配置應答(Configure-Ack
)。一旦一個配置成功信息包(Configure-Ack
packet)被發(fā)送且被接收,就完成了交換,進入LCP開啟狀態(tài)。<BR>
<U>第二階段:CHAP密碼認證</U><BR>
在這個階段,客戶端會將自己的身份發(fā)送給遠端的接入服務器。服務器向用戶發(fā)PPP CHAP安全性認證挑戰(zhàn),接著用戶給服務器送PPP
CHAP安全性認證響應,服務器再向用戶發(fā)送 PPP CHAP安全性認證成功。<BR>
該階段使用一種安全驗證方式避免第三方竊取數(shù)據(jù)或冒充遠程客戶接管與客戶端的連接。在認證完成之前,禁止從認證階段前進到網絡層協(xié)議階段。如果認證失敗,認證者應該躍遷到鏈路終止階段。<BR>
<U>第三階段:NCP網絡層協(xié)議配置</U><BR>
認證階段完成之后,PPP將調用在鏈路創(chuàng)建階段(階段一)選定的各種網絡控制協(xié)議(NCP
)。選定的NCP解決PPP鏈路之上的高層協(xié)議問題,例如,在該階段IP控制協(xié)議(IPCP)可以向撥入用戶分配動態(tài)IP地址。
在這個階段,先是用戶向服務器發(fā)送PPP
NCP網絡控制數(shù)據(jù)包(網絡協(xié)議配置,要求服務器提供IP地址和DNS,NBNS信息),接著服務器向用戶發(fā)送配置請求PPP
NCP網絡控制數(shù)據(jù)包(為用戶分配IP地址),用戶向服務器發(fā)送配置應答PPP
NCP網絡控制數(shù)據(jù)包(接受所分配的IP地址),最后服務器向用戶發(fā)送配置應答PPP
NCP網絡控制數(shù)據(jù)包(同意用戶的IP地址和DNS地址)。<BR>
這樣,經過三個階段以后,一條完整的PPP鏈路就建立起來了,用戶即可向服務器<BR>發(fā)送IP數(shù)據(jù)包。</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協(xié)議分析</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實現(xiàn)詳細分析(BENQ M22模塊)*--(2)---MMS PDU的頭域和二進制編碼分析', 'MMS實現(xiàn)詳細分析(BENQ M22模塊...','/luv%5Fresplendent/blog/item/bf597507bf427fc87a894754.html'];var post = [true,'MMS實現(xiàn)詳細分析(BENQ M22模塊*--(4)------PPP協(xié)議分析','MMS實現(xiàn)詳細分析(BENQ M22模塊*...', '/luv%5Fresplendent/blog/item/f92a6dbf5cb83b0f19d81fd5.html'];
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -