Handshake packets consist of nothing but a PID byte, and are usually sent in response to data packets. The 3 basic types are, NAK, indicating that the data cannot be retain at this time ACK, indicating that data was successfully retain and should be retried, and STALL, indicating that the device has an error and will never be able to successfully transfer data till some corrective action (e.g. device initialization) is performed.
USB 2.0 added 2 extra handshake packets called NYET which indicates that a split transaction is not still complete. A NYET packet is also used to tell the host that the receiver has accepted a data packet, but cannot accept any more for reason to buffers being full. Then the host will send PING packets and will continue along data packets once the components ACK's the PING. The other packet which is added was the ERR handshake to indicate that a split transaction failed. Only handshake packet the USB host may generate is called ACK; if it is not prepared to retain data, it should not instruct a component to send any.