All communications between the driver and the device are performed using transactions. The driver always initiates the transaction, a device cannot send unsolicited data to the host. The USB core performs all management of a transaction on behalf of the driver and notifies it once it has finished (see Chapter 6, Waiting).
The transaction moves data as an uninterpreted set of bytes. The direction of the transfer is determined by the pipe being used (see Chapter 4, Endpoints and Pipes).
Control transactions are a special case, they are formatted data and can only be used on the bi-directional control pipe. They are also the only transaction that requires two URB.