USB Packet Types

USB has four different packet types. Token packets indicate the type of transaction to follow, data packets contain the payload, handshake packets are used for acknowledging data or reporting errors and start of frame packets indicate the start of a new frame.

  • Token Packets:There are three types of token packets,
    • In - Informs the USB device that the host wishes to read information.
    • Out - Informs the USB device that the host wishes to send information.
    • Setup - Used to begin control transfers.

    Token Packets must conform to the following format,

Sync PID ADDR ENDP CRC5 EOP
  • Data Packets:There are two types of data packets each capable of transmitting up to 1024 bytes of data.
    • Data0
    • Data1

    High Speed mode defines another two data PIDs, DATA2 and MDATA.

    Data packets have the following format,

Sync PID Data CRC16 EOP
    • Maximum data payload size for low-speed devices is 8 bytes.
    • Maximum data payload size for full-speed devices is 1023 bytes.
    • Maximum data payload size for high-speed devices is 1024 bytes.
    • Data must be sent in multiples of bytes.
  • Handshake Packets:There are three type of handshake packets which consist simply of the PID
    • ACK - Acknowledgment that the packet has been successfully received.
    • NAK - Reports that the device temporary cannot send or received data. Also used during interrupt transactions to inform the host there is no data to send.
    • STALL - The device finds its in a state that it requires intervention from the host.

    Handshake Packets have the following format,

Sync PID EOP
  • Start of Frame Packets:The SOF packet consisting of an 11-bit frame number is sent by the host every 1ms ± 500ns on a full speed bus or every 125 µs ± 0.0625 µs on a high speed bus.
Sync PID Frame Number CRC5 EOP
时间: 2024-10-26 20:41:00

USB Packet Types的相关文章

USB 2.0 Spec 微缩版

4.1.1 Bus Topology 最大层数为7,第7层只能是Function不能是Hub,非根Hub最大5级. 5.3 USB Communication Flow Host Controller Driver(HCD):对上层的USB System Software屏蔽USB Packet的接收和发送细节.例如一张PCIe转USB的卡,Host Controller负责将数据从PCIe总线转到USB总线上发送出去,或者反之.这一层只负责处理总线数据收发,不处理协议细节. USB Drive

深入USB流量数据包的抓取与分析

0x01 问题提出 在一次演练中,我们通过wireshark抓取了一个如下的数据包,我们如何对其进行分析? 0x02 问题分析 流量包是如何捕获的? 首先我们从上面的数据包分析可以知道,这是个USB的流量包,我们可以先尝试分析一下USB的数据包是如何捕获的. 在开始前,我们先介绍一些USB的基础知识.USB有不同的规格,以下是使用USB的三种方式: l USB UART l USB HID l USB Memory UART或者Universal Asynchronous Receiver/Tr

pcap文件的文件头的link type

http://www.tcpdump.org/linktypes.html Link-layer header type values LINKTYPE_ name LINKTYPE_ value Corresponding DLT_ name Description LINKTYPE_NULL 0 DLT_NULL BSD loopback encapsulation; the link layer header is a 4-byte field, in host byte order, c

Linux Bluetooth内核分析之HCI部分

关于HCI规范相关内容,请看<Bluetooth HCI介绍> 首先我们要了解,在Linux上实现的是HCI的Host部分 1. 相关数据结构 1.1 hci_dev 在Linux中hci_dev用来表示一个HCI Host(对应于一个Control) 成员 作用 char name[8] 蓝牙名称 __u8 bus HCI总线类型,有HCI_USB,HCI_PCCARD,HCI_UART,HCI_PCI等 __u8 dev_type HCI Controller类型,有HCI_BREDR,H

在 NS 2-35 中安装 UMTS 和 WiMax 补丁

我的操作系统是 Linux Mint Debian Mate Edition,201403版,内核版本 3.11-2-amd64,gcc version 4.8.2. 一.安装 NS-2.35 截至2014年10月,这是NS2最新的版本了. 首先安装几个包:“ sudo apt-get install build-essential libxmu-dev ”,依赖的几个包也要装上. 然后下载 ns-allinone-2.35,解压,复制 ns-allinone-2.35 文件夹到主目录下,我改名

c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据

在networkcomms通信系统中,服务器端收到某连接上的数据后,数据会暂时存放在"数据包创建器"(PacketBuilder)中,PacketBuilder类似一个流动的容器,收到的数据被服务器处理完成后,相应在二进制数据,会从存储他的PacketBuilder中删除. 我们知道在networkcomms的消息体系中,传送的数据的第一个字节用来存储数据包包头长度,解析出数据包包头后,包头中包含数据包长度.所以在读入进入PacketBuilder中的数据,会根据第一个字节中存储的数据

c#网络通信框架networkcomms内核解析之八 数据包的核心处理器

我们先回顾一个 c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据 中,主程序把PacketBuilder 中的数据交给核心处理器处理的过程 //创建优先级队列项目 PriorityQueueItem item = new PriorityQueueItem(priority, this, topPacketHeader, packetBuilder.ReadDataSection(packetHeaderSize, topPacketHeader.PayloadPac

struct sk_buff 结构

struct sk_buff可能是linux网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息,并包含很多成员变量供网络代码中的各子系统使用.    这个结构被网络的不同层(MAC或者其他二层链路协议,三层的IP,四层的TCP或UDP等)使用,并且其中的成员变量在结构从一层向另一层传递时改变. L4向L3传递前会添加一个L4的头部,同样,L3向L2传递前,会添加一个L3的头部.添加头部比在不同层之间拷贝数据的效率更高.由于在缓冲区的头部 添加数据意味着要修改指向缓冲区的指针,这是个复杂

RFC 3550 RTP/RTCP学习笔记

一.RTP 1. RTP包固定头部 V:RTP协议的版本号,占2位,当前协议版本号为2. P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分. X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头. CC:CSRC计数器,占4位,指示CSRC 标识符的个数. M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束:对于音频,标记会话的开始. 同步信源(SSRC)标识符:占32位,用于标识同步信源.该标识符是随机选