用wireshark抓包分析学习USB协议

article/2025/6/23 14:27:35

用 wireshark 抓包分析学习 USB 协议

1 框架

在这里插入图片描述
上图是使用USB协议通信的两个设备的实现细节。看起来比较复杂,可以看下面的示意图:
在这里插入图片描述
整个框架分为三层:Function Layer、USB Device Layer 和 USB Bus Interface Layer;黑色双向箭头代表实际数据通路,浅色箭头代表逻辑连接。

平时我们使用 USB 协议的拓扑结构可能是下面这样的:
在这里插入图片描述
也就是一台电脑,挂着几个USB直连设备,比如鼠标键盘;由于USB口不够用,又接了几个 USB HUB,HUB上又挂着其它 USB 设备,比如话筒。

单从通信关系上看,可以理解成下面这样:
在这里插入图片描述
就是每一个设备都看作 Endpoint,Host 和 Device 之间的连接视作数据的Pipes,通信数据流通过 Pipes 在 Host 和 Endpoints 之间交换。

这里需要提前说明一下,USB是完全由 Master 主导的。也就是说,无论是从电脑向设备发数据,还是从设备从电脑发数据,都是由电脑控制的。

不过比起拓扑,软件人员可能更关心的是协议的格式,更进一步还想知道,究竟USB连接电脑之后,会发生些什么,这是这篇文章要记叙的主要内容。

2 USB 设备的状态流

这是 USB 设备的状态机。
在这里插入图片描述
Attached 指的就是设备已经连接到电脑的 USB 接口上;

设备进入 Powered 状态;

然后 master 让设备 reset,使设备进入 Default 状态;这时候设备使用默认地址
在这里插入图片描述
接着 master 会给设备分配一个地址;后续用这个地址和设备通信,也可以理解为换了一个专用的 pipe

master 会读设备的描述符,然后对设备做一些配置,设备进入Configured 状态
在这里插入图片描述在这里插入图片描述

总线空闲一定时间之后设备会进入 Suspend 状态,以便省电;这和掉电不一样,设备的地址和配置不会丢失,唤醒之后不用重新分配地址和配置。
在这里插入图片描述

3 连接过程

在这里插入图片描述
这是 wireshark 工具抓 USB 数据包的界面,绿色框中的是发送数据包的源头,即发出方;红色框中的是数据包的接收方。


在这里插入图片描述

上图黄色箭头指向的那一行,是 host 向 设备 1.1.0 发送的一个 GET DESCRIPTOR Request;
在这里插入图片描述
上图右下框中绿色高亮的内容就是这个 request 的具体内容,数据格式可以对照下图中的表格:
在这里插入图片描述
第一个字节是 bmRequestType,用于描述请求的特性。 值为 0x80,意味着是标准设备,请求 device-to-host,即请求 device 向 host 发送数据
在这里插入图片描述
第二个字节是 bRequest,用于指明具体的请求,这里值是 6,对应着获取设备描述符 GET_DESCRIPTOR

在这里插入图片描述
因为协议文档是2.0的,和3.2的数据包不能完全对应,后面几个字段先不看了,等看3.2标准文档的时候再说。

在这里插入图片描述
紧接着有一个数据包,收发双方呼唤,应该就是 device 应答了 master 的请求。下面打开数据包可以看到回复了一个 device 描述符
在这里插入图片描述
避免歧义,这里说明一下,描述符有以下几种类型。Device 是其中的一种。
在这里插入图片描述
好,回到数据包的说明。这里有四个和CONFIGURATION相关的数据包。
在这里插入图片描述
先是 master 发了一个要求长度为 9 的
在这里插入图片描述
device 回了一个长度为 9 的,其中包含了一个长度信息 0x80
在这里插入图片描述
然后 master 发了一个要求长度 0x80 的
在这里插入图片描述
然后 device 回了一个长度为 0x80 的
在这里插入图片描述
最后 用 SET CONFIGURATION request 配置了 device


http://www.hkcw.cn/article/gyPJIvJeAR.shtml

相关文章

PyTorch——卷积操作(2)

