DACK握手包的详细使用说明可详见:USB2.0 ACK握手包 - USB中文网
这里详细的介绍了ACK握手包的使用说明。这里我们对此从数据链路层和USB总线分析仪抓包的来分析。
USB中文网公众号:站长漫谈
ACK的数据包格式
ACK可能是USB总线分仪里最简单的包了。其主要包括两部分组成,分别为序列号和ACK的PID(包ID).
注意上图,这里显示的是B0~B7,也就是说,USB在数据发送时是先发送低位,再是高位,所以这叫做LSB->MSB
ACK数据包PID
PID占用一个字节8位,但实际上只有4位有效,别位4位是低4位的补码。
在USB规范中,定义ACK的PID为0010,所以高4位就是1101。
所以从MSB->LSB上来看,显示的值就是11010010,所以十六进制就是D2
从LSB->MSB上来看,其十六进制就是01001011,所以十六进制就是4B
所以双LSB->MSB是从抓的波形图来看,就是LSB->MSB,在力科的USB总线分仪上我们设置数据为LSB->MSB时,其显示是这样的:
不过我们从程序的角度来讲,习惯于MSB->LSB,所以大端显示的就是:
当然,这也是主流USB总线分仪大家显示的方式:
南京沁恒出的USB2.0Mointor总线分仪USBMonitor是这样显示的,如对于239279 ACK包。
USB PACKET Viewer是这样显示的:
USB总线分仪软件说明
以上软件分别使用的是:
- 南京沁恒的WchUSB2.0Monitor抓包软件- USB中文网专属福利向沁恒淘宝客服报购买暗号:USB中文网9折优惠,可享受沁恒USB总线分析仪9折优惠。
- USB PACKET Viewer USB总线分仪抓包软件
- 力科总线分仪抓包软件UsbSuite