更新時(shí)間:2006-12-19
我們知道,彩信(MMS)和WAP瀏覽器是WAP協(xié)議的兩大主要應(yīng)用。WAP協(xié)議有點(diǎn)復(fù)雜,也算是SmartPhone中的核心技術(shù)之一吧,它包括WDP/WTP/WSP這一套傳輸協(xié)議,也包括WML/和SMIL這樣的內(nèi)容表示協(xié)議。去年花了一點(diǎn)時(shí)間去研究它,后來該任務(wù)取消了,所以沒有搞得太透徹。今年要真正使用了,現(xiàn)在繼續(xù)研究,主要側(cè)重于它的實(shí)現(xiàn)。這里記錄一些研究筆記,本文是關(guān)于彩信的。
彩信的架構(gòu)。彩信和其它WAP應(yīng)用的架構(gòu)差不多,都要經(jīng)過WAP Gateway中轉(zhuǎn)。要注意的是彩信并非直接投遞給接收方,而是像郵件一樣,先發(fā)送給一個(gè)中間服務(wù)器MMS Proxy-Relay。MMS Proxy-Relay暫時(shí)保存彩信,然后通過push協(xié)議給彩信接收方發(fā)送一個(gè)通知,彩信接收方收到通知后從MMS Proxy-Relay上獲取彩信內(nèi)容。MMS Client和WAP Gateway之間用WAP傳輸協(xié)議傳輸,而WAP Gateway和MMS Proxy-Relay之間走傳統(tǒng)的TCP/IP協(xié)議。
彩信的交互過程。對(duì)彩信客戶端實(shí)現(xiàn)者來說,我們主要關(guān)心:彩信發(fā)送方與MMS Proxy-Relay之間的交互和彩信接收方和MMS Proxy-Relay之間的交互,這包括下列幾個(gè)過程。
l 發(fā)送過程。這是彩信發(fā)送方把彩信發(fā)送給MMS Proxy-Relay的過程,MMS Proxy-Relay在收到彩信后會(huì)給發(fā)送方一個(gè)確認(rèn)消息。
l 通知過程。為了把彩信投遞給接收方,MMS Proxy-Relay要通過PUSH協(xié)議給接收方發(fā)送一條彩信通知消息,這個(gè)消息通常是一條特殊短信,里面包含彩信的位置URL。
l 彩信接收。接收方收到彩信通知后,從中取出URL,然后通過標(biāo)準(zhǔn)的HTTP GET請(qǐng)求從MMS Proxy-Relay上獲取彩信。
l 彩信回執(zhí)。當(dāng)MMS Proxy-Relay成功的通知彩信接收方后,它會(huì)給彩信發(fā)送方發(fā)送一個(gè)消息表明彩信投遞成功。
l 彩信閱讀回執(zhí)。彩信閱讀回執(zhí)是一條新彩信,它的傳遞過程和普通彩信沒有什么差別,只是不能再有閱讀回執(zhí)。
彩信的PDU。PDU即協(xié)議數(shù)據(jù)單元,對(duì)應(yīng)前面每種消息的消息格式。彩信的PDU和HTTP協(xié)議極為類似,當(dāng)然相對(duì)來說要簡(jiǎn)單多了。它定義了一些常用的消息域,有的消息域是公有的,每種消息都可以使用,有的消息域是專用的,只有特定的消息才能使用。除了常用的消息域外,也可以自定義消息域,自定義消息域以X-打頭,但不能以X-Mms-打頭。常用的消息域如:
l X-Mms-Message-Type
l X-Mms-Transaction-ID
l X-Mms-MMS-Version
l Date
l From
l To
l Cc
l Bcc
l Subject
l X-Mms-Message-Class
l X-Mms-Expiry
l X-Mms-Delivery-Time
l X-Mms-Priority
l X-Mms-Sender-
l Visibility
l X-Mms-Delivery-Report
l X-Mms-Read-Reply
l Content-Type
PDU的類型有:
l 發(fā)送請(qǐng)求。m-send-req
l 發(fā)送確認(rèn)。m-send-conf
l 彩信通知。m-notification-ind
l 通知回應(yīng)。m-notifyresp-ind
l 獲取彩信回應(yīng)。m-retrieve-conf
l 接收確認(rèn)。m-acknowledge-ind
l 彩信回執(zhí)。m-delivery-ind
獲取彩信只是一個(gè)普通的HTTP GET請(qǐng)求,而沒有專門的PDU。
彩信的PDU編碼。彩信PDU在語(yǔ)義上與HTTP協(xié)議類似,但是其編碼方式并不一樣,為了充分利用帶寬,彩信PDU采用二進(jìn)制方式編碼。其編碼規(guī)則很簡(jiǎn)單,預(yù)定義的消息域的KEY都有唯一的單字節(jié)編碼,如:
Key
編碼
Bcc
0x01
Cc
0x02
Content-Location
0x03
Content-Type
0x04
Date
0x05
Delivery-Report
0x06
Delivery-Time
0x07
Expiry
0x08
From
0x09
Message-Class
0x0A
Message-ID
0x0B
Message-Type
0x0C
MMS-Version
0x0D
Message-Size
0x0E
Priority
0x0F
Read-Reply
0x10
Report-Allowed
0x11
Response-Status
0x12
Response-Text
0x13
Sender-Visibility
0x14
Status
0x15
Subject
0x16
To
0x17
Transaction-Id
0x18
而消息域的Value部分,如果只有幾個(gè)固定的可選值,這幾個(gè)值也用單子節(jié)的編碼,由于這些值只出現(xiàn)在特定的上下文中,所以無需要全局唯一。
參考資料:
~~end~~
發(fā)表于 @ 2006年10月30日 22:04:00 | 評(píng)論( 6 ) | 編輯| 舉報(bào)| 收藏
舊一篇:Freetype學(xué)習(xí)筆記 | 新一篇:serif vs sans serif
查看最新精華文章 請(qǐng)?jiān)L問博客首頁(yè)相關(guān)文章
Linux電源管理研究筆記—?jiǎng)討B(tài)電源管理(DPM)multiplexer protocol研究筆記WAP協(xié)議研究筆記—WAP傳輸協(xié)議彩信庫(kù)(mmslib)設(shè)計(jì)備忘錄MMS開發(fā)備忘錄OpenOBEX代碼閱讀筆記彩信收發(fā)模塊設(shè)計(jì)備忘錄Mozilla研究—傳輸協(xié)議yikun 發(fā)表于2007年4月30日 15:43:01 IP:舉報(bào)回復(fù)刪除
你好拜讀原文.發(fā)覺我抓的包與你的不符.以下是手機(jī)發(fā)彩信的時(shí)候抓的包.
POST http://10.41.83.239/ HTTP/1.1
Host: 10.41.83.239
Content-Type: application/vnd.wap.mms-message
Cookie2: $Version="1"
Content-Length: 18508
Accept-Encoding: gzip, deflate
Proxy-Connection: Keep-Alive
User-Agent: Nokia7600/2.0 (dbwk27) Profile/MIDP-1.0 Configuration/CLDC-1.0
x-wap-profile: "http://nds1.nds.nokia.com/uaprof/N7600r100.xml"
寑榖PvjuzLMJ4 崘?亞仐14101110052/TYPE=PLMN ?硥application/smil ?pHMZT> B?#application/smil 侁唒.smil 卲.smil ?<pHMZT> 巔.smil ?亞p.smil <smil>
<head>
<layout>
<root-layout width="122" height="115" />
<region id="Image" width="100%" height="67%" left="0%" top="0%" fit="meet" />
<region id="Text" width="100%" height="33%" left="0%" top="67%" fit="scroll" />
</layout>
</head>
<body>
<par dur="15000ms">
<text src="cidUlsncJ4uQ" region="Text" />
<img src="cid:9JxooThD0N" region="Image" />
</par>
</body>
</smil>
L亱瀱Image000.jpg 匢mage000.jpg 嶪mage000.jpg ?亞Image000.jpg ?<9JxooThD0N> *******(數(shù)據(jù))
在這個(gè)報(bào)里面我找不到mms_header.也沒有mmsbody中正常的content_type等字段.這與你說的結(jié)構(gòu)報(bào)文不一樣. 我抓過其他彩信的包與我上面貼的類似.我也認(rèn)為你說的結(jié)構(gòu)都是對(duì)的,可是實(shí)際抓的包為什么不一樣?謝謝yikun 發(fā)表于2007年4月30日 15:51:05 IP:舉報(bào)回復(fù)刪除
你好拜讀原文.發(fā)覺我抓的包與你的不符.以下是手機(jī)發(fā)彩信的時(shí)候抓的包.
POST http://10.41.83.239/ HTTP/1.1
Host: 10.41.83.239
Content-Type: application/vnd.wap.mms-message
Cookie2: $Version="1"
Content-Length: 18508
Accept-Encoding: gzip, deflate
Proxy-Connection: Keep-Alive
User-Agent: Nokia7600/2.0 (dbwk27) Profile/MIDP-1.0 Configuration/CLDC-1.0
x-wap-profile: "http://nds1.nds.nokia.com/uaprof/N7600r100.xml"
寑榖PvjuzLMJ4 崘?亞仐14101110052/TYPE=PLMN ?硥application/smil ?pHMZT> B?#application/smil 侁唒.smil 卲.smil ?<pHMZT> 巔.smil ?亞p.smil <smil>
<head>
<layout>
<root-layout width="122" height="115" />
<region id="Image" width="100%" height="67%" left="0%" top="0%" fit="meet" />
<region id="Text" width="100%" height="33%" left="0%" top="67%" fit="scroll" />
</layout>
</head>
<body>
<par dur="15000ms">
<text src="cidUlsncJ4uQ" region="Text" />
<img src="cid:9JxooThD0N" region="Image" />
</par>
</body>
</smil>
L亱瀱Image000.jpg 匢mage000.jpg 嶪mage000.jpg ?亞Image000.jpg ?<9JxooThD0N> *******(數(shù)據(jù))
在這個(gè)報(bào)里面我找不到mms_header.也沒有mmsbody中正常的content_type等字段.這與你說的結(jié)構(gòu)報(bào)文不一樣. 我抓過其他彩信的包與我上面貼的類似.我也認(rèn)為你說的結(jié)構(gòu)都是對(duì)的,可是實(shí)際抓的包為什么不一樣?謝謝absurd 發(fā)表于2007年5月4日 21:54:12 IP:舉報(bào)回復(fù)刪除
to yikun: 去掉前面的HTTP協(xié)議頭就是了。yikun 發(fā)表于2007年5月8日 9:57:18 IP:舉報(bào)回復(fù)刪除
去頭也不行啊.我還是沒找到他的mms_header,content_type等等. 去頭后
寑榖PvjuzLMJ4 崘?亞仐14101110052/TYPE=PLMN ?硥application/smil ?pHMZT> B?#application/smil 侁唒.smil 卲.smil ?<pHMZT> 巔.smil ?亞p.smil
除了我能猜出 14101110052/TYPE=PLMN.前面包含了什么信息?
又比如L亱瀱Image000.jpg 匢mage000.jpg 嶪mage000.jpg ?亞Image000.jpg ?<9JxooThD0N>*******(數(shù)據(jù))
9JxooThD0N是文件名稱,但是前面的什么Image000.jpg是什么意思呢? 他有沒有規(guī)范的格式?yikun 發(fā)表于2007年5月11日 9:42:10 IP:舉報(bào)回復(fù)刪除
明白了很多了.
X-Mms-Message-Type: m-retrieve-conf (0x84)
為什么X-Mms-Message-Type對(duì)應(yīng)的是0x8c,m-retrieve-conf對(duì)應(yīng)的是0x84.他是怎么編碼的,在那個(gè)rfc又說明?absurd 發(fā)表于2007年5月12日 22:00:15 IP:舉報(bào)回復(fù)刪除
to yikun: WAP 2.0 SPEC里
本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/absurd/archive/2006/10/30/1357619.aspx
聯(lián)系客服