數(shù)據(jù)內(nèi)容得以安全地傳送不是一項(xiàng)容易的事,,為使用者開(kāi)發(fā)一套簡(jiǎn)化操作的底層技術(shù)就更加困難。微軟為了新一代掌上型裝置開(kāi)發(fā)一套具備豐富功能的安全使用者介面,,現(xiàn)推廣一個(gè)新傳輸協(xié)議「媒體傳輸協(xié)議」(Media Transfer Protocol),,簡(jiǎn)稱MTP,。
微軟制訂一套名為媒體傳輸協(xié)議(Media Transfer Protocol, MTP)的新USB類別。MTP的目標(biāo)是發(fā)展出一個(gè)新的裝置類別,,并塑造一個(gè)市場(chǎng)轉(zhuǎn)折點(diǎn),,以藉此協(xié)助所有Windows CE裝置能與空前成功的Apple iPod產(chǎn)品系列匹敵。MTP協(xié)議與現(xiàn)有的USB Mass Storage Class(MSC)之間有眾多類似之處,。MSC與MTP都是為了支援資料的儲(chǔ)存所設(shè)計(jì),,兩者都能讓主控端對(duì)裝置有某種程度的控制。兩者之間主要的差異在於通訊的層次,、低階傳輸協(xié)議,,以及裝置控制的層級(jí)。本文將針對(duì)MTP協(xié)議的細(xì)節(jié),、MSC與MTP之間的類似點(diǎn)與差異作討論,,并將介紹一些MTP傳輸范例。
媒體傳輸協(xié)議-新一代媒體播放器的通訊協(xié)議
用來(lái)保護(hù)有版權(quán)或付費(fèi)影音內(nèi)容的數(shù)據(jù)版權(quán)管理(DRM)機(jī)制,,對(duì)於消費(fèi)性掌上型產(chǎn)品市場(chǎng)而言是相當(dāng)重要的環(huán)節(jié),。由於欠缺數(shù)據(jù)內(nèi)容傳送的控制技術(shù),因此內(nèi)容供應(yīng)商多半不愿意發(fā)行如電影這類數(shù)據(jù)內(nèi)容,。若能開(kāi)發(fā)出適合的保護(hù)協(xié)議,,內(nèi)容供應(yīng)商會(huì)樂(lè)於將其智慧財(cái)產(chǎn)加以數(shù)據(jù)化。而微軟聲稱其MTP正是目前所需的保護(hù)協(xié)議,。
詳細(xì)剖析MTP的各個(gè)傳輸層面
MTP與現(xiàn)今大多數(shù)的通訊協(xié)議層次相似,,都是采用分層化的設(shè)計(jì)。我們將MTP協(xié)議分成三層(如圖1)為實(shí)體層(Physical Layer),、傳輸層(Transport Layer),、指令層(Command Layer)。這些功能層有別於OSI模式的前三個(gè)層面,,但其概念是相同的,。有趣的是,規(guī)格中完全沒(méi)有提及實(shí)體傳輸,;但在我們討論范圍中,,實(shí)體傳輸部份就是USB。MTP所用的資料傳輸層是Picture Transfer Protocol(PTP)規(guī)格,。其中許多指令也是PTP指令,,并且可以透過(guò)不同廠商的PTP延伸能自行進(jìn)行擴(kuò)充,。
實(shí)體層
就實(shí)體層的層面而言,PTP與MTP是相同的,,PTP與MTP在此層中可互通運(yùn)用,。本文將全文以MTP為主。
USB裝置透過(guò)端點(diǎn)與主控端進(jìn)行通訊,。一個(gè)USB端點(diǎn)是與主控端之間的一個(gè)獨(dú)立通訊通道,。每個(gè)裝置需要一個(gè)特別的雙向端點(diǎn),就是控制端點(diǎn),,其代號(hào)為endpoint 0,。主控端會(huì)利用這個(gè)端點(diǎn)來(lái)控制裝置以及決定裝置的各項(xiàng)特性。其他所有端點(diǎn)皆為單向通道,,具備獨(dú)立排序與流量控制的機(jī)制,。MTP裝置具有提供以下通訊通道的數(shù)個(gè)端點(diǎn):
?主控端的Data OUT (bulk資料端點(diǎn))
?主控端的Data IN (bulk IN資料端點(diǎn))
?主控端的Commands(requests) OUT(共用控制端點(diǎn):EP 0)
?傳送至主控端的Events IN(Interrupt IN端點(diǎn))
IN與OUT指明USB裝置中的資料傳送方向。USB是一種以主控端為中心的通訊協(xié)議,;所有IN的資料流量都會(huì)流向主控端,,而OUT的資料流量皆流向裝置端。
傳輸層
MTP的資料傳輸層源自於PTP(USB Still Image Class),。USB Still Image Class規(guī)范了指令如何透過(guò)PTP進(jìn)行傳輸,、如何回應(yīng)指令、如何中止傳輸,,以及指令如何進(jìn)行格式化,。這個(gè)規(guī)格并沒(méi)有規(guī)范指令本身,我們將在下章節(jié)探討指令,。
USB傳輸狀態(tài)機(jī)制有三個(gè)主要階段:指令階段(command phase),、資料階段(data phase),以及回應(yīng)階段(response phase),。主控端總會(huì)透過(guò)資料管線來(lái)啟動(dòng)指令階段,。指令階段可能會(huì)持續(xù)多個(gè)封包(尤其是較舊的USB1.1裝置),所有被定義的指令皆小於64位元,。在指令階段中,,主控端會(huì)傳送一個(gè)單一指令到裝置端。這些送出的指令會(huì)裝固定格式的容器中,,如表1所示。
如果指令有一個(gè)資料階段,,IN或OUT資料階段就會(huì)緊隨在指令階段之后,。傳送至容器中的資料屬於Container Type 2,而不是到指令區(qū)塊的Container Type 1,。
最后,,裝置傳出一個(gè)回應(yīng)訊息,,顯示指令的執(zhí)行結(jié)果?;貞?yīng)編碼與指令有關(guān)連,;它們通常含有指令所有預(yù)期的結(jié)果。例如,,允許回應(yīng)GetObjectHandles出現(xiàn)超過(guò)10種可能的ResponseCodes,,其中包括OK以及Store_ Not_Available.
指令
PTP與MTP將裝置中大部份元素視為物件。日常生活中使用裝置的大多數(shù)指令都會(huì)處理到物件,。
樣本資料
觀察樣本資料流量的內(nèi)容,,可以容易看出通訊協(xié)議的運(yùn)作流程。以下的CATC流程圖顯示在主控端與裝置之間啟動(dòng)通訊的過(guò)程,。
主控端啟動(dòng)所有標(biāo)示為OUT的傳輸,,而裝置端則傳送所有標(biāo)示為IN的資料。所有的Transfer傳輸內(nèi)容是所有Transaction中的資料解碼內(nèi)容,。例如,,transfer35的資料為transaction 230776中所含的內(nèi)容。
?Transfer 35:這裡我們看到容器實(shí)際運(yùn)作的狀況,。長(zhǎng)度欄位(0x10/16小數(shù)據(jù))從LSB傳送至
MSB,,之后有Type(Command=1)以及指令碼(OpenSession)。MTP transaction ID為0,,顯示這是連線中的第一項(xiàng)傳輸,。
?Transfer 36:結(jié)束一項(xiàng)傳輸,顯示主控端成功完成傳輸(Code=OK),。
?Transfer 37:主控端要求裝置中儲(chǔ)存元素清單(GetStorageIDs),。例如,附有擴(kuò)充卡的Palm Pilot可能有兩個(gè)元素,,一個(gè)支援主記憶體,,另一個(gè)支援?dāng)U充卡。
?Transfer 38:這是Data Container的第一個(gè)范例,。裝置回應(yīng)它有一個(gè)單一儲(chǔ)存元素,,標(biāo)示為0x1(邏輯)與0x1(實(shí)體)。這個(gè)指令完全編碼至表3所示的內(nèi)容,。
?Transfer 39:以一個(gè)OK指令碼關(guān)閉Transaction 1,。
?Transfer 40:開(kāi)始下一項(xiàng)MTP傳輸。
瞭解MTP與PTP的差異
我們用了許多篇幅介紹MTP與PTP的共同點(diǎn),,因?yàn)镸TP需要70%~80%的建置工作,,但MTP會(huì)在大大小小的層面上提升PTP。在通訊協(xié)議上進(jìn)行的小規(guī)模改良,,會(huì)對(duì)功能產(chǎn)生極大的影響,。
MTP增加許多新物件,,以各種新方式來(lái)定義許多物件。這種設(shè)計(jì)可為各個(gè)播放清單提供支援,,這些播放清單是任何MP3或媒體播放裝置的重要元件,。MTP亦增加對(duì)Palm這類PDA裝置的支援,可加入行事歷,、連絡(luò)人,,以及群組物件等功能。當(dāng)然,,MTP也有加入對(duì)影片物件類型的支援,。
透過(guò)加入特定的數(shù)據(jù)版權(quán)管理(DRM)屬性,其中包括DRM狀態(tài),、URL(在授權(quán)權(quán)限過(guò)期時(shí),,讓DRM可以要求付費(fèi))、使用次數(shù)和其他相關(guān)屬性,,讓產(chǎn)品更容易加入數(shù)據(jù)版權(quán)管理(DRM)的支援,,MTP可讓DRM的支援功能更容易執(zhí)行。
MTP亦加入許多延伸技術(shù),,讓資料處理作業(yè)更加容易,。它延伸PTP的規(guī)格,因此可傳輸大型(超過(guò)4GB)的檔案,。它也讓容器與資料被分割成不同的USB封包,。這樣可以使USB晶片(包括Cypress EZ-USB FX2LP與EZ-USB SX2系列產(chǎn)品)能更有效率地處理封包。
基本版與增強(qiáng)版MTP之比較
微軟在基本MTP結(jié)構(gòu)中加入許多最佳化設(shè)計(jì),,藉此提升在Windows作業(yè)系統(tǒng)中使用MTP裝置的經(jīng)驗(yàn),。
如果您是一個(gè)裝置(Reso-pnder),這些功能已含括在微軟的免付權(quán)利金授權(quán)范圍中,。若您是主控端(Initiator),,這些Enhanced Initiator功能的授權(quán)屬於基本功能以外的范圍,您必須與微軟公司洽談授權(quán)合約,。
增強(qiáng)版MTP的目的是讓主控端能與MTP週邊裝置緊密整合,,創(chuàng)造出更棒的最終使用者經(jīng)驗(yàn)。許多增強(qiáng)版MTP功能的目的是一次處理多個(gè)物件,,藉此可提升同步化效能,。
法律問(wèn)題
如果從微軟網(wǎng)站下載MTP規(guī)格,就會(huì)發(fā)現(xiàn)規(guī)格書(shū)的前三頁(yè)是最終使用者授權(quán)協(xié)議(End User License Agreement, EULA),。我們建議您在開(kāi)始任何MTP研發(fā)工作之前,,最好請(qǐng)律師詳讀這份授權(quán)書(shū)。EULA的重點(diǎn)包括:
1.基本MTP規(guī)格可免費(fèi)使用:「...微軟授予您以下有限的,、非獨(dú)家,、全球性、免付權(quán)利金,、不可讓渡,、不可移轉(zhuǎn)、不可再授權(quán)的使用權(quán)限」(免付權(quán)利金特別強(qiáng)調(diào)),。
2. Enhanced Initiator功能不在此授權(quán)范圍之內(nèi),。「本協(xié)議并未授予您在解決方案中建置Enhanced Initiator功能或此規(guī)格中所述功能之權(quán)限」,。
3.必須建置整套規(guī)格:「您在解決方案中的建置設(shè)計(jì),,必須採(cǎi)用整套規(guī)格?!?nbsp;
追根究競(jìng),,制定另一種傳輸規(guī)格的根本原因還是源自最終使用者的需求。面對(duì)消費(fèi)性市場(chǎng)要求簡(jiǎn)單,、多功能的掌上型裝置的壓力下,,再加上內(nèi)容創(chuàng)作業(yè)界要求妥善保護(hù)數(shù)據(jù)內(nèi)容版權(quán)的沉重壓力,微軟正致力解決這種兩頭燒的問(wèn)題,。為了讓雙方都能滿意,,微軟提出媒體傳輸協(xié)議。研發(fā)業(yè)者須瞭解底層技術(shù),,方能發(fā)現(xiàn)能滿足顧客的產(chǎn)品特性和好處,。