USB2.0令牌、事务及传输抓包分析
+ -

USB2.0 握手包

2021-11-29 2930 0

握手包跟随在令牌包或者数据包之后,组成一个完整的事务,是对一次事务完成的确认。USB主机或者USB设备会根据事务的完成状态返回相应的握手包。

握手包由8位的PID构成,用于数据传输的末位报告本次数据传输的状态。握手包之后使是整个事务处理的结束信号EOP.
握手包

握手包根据PID的不同,可分为:

PID 含义 说明
0010 握手ACK 数据正确接收
1010 握手NAK 数据未正确接收
1110 握手STALL 使用的端点被挂起
0110 握手NYET 接收方没有响应
1100 特殊用途ERR SPLIT事务中表示出现错误

USB规范定义了以下几个响应:

1 . ACK 握手包

当 USB 数据传输的接收方正确接收到数据包时,接收方将返回 ACK 握手包。 ACK 握手包表征了一次正确的数据传输,之后才可以进行下一次事务处理。

2 . NAK 握手包

NAK 握手包一般由 USB 功能设备发出。对于IN数据传输,表示 USB 设备没有计划向 USB 主机发送数据;对于 OUT 数据传输,表示 USB 设备无法接收 USB 主机发送的数据。

3 . STALL 握手包

STALL 握手包一般由 USB 功能设备发送,表示该 USB 功能设备不支持这个请求,或者无法发送和接收数据。 STALL 握手包分为以下两种情况。

  • 协议 STA LL 握手包:在控制传输中使用。协议 STALL 握手包表明了该 USB 功能设备不支持这个请求协议。
  • 功能 STALL 握手包:表明该 USB 功能设备的相应端点已经停止,而无法完成发送数据或者接收数据的操作。
4 . NYET 握手包

SPLIT 令牌包事务处理中,如果 USB 集线器无法正常处理 SPLIT 请求,则 USB 集线器向 USB 主机返回 NYET 握手包。 NYET 握手包一般只发生在高速数据传输过程中。
在USB2.0高速设备OUT事务中使用,它表示设备本次数据成功接收,但是没有足够的空间来接收下一次数据。主机在下一次输出数据时,将先使用PING命令牌包来探测设备是否有足够的空间接收数据,一面不必要的带宽浪费。

5 . ERR 握手包

ERR 握手包用于表示总线数据传输发生错误,其一般发生在高速数据传输过程中。
其功能是由USB集线器HUB向主机报告挂载其上的低速或全速设备错误。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB2.0 NAK握手包
NAK 握手包一般由 USB 设备发出。对于IN数据传输,表示 USB 设备没有计划向 USB 主机发送数据;对于 OUT 数据传输,表示 USB 设备无法接收 USB 主机发送的数据。NAK包的PID的低4位为1010,故高4位的补码为0101,所以其包PID值为0x5a.PID含......
USB2.0 ACK握手包
ACK握手包用于当USB数据传输的接收方正确接收到数据包时,接收方将返回 ACK 握手包。 ACK 握手包表征了一次正确的数据传输,之后才可以进行下一次事务处理。ACK广泛用于通读协议中,一般用于确认从接收方接收到数据正确无误,特别是在TCP/IP协议栈中,ACK的使用更加让人理解深入。我们嘴里......
USB2.0 握手包
握手包跟随在令牌包或者数据包之后,组成一个完整的事务,是对一次事务完成的确认。USB主机或者USB设备会根据事务的完成状态返回相应的握手包握手包由8位的PID构成,用于数据传输的末位报告本次数据传输的状态。握手包之后使是整个事务处理的结束信号EOP.握手包根据PID的不同,可分为:PI......
USB2.0 STALL握手包
STALL 握手包一般由 USB 功能设备发送,表示该 USB 功能设备不支持这个请求,或者无法发送和接收数据。 STALL 握手包分为以下两种情况。协议 STA LL 握手包:在控制传输中使用。协议 STALL 握手包表明了该 USB 功能设备不支持这个请求协议(如设备限定描述符的获取)。功能......
USB2.0 NYET握手包
在USB2.0高速设备OUT事务中使用,它表示设备本次数据成功接收,但是没有足够的空间来接收下一次数据。主机在下一次输出数据时,将先使用PING命令牌包来探测设备是否有足够的空间接收数据,一面不必要的带宽浪费。如果低速或者全速设备和高速HUB之间的事务一直没有完成,高速HUB也会向主机返回一个NY......
USB2.0 ERR握手包
ERR握手包仅用于高速模式下,其功能是由USB集线器HUB向主机报告挂载其上的低速或全速设备错误。PID含义说明1100特殊用途ERRSPLIT事务中表示出现错误......
USB2.0 IN/OUT事务ACK错误或丢失的数据翻转(DATA TOGGLE)
前面一节我们讨论了当ACK成功发送并被接收时的数据包PID翻转,但在实际的数据传输过程中,也会出现ACK丢失或者错误的情况,这节我们来讨论这种情况。同样的,对于IN事务和OUT事务,我们分别进行讨论。IN事务ACK错误或丢失的数据翻转(DATA TOGGLE)IN事务ACK错误或丢失的数据翻转(......
USB2.0握手包ACK总线分析仪抓包实例详解
ACK握手包的详细使用说明可详见:https://www.usbzh.com/article/detail-452.html这里详细的介绍了ACK握手包的使用说明。这里我们对此从数据链路层和USB总线分析仪抓包的来分析。ACK的数据包格式ACK可能是USB总线分仪里最简单的包了。其主要包括两部分组......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!