二维矩阵 [[ ]] 这里面conv2d(N,C,H,W)里面的四个是 N就是batch size也就是输入图片的数量,C就是通道数这只是一个二维张量所以通道为1,H就是高,W就是宽,所以是1 1 5 5 卷积核 reshape 第一个参数是batch size样本数量 第二个参数…

加拿大没邀请,莫迪不去G7 双边关系紧张所致

据知情人士透露,由于新德里与渥太华关系冷淡,印度总理莫迪或将缺席6月中旬在加拿大举行的七国集团(G7)峰会。这可能将是莫迪六年来首次缺席该峰会。消息人士表示,对于加拿大将于6月15日至17日主办的G7峰会,印方迄今未收到加方正式邀请,且印方也没有表明参加意愿。在进行…

6岁女童被男子拖进小巷 警方通报 嫌疑人已被拘留

6月3日,湖南娄底市公安局娄星分局通报了一起事件。5月20日下午,嫌疑人刘某某(男,38岁)酒后行至娄底市娄星区涟滨中街附近,拖拽一名6岁女童进入居民区巷子。幸好被居民及时制止并报警。接警后,民警迅速赶到现场将刘某某控制。经侦查,刘某某涉嫌寻衅滋事已被拘留,并将依…

央视披露“镇国神器”东风-5参数,网友:40多年前这水平

央视披露“镇国神器”东风-5参数。6月2号,央视新闻报道了一条让人非常振奋而又非常炸裂的消息。那就是直接公布的我们在40多前就已经研发和发射成功的东风-5洲际导弹的具体参数,消息一出,引发全网强烈关注和热烈。我们知道我们很厉害,但是不知道在40多年前我们的镇国利器,…

警方通报“男子拖拽女童”:追究刑责!

警方通报“男子拖拽女童”:追究刑责事件持续发酵。6月3日,湖南娄底市公安局娄星分局通报,5月20日下午,嫌疑人刘某某(男,38岁)酒后行至娄底市娄星区涟滨中街附近,拖拽一女童(6岁)进入居民区巷子,后被居民及时制止并报警。接警后,民警迅速赶到现场将刘某某控制。经侦…

黄金大涨“带火”铂金:有人百万资金囤购 铂金市场热度飙升

黄金大涨“带火”铂金:有人百万资金囤购 铂金市场热度飙升!铂金市场近期出现显著上涨行情,年内累计最大涨幅达到25%。这一波“复兴”浪潮迅速从深圳水贝这一珠宝中心蔓延开来,引发了投资者和买家的广泛关注。陈女士是一位热衷于投资的投资者,她最近在铂金上进行了大量投资…

【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解

【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解 一、前言:移动开发声明式 UI 框架的技术变革 在移动操作系统的发展历程中,UI 开发模式经历了从命令式到声明式的重大变革。 根据华为开发者联盟 2024 年数据报告显示,HarmonyOS 设备…

蒋雨融回应在哈佛毕业典礼上的演讲 堂堂正正争取话语权

蒋雨融回应在哈佛毕业典礼上的演讲 堂堂正正争取话语权!6月2日晚,蒋雨融Luanna在微博上回应了关于哈佛演讲的争议。她表示,无论是争取成为哈佛毕业致辞代表,还是在各个平台上开设账号,都是为了争夺公共话语空间。她认为,如果中国学生不去争取这个空间,就会被其他学生占据…

Linux服务器安装GUI界面工具

注意: 本文内容于 2025-05-31 18:55:23 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:Linux服务器安装GUI界面工具。感谢您的关注与支持! 本文记录在Linux使用Docker安装G…

什么是绿电直连

定义 绿电直连是指风电、太阳能发电、生物质发电等新能源不直接接入公共电网,而是通过专用直连线路向单一电力用户直接供应绿色电力,实现电力的物理溯源。 “物理直连” 是指可再生能源发电项目的发电端与用户通过专门铺设的输电线路直接相连&#xff…

Spring Boot中保存前端上传的图片

在Spring Boot中保存前端上传的图片可以通过以下步骤实现&#xff1a; 1. 添加依赖 确保在pom.xml中已包含Spring Web依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifact…

