A USB system is composed of three areas:
- USB interconnect (cables, ports)
- USB devices (keyboard, storage, controller)
- USB host (Laptop, computer)

# Hosts
There is only one host in any USB system. The USB interface to the host computer is referred to as the Host Controller. The Host Controller may be implemented in a combination of hardware, firmware, or software. A root hub is integrated within the host system to provide one or more attachment points.
# Devices
USB devices are one of the following:
- A hub, providing additional attachment points to the bus
- Functions that provide capabilities to the system (speakers, keyboard)
# Interconnects

# Protocol
A Universal Serial bus is strictly a *polled* bus, meaning the host controller initiates every data transfer.

Most bus transactions involve the transmission of up to three packets. 
1. The token packet
> Each transaction begins when the host, on a scheduled basis, sends a USB packet describing the type and direction of a transaction, the USB device address, and endpoint number.
2. The data packet
> Depending on the direction of data transfer (specified in the token packet), this packet will move from the host to the device, or vice versa. If the source of the transaction has no data to send, it will send that instead.
3. The handshake packet
> The destination, in general, responds to a handshake packet indicating whether the transfer was successful. 

The USB data transfer model between a source or destination on the host and an endpoint on a device is referred to as a *pipe*. There are two types of pipes: stream, and message. Stream data has no USB defined structure, while message data is structured. Each pipe is associated with a bandwidth, transfer service, and endpoint characteristics like directionality and buffer size.

One message pipe, the Default Control Pipe, always exists when a USB device is configured in order to provide access to the device's configuration, status, and control info.

For more, see the USB 2.0 specification section 4.4.
