объяснения трассировок usb wireshark

Я пытаюсь перепроектировать устройство usb (HID) и не могу понять, как то, что я вижу на wireshark (usbmon + wireshark в linux или Windows), связано с протоколом usb?. Я посмотрел на протокол usb с www.usb.org .

Что показывает wireshark?

1) По одной строке на пакет? (токен, данные, рукопожатие)

2) Одна строка на транзакцию? (токен + [данные] + рукопожатие) (мое предположение)

3) Одна строка на передачу управления?

В направление транзакции также очень странное (в/из полей). По крайней мере, это не соответствует моим ожиданиям:-)... И часть данных перечисления, скрытый отчет и т. Д.... Иногда, кажется, отображается с данными настройки (8 байт), а иногда нет... Я действительно не знаю, что такое URB... насколько я мог видеть, в протоколе usb об этом нет упоминания... Мне кажется, что wireshark/usbmon отслеживают на более высоком уровне стека и пытаются определить, что будет на проводе из это...

Пример того, что я вижу, приведен ниже, что мы видим здесь?.

A) Я даже не смог найти bmtype=0x20 (настройки, номер кадра=599) в спецификациях.

B) Поскольку у меня есть скрытое устройство, я предположил, что это может быть конфигурация отчета/функции (перечисление передается на этом этапе). Так что я мог бы согласиться с направлением (хост->устройство). но где же эти данные? Или здесь нет фазы данных? Что же тогда такое кадр 600?

C) что такое кадр 600? данные?

Г) что такое кадр 601? подтверждение статуса?... но тогда данные и ACK имеют один и тот же источник?

No.     Time        Source                Destination           Protocol Length Info
    599 67.996889   host                  2.0                   USB      36     URB_CONTROL out

Frame 599: 36 bytes on wire (288 bits), 36 bytes captured (288 bits)
USB URB
    USBPcap pseudoheader length: 28
    IRP ID: 0xfffffa800a1e2610
    IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
    URB Function: URB_FUNCTION_CLASS_DEVICE (0x001a)
    IRP information: 0x00, Direction: FDO -> PDO
    URB bus id: 1
    Device address: 2
    Endpoint: 0x00, Direction: OUT
    URB transfer type: URB_CONTROL (0x02)
    Packet Data Length: 8
    Control transfer stage: Setup (0)
    [Response in: 601]
    [bInterfaceClass: Unknown (0xffff)]
URB setup
    bmRequestType: 0x20
        0... .... = Direction: Host-to-device
        .01. .... = Type: Class (0x01)
        ...0 0000 = Recipient: Device (0x00)
    bRequest: 0
    wValue: 0x0000
    wIndex: 0
    wLength: 16

0000  1c 00 10 26 1e 0a 80 fa ff ff 00 00 00 00 1a 00   ...&............
0010  00 01 00 02 00 00 02 08 00 00 00 00 20 00 00 00   ............ ...
0020  00 00 10 00                                       ....

No.     Time        Source                Destination           Protocol Length Info
    600 67.997889   2.0                   host                  USB      44     URB_CONTROL out

Frame 600: 44 bytes on wire (352 bits), 44 bytes captured (352 bits)
USB URB
    USBPcap pseudoheader length: 28
    IRP ID: 0xfffffa800a1e2610
    IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
    URB Function: URB_FUNCTION_CONTROL_TRANSFER (0x0008)
    IRP information: 0x01, Direction: PDO -> FDO
    URB bus id: 1
    Device address: 2
    Endpoint: 0x00, Direction: OUT
    URB transfer type: URB_CONTROL (0x02)
    Packet Data Length: 16
    Control transfer stage: Data (1)
    [Request in: 599]
    [Time from request: 0.001000000 seconds]
    [bInterfaceClass: Unknown (0xffff)]
CONTROL response data

0000  1c 00 10 26 1e 0a 80 fa ff ff 00 00 00 00 08 00   ...&............
0010  01 01 00 02 00 00 02 10 00 00 00 01 05 04 0d 56   ...............V
0020  fb 82 c0 1d 10 18 cc 02 00 00 00 01               ............

No.     Time        Source                Destination           Protocol Length Info
    601 67.997889   2.0                   host                  USB      28     GET STATUS Status

Frame 601: 28 bytes on wire (224 bits), 28 bytes captured (224 bits)
USB URB
    USBPcap pseudoheader length: 28
    IRP ID: 0xfffffa800a1e2610
    IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
    URB Function: URB_FUNCTION_CONTROL_TRANSFER (0x0008)
    IRP information: 0x01, Direction: PDO -> FDO
    URB bus id: 1
    Device address: 2
    Endpoint: 0x00, Direction: OUT
    URB transfer type: URB_CONTROL (0x02)
    Packet Data Length: 0
    Control transfer stage: Status (2)
    [Request in: 599]
    [Time from request: 0.001000000 seconds]

0000  1c 00 10 26 1e 0a 80 fa ff ff 00 00 00 00 08 00   ...&............
0010  01 01 00 02 00 00 02 00 00 00 00 02               ............

Очевидно, я что-то упускаю. Общее объяснение того, как отображение wireshark связано с протоколом и (на его основе), значение вышеупомянутой трассировки приветствуется!

Я первоначально опубликовал это в Stack Overflow, но мне сказали, что это не был прямой вопрос программирования. Надеюсь, здесь он подойдет лучше.