并查集(上)

1 并查集所包含的方法 int find(a); bool issameset(a,b); void union(a,b); 方法一&#xff1a;int find(a);这个表示是否可以找到这里集合的代表元素 方法二&#xff1a; bool issameset(a,b);这个是表示两个元素是否在一个集合 方法三&#xff1a;void union(a,b);这个表示…

「完整」AI文档库 | 5月20最新发布,221页,《北京大学AI+Agent与Agentic+AI的原理和应用洞察与未来展望》

昨天大师兄给大家介绍了复旦大学的一篇关于AI的讲座。 「完整」AI文档库 | 终于等到你&#xff0c;《复旦大学&#xff1a;大语言模型能力来源与边界》 今天大师兄给大家带来一篇《北京大学DeepSeek系列11&#xff1a;AIAgent与AgenticAI的原理和应用洞察与未来展望》。这篇A…

《棒球万事通》棒球特长生升学方向·棒球1号位

棒球升学双轨制发展路径解析/Bilingual Baseball Career Pathway Analysis 1. 美国大学体育奖学金体系/US Collegiate Scholarship System 核心数据: NCAA D1院校平均每年提供11.7个棒球奖学金 顶级投手球速标准: 高中毕业前需达87-95mph(约140-153km/h) 学术基准: NCAA要…

使用nhdeep档案管理系统单机版,创建归档文件目录打印文件

打开nhdeep档案管理系统单机版&#xff0c;查看已经导入或添加到文书档案库管理的条目数据。 文书档案库件目录信息&#xff1a; 文书档案库盒信息&#xff1a; 选择多条盒记录&#xff0c;点击盒内目录打印按钮&#xff0c;打开预览窗口 可以选择归档文件的打印模版&#xff…

2022年第十三届蓝桥杯青少c++省赛真题——分解整数

2022年第十三届蓝桥杯青少c省赛真题——分解整数 题目点下方&#xff0c;支持在编程&#xff0c;在线测评~ 分解整数_C_少儿编程题库学习中心-嗨信奥 题库收集了历届各白名单赛事真题和权威机构考级真题&#xff0c;覆盖初赛—省赛—国赛&#xff0c;支持在线考试&#xff0c;…

CUDA与OpenGL混合编程图形渲染

CUDA与OpenGL混合编程图形渲染 CUDA与OpenGL混合编程图形渲染 CUDA与OpenGL混合编程图形渲染前言一、 通过OpenGL映射GPU内存二、CUDA使用的两种OpenGL内存对象1、像素缓冲对象&#xff08;PBO&#xff09;&#xff1a;OpenGL中用于存储像素的一段内存。2D图像是由多个像素和颜…

俄乌第二轮谈判都谈了哪些内容 换俘与停火提议成焦点

6月2日,俄罗斯和乌克兰两国代表团在土耳其伊斯坦布尔就和平解决俄乌冲突举行第二轮直接谈判。会谈结束后,俄方代表团团长、俄总统助理梅金斯基表示,俄方对第二轮谈判的成果感到满意。梅金斯基透露,俄方向乌方提交了关于乌克兰问题的和平备忘录,其中包含实现真正停火的建议…

乒超联赛门票于6月3日开售 雄安新区首迎顶尖赛事

6月9日至11日,2025赛季中国乒乓球俱乐部超级联赛常规赛第一阶段比赛将在河北雄安新区雄安体育中心体育馆举行。赛事门票将于6月3日18:00在秀动票务平台开售,票价从288元至788元不等。2025赛季乒超联赛包括男子和女子团体赛,分为三个阶段的常规赛和总决赛,时间跨度从6月到12…

女子拖欠停车费近3000元被起诉:怎么证明是我的车在停放

多次把车停在路边收费停车位上却不交费,两年半拖欠了近3000元停车费,常德女子李倩(化名)被起诉到法院。对此李倩称,收费公司使用的感应、计费系统常出故障,无法证明收费时段是她的车在停放,请求法院驳回起诉。6月2日,记者从中国裁判文书网获悉,常德中院判决李倩须支付…