MTP存在多个同名协议,计算机网络面试常考的是 Media Transfer Protocol 媒体传输协议。
一、MTP 是什么
MTP(Media Transfer Protocol,媒体传输协议),是应用层USB设备协议,基于PTP(图片传输协议)扩展而来,微软主导开发。
作用:电脑与手机、数码相机、播放器等便携设备之间传输媒体文件、管理设备内容。
最常见场景:安卓手机USB连接电脑,资源管理器里看到手机内部存储,就是MTP模式。
⚠️ 区分同名MTP:
- Media Transfer Protocol 媒体传输协议(本篇,USB文件传输,最常用)
- Mail Transfer Protocol 邮件传输协议(古老邮件协议,已被SMTP淘汰)
- Multicast Transport Protocol 组播传输协议(RFC1301,少见)
二、核心原理
MTP是命令-应答模型,固定两种角色:
- Initiator(发起端):PC主机,主动下发命令;
- Responder(应答端):手机/相机,被动接收命令、返回数据;设备不能主动发命令。
和U盘USB大容量存储(MSC)本质区别:
MSC:电脑直接挂载设备存储分区,电脑接管文件系统,异常拔插容易损坏设备文件;
MTP:文件系统控制权保留在手机设备内部,电脑只是通过指令查询、读写对象,电脑不直接挂载分区。中断传输不会破坏手机文件系统。
三、核心能力
- 文件上传、下载、删除、重命名、目录浏览;支持4GB以上大文件;
- 媒体元数据读写:图片、音乐的标题、艺术家、时长、星标;
- 设备状态查询:读取电池电量、设备型号;
- DRM版权支持(早期WMDRM,保护付费媒体);
- 除USB外,也可通过TCP/IP、蓝牙承载MTP。
四、通信流程(电脑访问手机示例)
- 手机USB线连接电脑,选择MTP(媒体传输)模式;
- PC作为Initiator,发送命令:获取设备对象列表;
- 手机Responder返回所有文件/文件夹对象句柄;
- PC发送读取对象命令,下载图片、视频;
- PC发送写入对象命令,往手机上传文件;
- 所有操作由手机自身操作系统完成文件读写。
MTP没有真正盘符。Windows资源管理器看到的手机目录,是系统虚拟合成视图。
五、报文/命令特点
MTP使用对象句柄(Handle)来标识每一个文件、文件夹。
常用命令:
- GetObjectHandles:获取设备内所有文件对象列表
- GetObjectInfo:获取文件元信息(大小、文件名、修改时间)
- GetObject:下载文件
- SendObject:上传文件
- DeleteObject:删除文件
六、MTP vs MSC(USB大容量存储)
| 项目 | MTP | MSC U盘模式 |
|---|---|---|
| 文件系统控制权 | 保存在手机设备 | 交给电脑主机 |
| 大文件 | 支持>4GB | 受分区文件系统限制 |
| 异常拔插 | 不容易损坏手机文件 | 容易损坏分区数据 |
| 多设备同时访问 | 支持 | 不支持,独占分区 |
| 缺点 | 读写速度略低;部分软件无法直接打开设备内文件 | 手机要卸载分区,手机无法同时读写存储 |
七、优缺点
✅ 优点
- 设备文件系统安全,拔插不易损坏;
- 手机和电脑可以同时访问存储;
- 原生支持大于4GB文件;
- 支持媒体元数据、版权DRM。
❌ 缺点
- 读写性能比MSC略低;
- 不是真实盘符,部分专业软件无法直接读取设备内文件;
- Linux/macOS需要额外驱动/工具支持。
八、小结
- MTP媒体传输协议,基于PTP,用于USB连接手机、相机和电脑传输媒体文件;
- 命令应答模型:PC是发起端,手机是应答端;文件系统控制权留在手机;
- 和U盘MSC模式最大差异:不直接挂载分区,数据更安全;
- 存在多个同名MTP,邮件MTP是古老协议,现已废弃,现代使用SMTP。
思考题:安卓手机USB选MTP而不是U盘大容量存储模式,最主要的安全好处是什么?
0 条笔记