数据内容得以安全地传送不是一项容易的事,为使用者开发一套简化操作的底层技术就更加困难。微软为了新一代掌上型装置开发一套具备丰富功能的安全使用者介面,现推广一个新传输协议「媒体传输协议」(Media Transfer Protocol),简称MTP。
微软制订一套名为媒体传输协议(Media Transfer Protocol, MTP)的新USB类别。MTP的目标是发展出一个新的装置类别,并塑造一个市场转折点,以藉此协助所有Windows CE装置能与空前成功的Apple iPod产品系列匹敌。MTP协议与现有的USB Mass Storage Class(MSC)之间有眾多类似之处。MSC与MTP都是为了支援资料的储存所设计,两者都能让主控端对装置有某种程度的控制。两者之间主要的差异在於通讯的层次、低阶传输协议,以及装置控制的层级。本文将针对MTP协议的细节、MSC与MTP之间的类似点与差异作讨论,并将介绍一些MTP传输范例。
媒体传输协议-新一代媒体播放器的通讯协议
用来保护有版权或付费影音内容的数据版权管理(DRM)机制,对於消费性掌上型产品市场而言是相当重要的环节。由於欠缺数据内容传送的控制技术,因此内容供应商多半不愿意发行如电影这类数据内容。若能开发出适合的保护协议,内容供应商会乐於将其智慧财產加以数据化。而微软声称其MTP正是目前所需的保护协议。
详细剖析MTP的各个传输层面
MTP与现今大多数的通讯协议层次相似,都是采用分层化的设计。我们将MTP协议分成三层(如图1)为实体层(Physical Layer)、传输层(Transport Layer)、指令层(Command Layer)。这些功能层有别於OSI模式的前三个层面,但其概念是相同的。有趣的是,规格中完全没有提及实体传输;但在我们讨论范围中,实体传输部份就是USB。MTP所用的资料传输层是Picture Transfer Protocol(PTP)规格。其中许多指令也是PTP指令,并且可以透过不同厂商的PTP延伸能自行进行扩充。
实体层
就实体层的层面而言,PTP与MTP是相同的,PTP与MTP在此层中可互通运用。本文将全文以MTP为主。
USB装置透过端点与主控端进行通讯。一个USB端点是与主控端之间的一个独立通讯通道。每个装置需要一个特别的双向端点,就是控制端点,其代号为endpoint 0。主控端会利用这个端点来控制装置以及决定装置的各项特性。其他所有端点皆为单向通道,具备独立排序与流量控制的机制。MTP装置具有提供以下通讯通道的数个端点:
?主控端的Data OUT (bulk资料端点)
?主控端的Data IN (bulk IN资料端点)
?主控端的Commands(requests) OUT(共用控制端点:EP 0)
?传送至主控端的Events IN(Interrupt IN端点)
IN与OUT指明USB装置中的资料传送方向。USB是一种以主控端为中心的通讯协议;所有IN的资料流量都会流向主控端,而OUT的资料流量皆流向装置端。
传输层
MTP的资料传输层源自於PTP(USB Still Image Class)。USB Still Image Class规范了指令如何透过PTP进行传输、如何回应指令、如何中止传输,以及指令如何进行格式化。这个规格并没有规范指令本身,我们将在下章节探讨指令。
USB传输状态机制有三个主要阶段:指令阶段(command phase)、资料阶段(data phase),以及回应阶段(response phase)。主控端总会透过资料管线来啟动指令阶段。指令阶段可能会持续多个封包(尤其是较旧的USB1.1装置),所有被定义的指令皆小於64位元。在指令阶段中,主控端会传送一个单一指令到装置端。这些送出的指令会装固定格式的容器中,如表1所示。
如果指令有一个资料阶段,IN或OUT资料阶段就会紧随在指令阶段之后。传送至容器中的资料属於Container Type 2,而不是到指令区块的Container Type 1。
最后,装置传出一个回应讯息,显示指令的执行结果。回应编码与指令有关连;它们通常含有指令所有预期的结果。例如,允许回应GetObjectHandles出现超过10种可能的ResponseCodes,其中包括OK以及Store_ Not_Available.
指令
PTP与MTP将装置中大部份元素视为物件。日常生活中使用装置的大多数指令都会处理到物件。
样本资料
观察样本资料流量的内容,可以容易看出通讯协议的运作流程。以下的CATC流程图显示在主控端与装置之间啟动通讯的过程。
主控端啟动所有标示为OUT的传输,而装置端则传送所有标示为IN的资料。所有的Transfer传输内容是所有Transaction中的资料解码内容。例如,transfer35的资料为transaction 230776中所含的内容。
?Transfer 35:这裡我们看到容器实际运作的状况。长度栏位(0x10/16小数据)从LSB传送至
MSB,之后有Type(Command=1)以及指令码(OpenSession)。MTP transaction ID为0,显示这是连线中的第一项传输。
?Transfer 36:结束一项传输,显示主控端成功完成传输(Code=OK)。
?Transfer 37:主控端要求装置中储存元素清单(GetStorageIDs)。例如,附有扩充卡的Palm Pilot可能有两个元素,一个支援主记忆体,另一个支援扩充卡。
?Transfer 38:这是Data Container的第一个范例。装置回应它有一个单一储存元素,标示为0x1(逻辑)与0x1(实体)。这个指令完全编码至表3所示的内容。
?Transfer 39:以一个OK指令码关闭Transaction 1。
?Transfer 40:开始下一项MTP传输。
瞭解MTP与PTP的差异
我们用了许多篇幅介绍MTP与PTP的共同点,因为MTP需要70%~80%的建置工作,但MTP会在大大小小的层面上提升PTP。在通讯协议上进行的小规模改良,会对功能產生极大的影响。
MTP增加许多新物件,以各种新方式来定义许多物件。这种设计可为各个播放清单提供支援,这些播放清单是任何MP3或媒体播放装置的重要元件。MTP亦增加对Palm这类PDA装置的支援,可加入行事历、连络人,以及群组物件等功能。当然,MTP也有加入对影片物件类型的支援。
透过加入特定的数据版权管理(DRM)属性,其中包括DRM状态、URL(在授权权限过期时,让DRM可以要求付费)、使用次数和其他相关属性,让产品更容易加入数据版权管理(DRM)的支援,MTP可让DRM的支援功能更容易执行。
MTP亦加入许多延伸技术,让资料处理作业更加容易。它延伸PTP的规格,因此可传输大型(超过4GB)的档案。它也让容器与资料被分割成不同的USB封包。这样可以使USB晶片(包括Cypress EZ-USB FX2LP与EZ-USB SX2系列产品)能更有效率地处理封包。
基本版与增强版MTP之比较
微软在基本MTP结构中加入许多最佳化设计,藉此提升在Windows作业系统中使用MTP装置的经验。
如果您是一个装置(Reso-pnder),这些功能已含括在微软的免付权利金授权范围中。若您是主控端(Initiator),这些Enhanced Initiator功能的授权属於基本功能以外的范围,您必须与微软公司洽谈授权合约。
增强版MTP的目的是让主控端能与MTP週边装置紧密整合,创造出更棒的最终使用者经验。许多增强版MTP功能的目的是一次处理多个物件,藉此可提升同步化效能。
法律问题
如果从微软网站下载MTP规格,就会发现规格书的前三页是最终使用者授权协议(End User License Agreement, EULA)。我们建议您在开始任何MTP研发工作之前,最好请律师详读这份授权书。EULA的重点包括:
1.基本MTP规格可免费使用:「...微软授予您以下有限的、非独家、全球性、免付权利金、不可让渡、不可移转、不可再授权的使用权限」(免付权利金特别强调)。
2. Enhanced Initiator功能不在此授权范围之内。「本协议并未授予您在解决方案中建置Enhanced Initiator功能或此规格中所述功能之权限」。
3.必须建置整套规格:「您在解决方案中的建置设计,必须採用整套规格。」
追根究竞,制定另一种传输规格的根本原因还是源自最终使用者的需求。面对消费性市场要求简单、多功能的掌上型装置的压力下,再加上内容创作业界要求妥善保护数据内容版权的沉重压力,微软正致力解决这种两头烧的问题。为了让双方都能满意,微软提出媒体传输协议。研发业者须瞭解底层技术,方能发现能满足顾客的产品特性和好处。