什么是“零长度数据包”?

时间:2018-02-25 15:45:42

标签: usb libusb-1.0

USB标准提到在某些情况下写“零长度”数据包。

任何人都可以解释USB术语中“零长度”数据包的含义吗?

什么是“短包”? (似乎一起提到“短包”和“零长度包”)

1 个答案:

答案 0 :(得分:2)

这两个术语都用于交易完成机制。 数据包的最大大小可以从存储在端点描述符中的 bMaxPacketSize 派生。当数据包小于该数据包时,其称为短包。 同样,当您可以发送长度为零的数据包时。

现在的问题是“为什么”。让我们讨论一下。

短包的原因 -

  

1 - 根据USB规范,当主机或设备接收数据时   数据包长度小于最大数据包大小的数据包应该   考虑传输已完成,不再需要数据包   接收。

     

2 - 批量传输(大容量存储设备)始终如此。   您并不总是询问MaxPacketSize的长度倍数的数据。所以   最后一个数据包总是小于最大数据包大小。考虑你   想从最大数据包大小为的批量端点获取1025字节的数据   1024字节。

     

第一数据包= 1024字节秒数据包= 1字节(短   包)。

     

这样主机就会知道数据传输已经完成。

零长度数据包的原因 -

  

1 - 与短数据包一样,零长度数据包也用于事务   完成。考虑您要发送2048字节的批量数据。

     

第一个数据包= 1024个字节第二个数据包= 1024个字节。

     

现在的问题是,两者都等于最大数据包大小。该设备将   不明白转移是否完整。然后你发一个零   长度包。

     

第三个数据包= 0个字节

     

这将使传输完成,然后设备可以启动   处理数据。

     

2 - 零长度数据包也用于状态期间的控制传输   通知成功完成的阶段。