-------------------------
Client Application
-------------------------
USB System software (USB Driver)
--------------------------
Host Controller Software
--------------------------
Hardware
-------------------------
As the figure shows, USB has a layered structure on the host
side. At the bottom of the stack is the actual hardware which throws signals
on the wire and most importantly consists of the host controller. The host-controller is the hardware component inside the host which is responsible for implementing all
host-aspects of USB. It is protocol-aware with a knowledge of the types of transfers (control/bulk etc.) for of its transactions.